Ответ 1
Вы должны написать правильную главную загрузочную запись на виртуальном hdd. Для этого нужно узнать, как процесс загрузки точно работает и на каких адресах запускается код. Здесь недостаточно места для записи всех деталей, но есть много интернет-страниц, описывающих их. Вкратце, после первоначального загрузочного сообщения (самотестирование при включении) BIOS ищет устройства хранения до тех пор, пока не найдет один из последних двух байтов первого сектора, содержащий малознаковое слово AA55h (подпись загрузки MBR). Затем BIOS загружает загрузочный сектор с загрузочного устройства на адрес 0000h: 7C00h (обратите внимание, что все это выполняется в реальном режиме x86) и передает выполнение в загрузочный код. Для MBR существует ограничение на длину всего 512 байт, поэтому загрузка обычно пересылается на следующий этап, т.е. Малый код в MBR используется для загрузки другого загрузочного кода где-то с диска в память, а затем передает его там. Загрузка с виртуальной дискеты может быть несколько иной. В современных системах MBR обменивается с GPT. Как вы можете видеть, здесь есть много вещей, хотя это и не так сложно, как может показаться.