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