这两个版本的linux都是根据 赵炯的<
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