可以运行的linux-0.00和linux-0.11

这两个版本的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



相关推荐
1、下载一个带有 gcc 1.40 编译环境的 Linux 0.11 系统软件包。 http://oldlinux.org/Linux.old/bochs/linux-0.11-devel-040329.zip 2、解压linux-0.11-devel-040329.zip 3、安装Bochs: 在解压的目录里有Bochs安装文件:Bochs-2.1.1.exe,点击安装 4、把解压下的大多数文件拷贝到安装目录下(除了Bochs-2.1.1.exe) 5、双击bochsrc-hd.bxrc运行,能运行起来说明,安装成功 6、运行bochs, 在进入目录/usr/src/linux后键入make命令, 即可编译 Linux 0.11 内核源代码 make clean ## 来清除所有编译好的*.o文件或其它模块 make ## 重新编译 出现错误: gcc-cc1: Invalid option "string-insns" 请将每个Makefile文件中的-mstring-insns参数去掉。每个子目录中都有一个,kernel目录下还有三个驱动程序子目录(math, blk_drv, chr_drv) (/usr/src/linux,fs,lib,kernel,kernel/blk_drv,kernel/chr_drv,kernel/math) 同时,到/usr/local/bin中把ar 改名为gar, 或者复制一个 修改完后再执行 make clean make 7、make成功后生成引导启动映象文件Image。若需要输出这个Image文件, 可以首先备份bootimage-0.11-hd文件, 然后使用下面命令就会把bootimage-0.11-hd替换成新的引导启动文件 dd bs=8192 if=Image of=/dev/fd0 注意此处是把编译完的Image(启动映象文件)输出到/dev/fd0,注意此处的/dev/fd0实际上就是bochs中定义的floppya: 1_44="bootimage-0.11-hd", status=inserted,也就是要替换"bootimage-0.11-hd" 8、直接重新启动 Bochs 即可使用该新编译生成的 bootimage-0.11-hd 来引导系统。 9、如果不相信,可以修改bootsect.s然后重新编译,就可以看到启动的时候 Loading system...create by happy (还要执行# dd bs=8192 if=Image of=/dev/fd0) 嘿嘿,可以任意修改,主要修改几个地方: ! Print some inane message mov ah,#0x03 ! read cursor pos xor bh,bh int 0x10 mov cx,#47 mov bx,#0x0007 ! page 0, attribute 7 (normal) mov bp,#msg1 mov ax,#0x1301 ! write string, move cursor int 0x10 msg1: .byte 13,10 .ascii "Loading system ...this is create by happy" .byte 13,10,13,10 .org 508
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页