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