LINUX.ORG.RU

ISO 9660


0

0

Почему-то всегда думал что 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?

anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.