Как можно запускать код сборки в экземпляре пустой виртуальной машины (виртуальный бокс, vmware)?
Я хочу попробовать написать простой загрузчик. Моя цель - работать в операционной системе хобби.
Как можно запускать код сборки в экземпляре пустой виртуальной машины (виртуальный бокс, vmware)?
Я хочу попробовать написать простой загрузчик. Моя цель - работать в операционной системе хобби.
Вы должны написать правильную главную загрузочную запись на виртуальном hdd. Для этого нужно узнать, как процесс загрузки точно работает и на каких адресах запускается код. Здесь недостаточно места для записи всех деталей, но есть много интернет-страниц, описывающих их. Вкратце, после первоначального загрузочного сообщения (самотестирование при включении) BIOS ищет устройства хранения до тех пор, пока не найдет один из последних двух байтов первого сектора, содержащий малознаковое слово AA55h (подпись загрузки MBR). Затем BIOS загружает загрузочный сектор с загрузочного устройства на адрес 0000h: 7C00h (обратите внимание, что все это выполняется в реальном режиме x86) и передает выполнение в загрузочный код. Для MBR существует ограничение на длину всего 512 байт, поэтому загрузка обычно пересылается на следующий этап, т.е. Малый код в MBR используется для загрузки другого загрузочного кода где-то с диска в память, а затем передает его там. Загрузка с виртуальной дискеты может быть несколько иной. В современных системах MBR обменивается с GPT. Как вы можете видеть, здесь есть много вещей, хотя это и не так сложно, как может показаться.
Написание загрузочного сектора в виртуальном поле такое же, как и запись на реальной машине. Вам необходимо создать загрузочный диск, который установит ваш загрузчик на ваш целевой диск. Поэтому вы должны выполнить следующие шаги:
1. Write a bootloader and put it in an imagefile. (http://wiki.osdev.org/Babystep1)
2. create a boot disc, which will put the image into the bootsecotr of your target harddisc (This can be a simple DOS disk or a linux environment, hwatever. (http://wiki.osdev.org/Bootable_CD)
3. boot from the loader in your environment.
Взглянув на ссылки, которые я опубликовал в своем первом комментарии выше, должен подробно объяснить все это.