《30天自制操作系統》筆記1 --- 准備階段


光盤中文翻譯版:https://github.com/yourtion/30dayMakeOS.git

原版光盤(含iso文件):https://github.com/sky5454/30daysMakeOS-Origin-ISOfiles.git

原版光盤git版本:https://github.com/Tassandar/OSASK.git

  使用dd(Windows)刻盤及Fat知識:  30天自制操作系統-Hello OS

 

工具tolset目錄

  • nask編譯器, 把nas文件(作者的匯編源碼)轉為二進制的,用來把nas文件編譯成二進制img文件。可能用翻譯更貼切,不過說成編譯也沒有什么毛病。 路徑/tolset/z_tools/nask.exe
  • imgtol.com      刻軟盤工具

      用法\z_tools\imgtol.com w a: helloos.img

      現在軟盤淘汰了,所以推薦把img寫到移動儲存設備,如u盤/sd卡

  • make.exe    讀取並執行Makefile的GNU系列工具,能讀取指定目錄下的Makefile腳本。其參數與Makefile有關

 

 

 

img文件在qemu的啟動腳本分析

 

目錄 /01_day

  helloos.nas    匯編語言源碼文件

  asm.bat  一個 調用nask把匯編轉為二進制 的腳本,內容:

..\z_tools\nask.exe helloos.nas helloos.img

  

  install.bat   把img寫到軟盤a的腳本,內容:

..\z_tools\imgtol.com w a: helloos.img

 

  run.bat   運行img的腳本,內容及分析如下:

copy helloos.img ..\z_tools\qemu\fdimage0.bin
..\z_tools\
make.exe -C ../z_tools/qemu

把img復制到qemu目錄下同時命名為fdimage0.bin

命令make -C指定目錄,讀取指定目錄下的Makefile文件

 

 

所以,我們看一下Makefile文件(/z_tools/qemu/Makefile)內容吧

default :

 qemu-win.bat

 

沒錯他指導系統執行bat文件(/z_tools/qemu/qemu-win.bat),bat腳本內容

1 @set SDL_VIDEODRIVER=windib
2 @set QEMU_AUDIO_DRV=none
3 @set QEMU_AUDIO_LOG_TO_MONITOR=0
4 qemu.exe -L . -m 32 -localtime -std-vga -fda fdimage0.bin

// 設置三個環境變量,然后用qemu指定參數啟動bin(原來的名字是img,這個bin內容和img一樣)

 -L     指定BIOS和VGA BIOS所在目錄,此處為當前目錄

-m     指定容量,單位Mb,此處為32Mb

-localtime   使用localtime

-std-vga       模擬標准的VGA卡,帶有Bochs VBE擴展

Standard VGA card with Bochs VBE extensions. If your guest OS supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want to use high resolution modes (>= 1280x1024x16) then you should use this option.

      -fda <二進制文件>  指定二進制鏡像文件作為軟盤a加載

總結

fdimage0.bin就是helloos.img,改了名字而已,內容完全一樣。

 

簡潔步驟

先把匯編源碼文件helloos.nas編譯成二進制img,然后:

  • 真機啟動只需要把img刻到u盤,然后從主板選擇啟動。
  • 虛擬qemu啟動只需要聲明環境變量,然后指定一些參數來啟動img

 

注:真機刻盤啟動,UltraISO-菜單:啟動-寫入硬盤映像…

 

 

虛擬UEFI環境:archlinux上安裝QEMU+EFI BIOS

更多書籍:推薦郵電出版社的自制系列: https://book.douban.com/series/34137

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM