將編譯後的彙編程式碼移動到 USB 設備的引導扇區
我編寫了一個簡單的作業系統,我正在嘗試對其進行測試。我安裝了 VirtualBox 和一個 8 GB 快閃記憶體驅動器,所以我想我會使用這些。但是,我不確定如何使 USB 驅動器可啟動。我遵循了很多關於製作可啟動 iso 映像的教程,但 VirtualBox 和 Disk Utility 都無法讀取它。有人可以給我一個行之有效的方法來將 USB 驅動器設置為可啟動嗎?
是)我有的
- 一個 8 GB 快閃記憶體驅動器
- VirtualBox 虛擬機
- 由用 nasm 編譯的彙編程式碼製成的 .bin。
我需要的
- 關於如何填充 USB 設備的引導扇區的簡單、清晰的資訊
- 如果我需要除 .bin 之外的其他內容,請朝正確的方向輕推
現有程式碼
;********************************************* ; Boot1.asm ; - A Simple Bootloader ; ; Operating Systems Development Tutorial ;********************************************* org 0x7c00 ; We are loaded by BIOS at 0x7C00 bits 16 ; We are still in 16 bit Real Mode Start: cli ; Clear all Interrupts hlt ; halt the system times 510 - ($-$$) db 0 ; We have to be 512 bytes. Clear the rest of the bytes with 0 dw 0xAA55 ; Boot Signature
我遵循的教程
http://www.quilime.com/code/bootable_iso http://www.acm.uiuc.edu/sigops/roll_your_own/ http://www.brokenthorn.com/Resources/OSDevIndex.html http://www.brokenthorn.com/Resources/OSDev1.html http://www.brokenthorn.com/Resources/OSDev2.html http://www.brokenthorn.com/Resources/OSDev3.html
典型的方式是使用
dd
. 以下是來自syslinux 引導載入程序的安裝說明,用於安裝mbr.bin
到/dev/sda
.dd bs=440 count=1 conv=notrunc if=mbr/mbr.bin of=/dev/sda
這裡,
/dev/sda
是目標設備。(of
是“輸出文件”。)您可以將其替換為 USB 驅動器的設備名稱。
好的,您可以使用一個非常小的作業系統。現在你需要得到某種機器來啟動它。
無論您使用什麼機器(筆記型電腦、VirtualBox 等)啟動時,它都需要一些包含程式碼的 ROM 來載入和啟動作業系統。這通常類似於 BIOS。這通常會簡單地獲取配置的引導媒體的引導扇區並執行它在那裡找到的任何東西。
因此,只需將您的簡約作業系統放入引導扇區,一切都很好。如果您的作業系統不夠簡約,則引導扇區需要程式碼來載入更多作業系統。