When added to a virtual machine under VirtualBox I get this on the display: VBoxManage convertfromraw 1.raw 1.vdi -format VDI Place the bootloader boot.bin at beginning of file 1.raw without truncating the rest of file: dd if=boot.bin of=1.raw conv=notruncĬreate a VDI image called 1.vdi from 1.raw: rm -f 1.vdi I then use this command to create the bootloader file boot.bin: nasm -f bin boot.asm -o boot.binĬreate a 2MiB disk image file 1.raw: dd if=/dev/zero of=1.raw bs=1024 count=2048 Fill out to 510 bytes and add boot signatureĭw 0xAA55 add boot signature at the end of bootloader The example below creates a simple bootloader creates a 2MiB raw image places the bootloader in the raw image and converts the raw image to a VDI. But at a minimum you'll need to place 0xAA55 in the last 2 bytes of the master boot record. You don't provide a minimal complete verifiable example showing a bootloader and how you get it into a VDI. Is there any way to solve this? Why is my virtual disk still not bootable? Edit So, I suppose it now means that the disk is bootable (because at the end of first sector is still signature 55 AA). Then, I basically filled from that address to the end of VDI file with pattern 55 AA. So, I found that data starts at some address (in my case it is 0x00200000 from the start of the VDI file). So, the start of VDI represents a header and the the rest is actual data stored on virtual drive. I was researching how VDI works and I found that it is usually dinamically allocated and that only the beginning of data is stored. So, I decided to put the binary machine code of my OS to virtual hard drive ( VDI file) and then set it to the top of boot order and load it instead of loading from virtual optical drive ISO. I don't want to convert my binary file to ISO every time. So, that is a lot of work I want to avoid. I found that I must compile C code to binary format, extract text section and save it as a file, then convert it to ISO, then mount it to virtual optical dive of diskete and then load my OS in VirtualBox. I am creating an operating system in assembler and C. I read all of them, but none of them answers my problem. There are a lot of question on stackoverflow with the similar title.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |