寫在前面的話:
一直以來就想要自己動手寫一個簡單的操作系統,可惜水平有限,在linux下編譯安裝一個程序幾天都沒有成功,更不用說研究Linux的內核代碼了。後來買來minix的書籍,看了半個月,也不知道如何開始寫自己的第一行代碼……
無意中發現於源寫的《自己動手寫操作系統》,終於讓我真正踏上了編寫操作系統的第一步。這裏要非常感謝於源大大爲廣大學習編寫操作系統的初學者作出的巨大貢獻。
可惜好景不長,因爲對書本中第二章配置實驗環境這一關沒有完全通過,在第五章就卡殼了。之後因爲電腦資源吃緊,將實驗用的虛擬機都刪除了。學習之路也就沉默了下來。
最近,在逛CSDN時,無疑發現了楊曉兵大大的博客以及所編寫的編譯器YC09還有上面作爲範例之一的tinix操作系統,才知道,原來編寫測試操作系統代碼可以這麼簡單——只需一個yc09編譯器與虛擬機Bochs就可以了,再也不許要花費大力氣來配置實驗環境安裝Virtual PC、VMware以及DOS和Linux,又是使用nasm又是gcc,以及一次又一次啓動虛擬機裏的DOS或Linux。於是重新燃起了編寫操作系統的熱情。
實驗環境:windows XP
編譯器:YC09
運行調試工具:Bochs
實驗代碼結構說明:
所有實驗都是由run.c以及操作系統實際實驗代碼組成。run.c的作用是生成run.exe程序,由run.exe程序自動編譯實驗代碼,生成img以及調用運行Bochs。只要一次編譯好run.c,此後修改微調實驗代碼後,直接運行run.exe即可。我特地設置run.c爲一個無限循環。於是修改測試實驗代碼就變得非常簡單:
(1)運行run.exe
(2)查看虛擬機運行效果
(3)關閉虛擬機
(4)修改實驗代碼
(5)在run.exe的控制檯裏點擊回車(第一輪一次,以後要兩次點擊回車)
(6)回到第二步……
下面是本次實驗代碼:
一個寫在引導扇區的簡單程序——在屏幕上顯示一個字符串。
儘管網上已經有了無數個版本的例子,在這裏,我還是厚臉皮的拿出來與大家分享。
code:run.c
code:boot.c
想要實驗以上代碼的朋友請注意:
1.到楊曉兵大大的博客上下載安裝yc09,安裝只需一分鐘左右。
2.將以上run.c、boot.c代碼拷貝到某個實驗用的文件夾內。
3.在YC09/example文件夾內找到bochs.exe、BIOS-bochs-latest、VGABIOS-elpin-2.40、x11-pc-us.map四個文件拷貝到試驗用的文件夾內。
4.使用yc09編譯運行run.c
ps1:YC09/example文件夾內有tinix操作系統的示例,有興趣的朋友可以直接研究它。另外還有許多有趣開源的程序代碼作爲yc09的示例,值得一看。
ps2:最近逛新華書店,發現於源大大的《自己動手寫操作系統》出了第二版,可憐我第一版都還沒摸熱……