0

隨着大量的「如何打造自己的操作系統」的教程,
我應該通過定製引導扇區虛擬CD

#include <sys/types.h> /* unistd.h needs this */ 
#include <unistd.h> /* contains read/write */ 
#include <fcntl.h> 

int main() 
{ 
    char boot_buf[512]; 
    int floppy_desc, file_desc; 

    file_desc = open("./boot", O_RDONLY); 
    read(file_desc, boot_buf, 510); 
    close(file_desc); 

    boot_buf[510] = 0x55; 
    boot_buf[511] = 0xaa; 

    floppy_desc = open("/dev/fd0", O_RDWR); 
    lseek(floppy_desc, 0, SEEK_CUR); 
    write(floppy_desc, boot_buf, 512); 
    close(floppy_desc); 
} 

我沒有編寫自定義加載程序軟盤的引導扇區帶有軟驅的PC,我更願意通過VirtualBox在虛擬機上嘗試整個項目。

所以如何自定義啓動扇區寫入將由我的虛擬機調用的虛擬光盤鏡像? :)
如果您有任何替代方法,請表明它:)

回答

0

(注:這是假定你是在Linux上)

而不是寫/dev/fd0,這需要一個真正的軟盤驅動器,你可以寫一些可用於啓動VirtualBox的磁盤映像。但是,您需要將文件填充到1.44MiB,因爲這是典型的軟盤。

更好的方法是首先創建bootsector二進制文件(使用0xAA55'魔法代碼'),然後執行類似dd if=MyBootsectorBin of=Floppy.flp bs=512 count=2880的操作來創建輸出文件Floppy.flp。然後可以通過VirtualBox啓動(或者我的首選項,QEMU,通過qemu -fda Floppy.flp)。

我不知道有關虛擬光盤,但你可以很容易地創建一個ISO寫入到磁盤。爲此需要的程序是mkisofs,更多可以從here讀取它。