| |
en:docs:boot:bootsector [2014/05/10 17:31] – external edit 127.0.0.1 | en:docs:boot:bootsector [2014/06/28 07:15] (current) – valerius2k |
---|
==== Описание бутсектора для FreeLdr ==== | ===== FreeLDR bootsector description ===== |
| |
* Данный бутсектор предназначен для использования в загрузчике FreeLdr системы osFree (OS/3) для загрузки Micro File System Driver (MicroFSD, aka blackbox). BlackBox -- это обычный DOS executable в COM-формате, то есть, его размер теоретически ограничен 64 Кбайтами. Поэтому данный загрузчик также рассчитан на загрузку файлов размером до 64 Кбайт. | * Данный бутсектор предназначен для использования в загрузчике FreeLdr системы osFree (OS/3) для загрузки Micro File System Driver (MicroFSD, aka blackbox). BlackBox -- это обычный DOS executable в COM-формате, то есть, его размер теоретически ограничен 64 Кбайтами. Поэтому данный загрузчик также рассчитан на загрузку файлов размером до 64 Кбайт. |
* Она более подходит в том случае, когда специальной области под бутблок не предусмотрено, например, FAT12, FAT16 или "чужие" файловые системы, такие как ext2fs (в ext2fs перед суперблоком для загрузчика предусмотрено лишь два сектора, что очень мало для MicroFSD). | * Она более подходит в том случае, когда специальной области под бутблок не предусмотрено, например, FAT12, FAT16 или "чужие" файловые системы, такие как ext2fs (в ext2fs перед суперблоком для загрузчика предусмотрено лишь два сектора, что очень мало для MicroFSD). |
| |
=== Поля бутсектора (от конца к началу) === | ==== Поля бутсектора (от конца к началу) ==== |
| |
- Сигнатура бутсектора: word, находится по смещению 0x1FE от начала бутсектора и равна 0x55AA. | - Сигнатура бутсектора: word, находится по смещению 0x1FE от начала бутсектора и равна 0x55AA. |
- ForceLBA: byte, смещение 0x1FD, если данный байт равен 1, то поддержка доступа через LBA не проверяется, а включается принудительно. | - ForceLBA: byte, смещение 0x1FD, если данный байт равен 1, то поддержка доступа через LBA не проверяется, а включается принудительно. |
| |
=== Параметры первой версии (-dOLDCODE) === | ==== Параметры первой версии (-dOLDCODE) ==== |
| |
- muFSDLen, byte (смещение 0x1FC). Задает длину загружаемого файла в секторах. | - muFSDLen, byte (смещение 0x1FC). Задает длину загружаемого файла в секторах. |
- muFSDLoadSeg, word (смещение 0x1F4). Задает сегментный адрес, по которому производится загрузка. | - muFSDLoadSeg, word (смещение 0x1F4). Задает сегментный адрес, по которому производится загрузка. |
| |
=== Параметры второй версии === | ==== Параметры второй версии ==== |
| |
* В отличие от первой версии, вторая версия не содержит адрес и длину загружаемого файла непосредственно в бутсекторе. Взамен этого, бутсектор содержит только адрес дополнительного сектора с картой размещения загружаемого файла (allocation map sector). | * В отличие от первой версии, вторая версия не содержит адрес и длину загружаемого файла непосредственно в бутсекторе. Взамен этого, бутсектор содержит только адрес дополнительного сектора с картой размещения загружаемого файла (allocation map sector). |
* Загружаемый файл загружается по кускам в один сектор согласно allocation map и грузится непосредственно после allocation map. То есть, если мы хотим, например, загрузить файл по сегментному адресу 0x5660, то нужно задать mapLoadSeg == muFSDLoadSeg - 0x20 == 0x5640. | * Загружаемый файл загружается по кускам в один сектор согласно allocation map и грузится непосредственно после allocation map. То есть, если мы хотим, например, загрузить файл по сегментному адресу 0x5660, то нужно задать mapLoadSeg == muFSDLoadSeg - 0x20 == 0x5640. |
| |
=== Замечания === | ==== Замечания ==== |
| |
- Данный бутсектор использует LBA для загрузки секторов с диска, если расширения int 13h поддерживаются BIOS'ом. В противном случае он использует функцию для чтения секторов через CHS. | - Данный бутсектор использует LBA для загрузки секторов с диска, если расширения int 13h поддерживаются BIOS'ом. В противном случае он использует функцию для чтения секторов через CHS. |