Почему-то всегда думал что Primary Volume Descriptor находится в 16-ом секторе. Недавно посмотрел загрузчик FreeBSD(http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/boot/i386/cdboot/cdb...) :
...
#
# Load Volume Descriptor
#
		mov $VOLDESC_LBA,%eax		# Set LBA of first VD
load_vd:	push %eax			# Save %eax
		mov $1,%dh			# One sector
		mov $MEM_VOLDESC,%ebx		# Destination
		call read			# Read it in
		cmpb $VD_PRIMARY,(%bx)		# Primary VD?
		je have_vd			# Yes
		pop %eax			# Prepare to
		inc %eax			#  try next
		cmpb $VD_END,(%bx)		# Last VD?
		jne load_vd			# No, read next
		mov $msg_novd,%si		# No VD
		jmp error			# Halt
have_vd:
...
Тут они перебирают все дескрипторы в поисках Primary. Ну и еще есть опция mkisofs(genisoimage) -boot-info-table. Она добавляет десколько полей в код bootloaderа, чтобы он мог их оттуда брать. И первым полем идет адрес Primary Volume Descriptor. Видимо он не постоянный.
Вопрос: в каком случае Primary Volume Descriptor находится в секторе, отличном от 16?
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Статьи Линукс, ассемблер и X11 (2023)
 - Форум RHEL Missing ISO 9660 (2014)
 - Форум Чем конвертнуть UDF в ISO 9660? (2015)
 - Форум ISO (2009)
 - Форум iso (2006)