我對作業系統非常熱衷,並且正在學習相關課程。因此,作為一個項目,我被指派去實作一個簡單的作業系統。
他們為我提供了簡單的作業系統實現喬許。
我可以遵循所有給定的說明並使用 NASM 彙編器編譯引導磁區和基本核心部分。我還添加了自己的代碼來顯示機器的附加資訊。
總結,喬許是一個設計用於從軟碟啟動的作業系統。但我沒有任何可以使用軟碟機的設備。
JOSH 設計者提供了dd if=boot.bin bs=512 count=1 of=/dev/fd0
將 boot.bin 檔案放入軟碟的方法。
我需要知道是否可以在 USB 驅動器上建立虛擬軟碟部件,並且我可以從該驅動器啟動該作業系統。
由於我使用 ubuntu,如果有人能向我解釋如何在我的 USB 上創建這個虛擬軟碟以及如何將 boot.bin 和 kernel.bin 文件放入該虛擬驅動器中,我真的很感激。
據我了解,我們應該為這個 boot.bin 檔案提供某種 512 位元組的磁區。
如果有人能幫我解決這個問題,我真的很感激。
答案1
你應該調查一下PXE啟動。
我並不是說您必須使用 PXE 而不是軟碟(儘管您最終可能會這樣做)。
但 PXE 引導技術使用虛擬軟碟來引導載入最終作業系統。還有各種相關工具可用於處理虛擬軟碟(填充它們,將它們儲存為檔案)以及透過線路發送虛擬軟碟以供目標電腦啟動。因此,您很可能在 PXE 世界中找到您需要的東西。
我過去使用 Tftpd32 來實現此目的。我本來打算發布一個鏈接,但 Chrome 現在警告該網站上有惡意軟體,所以要小心。我相信 Windows 現在也包含此類內容(在 Windows Server 中的 WDS 下)。
答案2
沒關係找到解決方案。
喬許是一個單任務中斷驅動的作業系統。我們從網站獲得了 512 位元組的啟動文件,該文件具有有效的啟動簽名,以及一個簡單的核心文件(實際上是作業系統)。
現在這個引導磁區只識別FAT12檔案系統,所以我們必須使用軟碟機來運作它。
我所做的就是創建一個虛擬軟盤,並將啟動文件刻錄到該磁碟的 MBR 中,並將核心檔案複製到其中,然後在虛擬機器中運行它。
正如我發現的那樣這裡我們可以使用以下命令建立軟碟映像。
~$ cd /media // open the terminal in your home directory and head to /media
/media$ sudo mkdir floppy // create a directory in media
// go back to home directory again
~$ mkfs.msdos -C myfloppy.img 1440 // create a floppy disk image of size 1.44 MB
~ $ sudo mount -o loop myfloppy.img /media/floppy/ // mount the image with the floppy directory.
// now open another terminal where your boot.bin file and kernel.bin file is and enter the following
/os$ lsblk // get the name of the mounted floppy image, you can identify it from the list with a disk that has 1.5 MB size
/os$ sudo dd if=./boot.bin of=/dev/loop0 // now burn the boot file to the MBR
/os$ sudo cp kernel.bin /media/floppy/ // copy the kernel file to the disk image
之後,您可以使用虛擬機器從此軟碟映像啟動。
答案3
我有一個帶有軟碟模擬功能的舊 USB 記憶棒:您可以在上面寫入軟碟映像,該記憶棒將被檢測為 USB 軟碟機。