光盤中文翻譯版:https://github.com/yourtion/30dayMakeOS.gitpython
原版光盤(含iso文件):https://github.com/sky5454/30daysMakeOS-Origin-ISOfiles.gitlinux
原版光盤git版本:https://github.com/Tassandar/OSASK.gitandroid
使用dd(Windows)刻盤及Fat知識: 30天自制操做系統-Hello OSgit
用法\z_tools\imgtol.com w a: helloos.imggithub
如今軟盤淘汰了,因此推薦把img寫到移動儲存設備,如u盤/sd卡架構
目錄 /01_dayide
helloos.nas 彙編語言源碼文件函數
asm.bat 一個 調用nask把彙編轉爲二進制 的腳本,內容:工具
..\z_tools\nask.exe helloos.nas helloos.img
install.bat 把img寫到軟盤a的腳本,內容:flex
..\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,而後:
注:真機刻盤啓動,UltraISO-菜單:啓動-寫入硬盤映像…
虛擬UEFI環境:archlinux上安裝QEMU+EFI BIOS
更多書籍:推薦郵電出版社的自制系列: https://book.douban.com/series/34137
安卓(ARM8)上編譯安裝QEMU 先安裝neoterm終端,點通知欄的取得喚醒鎖 查看架構 #cat /proc/cpuinfo 個人是AArch64 ver.2 arm8的64位版 看qemu官網編譯要求,安裝以下依賴 apt install libgcc make-dev git glib-dev libpixman-dev python-dev clang pkg-config perl flex bison 不知道要不要libzopfli 以上雖然名字和 libglib2.0-dev libfdt-dev libpixman-1-dev有點不一樣,但咱們安裝的包的內容應該是對的 su cd ~/ 安卓的/sdcrad目錄是沒有權限的,因此定位到neoterm的home (這是在/data/data/io.neoterm下的某個目錄) 反正提示缺什麼就輸入什麼命令,而後它會提示你安裝什麼,最後 sh ./configure 由於neoterm默認使用sh make 只要文件下載完整, 目前有如下問題, 在make編譯時提示某個函數不符合c99規範的警告,固然不影響 提示__android_log_vprint未定義的問題,結合報錯的571行,查看了一下 sed -n '570,571p' Makefile qemu-ga$(EXESUF): $(qga-obj-y) $(COMMON_LDADDS) $(call LINK, $^) 感受是調用log函數出了問題,暫時沒找到方案.... Required additional packages git (30 MiB), version manager glib2.0-dev (9 MiB), this automatically includes zlib1g-dev libfdt-devel
待續