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

光盤中文翻譯版: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

 

工具tolset目錄

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

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

      如今軟盤淘汰了,因此推薦把img寫到移動儲存設備,如u盤/sd卡架構

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

 

 

 

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

 

目錄 /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,而後:

  • 真機啓動只須要把img刻到u盤,而後從主板選擇啓動。
  • 虛擬qemu啓動只須要聲明環境變量,而後指定一些參數來啓動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
安卓(ARM8)上編譯安裝QEMU--失敗

 

待續

相關文章
相關標籤/搜索