這兩個版本的linux都是根據 趙炯的<<Linux內核完全註釋>>修正版V3.0 整理出來的.已經在Ubuntu 12.04.1版本(bochs 2.4.6)上運行過
https://github.com/voidccc/linux0.00
https://github.com/voidccc/linux0.11
linux 0.00
說明:
這是一個假想中的版本, 並不是由Linus所寫,因爲當時Linux寫好這個版本後,由於不小心錯誤地用modem撥號程序撥到了自己的硬盤設備上,造成他開發Linux系統的MINIX分區毀壞。因此原始的Linux 0.00不復存在了 這個版本是趙炯根據Linux事後描述仿寫出來的,很有意思.Linux原話是這樣的,很有意思,細節可參見趙炯的描述連接 .
"it switched between two processes that printed AAAA... and BBBB... respectively by using the timer-interrupt - Gods I was proud over that"
"它使用時鐘中斷在兩個分別顯示AAAA...和BBBB...的進程之間切換。上帝啊,當時我真自豪!"
Makefile 參考了cheerchoumao的文章 鏈接 源碼在書中原有註釋基礎上加了一點註釋,根據書上的版本head.s有幾處需要修改
1 movl scr_loc, %bx => movlscr_loc, %ebx
2 movl $65, %al => movb $65, %al
3 movl $66, %al => movb $66, %al
4 align 2 => align 4
5 align 3 => align 8
運行:
$ make
$ bochs
注:配置文件已經命名爲.bochsrc 所以可以直接啓動bochs不需要使用-f參數了
github:
https://github.com/voidccc/linux0.00
linux 0.11
說明:
這個版本不超過2萬行代碼量,但是已經具備Linux的基本雛形,包括內核用戶態,多進程切換,內存管理,文件系統,可謂麻雀雖小五臟俱全.
根據tigercn的版本 連接 稍微做修改來的,包含了大多數下載版本里沒有的MINIX根文件系統hdc-0.11-new.img,下面3處做了修改
1 修改/tools/bochs/bochsrc/bochsrc-hd.bxrc,在開頭添加"display_library:sdl",否則會出現下面的錯誤
bochs-bin: symbol lookup error: /usr/lib/bochs/plugins/libbx_x.so: undefined symbol: XpmCreatePixmapFromData
2 修改/tools/bochs/bochsrc/bochsrc-hd.bxrc裏的ata0-master屬性的Image文件路徑
3 將Image的硬盤版MINIX根文件系統加入進來,趙炯介紹了怎麼製作的這個根文件系統,鏈接 因爲原始文件比較大127M,壓縮之後只有7M
運行:
$ make
$ tar zxvf tools/bochs/hdc-0.11-new.tar.gz -C ./tools/bochs/
$ bochs -f ./tools/bochs/bochsrc/bochsrc-hd.bxrc
github:
https://github.com/voidccc/linux0.11