Fat32-Bootsector
Простой и очень компактный Bootsector, который позволяет загружать ваш загрузчик или ядро из файла.
Стройте с помощью прикрепленного сценария.
Примечание: не читайте это, прочитайте исходный код. Это прокомментируется, так что вся информация есть
Что на самом деле делает этот сапог?
Вот оно, шаг за шагом:
- Проверьте, поддерживает ли BIOS расширенная работа диска
- Ищу первое активное перегородка FAT32
- Ищу свой файл в этом разделе (в корневом каталоге)
- Загружает его в память
- Выполняет это
Состояние памяти после моего сапога
Ваш код:
Ваш код загружается по телефону 0x1000: 0x0000 (сегмент: смещение) или 0x10000 (линейный).
Регистры
Большинство регистров не «нулевые», а мусор назначен им
Только те, что имеют допустимые значения:
- CS: IP - 0x1000: 0x0000 (назначен загруженному файлу)
- DS - 0x1000 (также назначен загруженному файлу)
- SS: sp - 0x0000: 0xffff (стек в первом сегменте)
- DL - номер диска (для прерываний BIOS)
Полезные данные, оставленные в памяти
После прыжка в загруженный файл все еще остается полезные данные в памяти:
(Все смещения указаны в исходном коде)
- 0x7c00 - текущий диск (номер устройства), толстый адрес, адрес первого сектора данных и аналогичная информация.
- 0x7e00 - сектор BPB этого раздела
Ограничения
- Это все в реальном режиме, поэтому максимальный размер файла не должен быть больше, чем несколько сотен килобитов
- Файл должен быть в корневом каталоге выбранного раздела
- Имя файла - Bootsector Ищет файл с 8.3 именем файла
Установить методы
Чтобы установить использование:
- В совместимых системах Ubuntu используйте сценарий install.sh
- В Windows используйте fat32-bootsector.exe
Обратите внимание, что версия Windows не использует буквы для разделов, а Phisycal разделы (не логичные), поэтому: может быть труднее соответствовать буквам, но с другой стороны, она поддерживает многофункциональные USB-диски
Ошибки?
Когда возникает ошибка Bootsector рисует код ошибки на экране.
Вот коды и объяснения ошибок:
0 - расширенные функции BIOS не доступны
1 - загрузочный раздел не найден
2 - Bootable Partition не Fat32
3 - файл не найден
4 - Невозможно загрузить секторы (ошибка прерывания BIOS)