1.自己寫操作系統--開發環境的搭建與第1個操作系統(完全可復現)

開發環境搭建

硬件

計算機(Windows 7 操作系統)

軟件

VMware虛擬機(裝有Linux系統:Ubuntu9.10)

FloppyWriter.exe軟盤絕對扇區讀寫工具(能把 .bin文件寫到真實軟盤或虛擬軟盤中)(書中配套帶的)。

bochs(x86模擬器)(用它來運行自己寫的操作系統)(官網下載,版本2.9.6)。

nasm編譯器(把彙編文件編譯爲二進制文件)(安裝再ubuntu中)(sudo apt-get install nasm)。

FileZilla文件傳輸工具(用於Windows主機和虛擬機之間文件的傳輸)。

編寫第一個操作系統

步驟1. 編寫彙編文件

這個操作系統僅有一個彙編文件,文件中僅有10幾行代碼。文件名爲 boot.asm。

在Windows中新建一個文本文件,後綴改爲.asm,文件名改爲boot。寫入下面的程序,那麼源程序就寫好了。

	org	07c00h			; 告訴編譯器程序加載到7c00處
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	call	DispStr			; 調用顯示字符串例程
	jmp	$			; 無限循環
DispStr:
	mov	ax, BootMessage
	mov	bp, ax			; ES:BP = 串地址
	mov	cx, 16			; CX = 串長度
	mov	ax, 01301h		; AH = 13,  AL = 01h
	mov	bx, 000ch		; 頁號爲0(BH = 0) 黑底紅字(BL = 0Ch,高亮)
	mov	dl, 0
	int	10h			; 10h 號中斷
	ret
BootMessage:		db	"Hello, OS world!"
times 	510-($-$$)	db	0	; 填充剩下的空間,使生成的二進制代碼恰好爲512字節
dw 	0xaa55				; 結束標誌

步驟2. 編譯成可執行文件

編譯用到 Linux 下的 nasm 編譯器。

用 FileZilla 把編寫好的 boot.asm 文件傳輸到 Ubuntu 中。

Ubuntu中安裝nasm

sudo apt-get install nasm

在boot.asm所在的目錄編譯源程序。

nasm boot.asm -o boot.bin

至此,生成了 boot.bin 文件。

步驟3. 製作虛擬軟盤映像文件

方案一:直接使用書中提供的TINIX.IMG,這是已經制作好的映像文件,大小1440k。

方案二:在bochs的安裝目錄中,找到 bximage.exe。
雙擊打開,按步驟依次輸入 1、 fd 、軟盤映像的文件名,回車,回車。如圖所示。
在這裏插入圖片描述
至此,按照方法一可以直接使用TINIX.IMG虛擬軟盤映像文件。方法二可以生成自己命名的虛擬軟盤映像文件。

步驟4. 往軟盤裏寫入操作系統

雖然是虛擬軟盤,但也是要實現軟盤的功能,就是存放操作系統的可執行文件。
這步的目的:就是把

方案一:使用書中配套的FloppyWriter.exe軟盤絕對扇區讀寫工具
點擊 Write File to Image:這是往虛擬軟盤映像裏寫文件。write file to Floopy是往真實軟盤裏寫文件。
在這裏插入圖片描述
選擇要寫入的文件(就是步驟2 生成的可執行文件),點“打開”。
在這裏插入圖片描述
然後選擇虛擬軟盤映像文件(就是把操作系統寫入到這個映像文件裏)。
在這裏插入圖片描述
最後,
在這裏插入圖片描述
方案二:在 Linux 環境下,把操作系統文件寫入軟盤映像。
首先把 boot.bin 和 myOS.img文件放在同一目錄下。
然後執行

dd if=boot.bin of=myOS.img bs=512 count=1 conv=notrunc

一行命令,全部搞定。

至此,已經把操作系統寫入到虛擬軟盤中了。(就類似於做好了啓動盤)

步驟5. 在虛擬機或模擬器中安裝操作系統

做好的操作系統要在計算機中跑起來,可以放在真實的計算機中,但是很麻煩,而且不利於調試,一般放在虛擬機中或者模擬器中,下面介紹兩種方法。
方案一:在虛擬機中安裝操作系統 (VMware中)
創建新的虛擬機
在這裏插入圖片描述
稍後自己安裝系統
在這裏插入圖片描述
在這裏插入圖片描述
命名和選擇路徑
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
然後找到虛擬機設置
添加軟盤
在這裏插入圖片描述
還有一步選擇軟盤映像文件,忘記了截圖……。

最後,開啓虛擬機。
在這裏插入圖片描述
最終開啓後,顯示爲
在這裏插入圖片描述
至此,在虛擬機中安裝自制操作系統已完成。

方案二:在模擬器中安裝操作系統 (x86模擬器 bochs )
我是在官網安裝的bochs 2.9.6。安裝時最好勾選 DLX Linux Demo。

打開 bochs 的安裝目錄,找到 bochsrc.bxrc配置文件。(可能不存在,那就新建一個空白的)。
在這裏插入圖片描述

bochsrc.bxrc的內容改爲:
仔細觀察,發現 myOS.img就是映像文件的名字。

#how much memory the emulated machine will have
megs:4

#filename of ROM images
romimage:file=BIOS-bochs-latest,address=Oxf0000
vgaromimage:file=VGABIOS-elpin-2.40

#what disk images will be used
floppya:1_44=myOS.img,status=inserted

#Choose the boot disk
boot:a

#where do we send log messages?
log:bochsout.txt

設置好配置文件後,把myOS.img文件(與配置文件中對應)放在和配置文件同一個目錄下,雙擊 配置文件 bochsrc.bxrc。
就會看到如下圖。
在這裏插入圖片描述
至此,操作系統就在模擬器中跑了起來。

總結

我們總共分了 5 個步驟,完成了一個很小很小的操作系統,並且在虛擬機或模擬器中運行了起來。

好幾個步驟提供了多種方法。

其中第三步,製作虛擬軟盤映像,以後不用每次都重複製作,用這一個就可以了,直接往裏寫可執行文件。

  1. 編寫彙編文件
  2. nasm生成可執行文件
  3. 製作虛擬軟盤映像文件
  4. 把執行文件寫到映像文件
  5. 把操作系統在虛擬機或模擬器中運行起來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章