Какие знания требуются для программирования простого безопасного рабочего загрузочного сектора? - PullRequest
2 голосов
/ 04 сентября 2011

Я знаю, что знание сборки - это самое первое (что у меня есть), и я также знаю, что код загрузочного сектора указывает процессору загружать / выполнять программу (или ОС), но я не КАК это. Я видел дизассемблированный код загрузочного сектора, но я не знаю, как написать этот код. Если я запишу некорректный код загрузочного сектора на флэш-накопитель USB, он никогда не будет работать снова.

Я всегда могу получить лакомые кусочки программирования загрузочных секторов из Интернета, но я ищу организованное учебное пособие или что-то подобное, где они учат программировать загрузочный сектор и другие загрузочные программы от начала до конца. Пожалуйста, укажите мне правильное направление ...

1 Ответ

0 голосов
/ 20 мая 2013

На самом деле есть два MBR. Первый - главная загрузочная запись (MBR), а второй - объемная загрузочная запись (VBR). Оба участвуют в начальной загрузке операционной системы. Таким образом, структура MBR отличается от VBR - MBR в основном начинается с вашего кода сборки и заканчивается информацией таблицы патрирования, VBR начинается с перехода к вашему коду сборки, который помещается после некоторой информации о томе. При запуске системы она считывает MBR в память по физическому адресу 0x7c00 и переходит на этот адрес. Предполагается, что ответственность MBR состоит в том, чтобы прочитать таблицу разделов (загруженную вместе с MBR как ее часть) и найти фактический том (диск, такой как C, D, E, ... в терминах Windows), где операционная система должна быть. После того, как MBR обнаружил том ОС, он снова загружает VBR по адресу 0x7c00 и затем переходит на указанный адрес. Теперь VBR считывает информацию о томе (загружается вместе с ней как часть) и решает, где найти код начальной загрузки операционной системы. После принятия решения VBR загружает код начальной загрузки ОС и переходит на его начальный адрес.

Имея эту информацию, вы можете видеть необходимые знания загрузчика записи. По крайней мере - вы должны знать, какую загрузочную запись вы пишете (MBR или VBR). Затем вы можете прочитать о его структурах данных и написать код, способный читать их и загружать следующий фрагмент кода начальной загрузки.

...