linux0.11编译 ubuntu,ubuntu9.10编译运行Linux0.01

前一阵子都在看源代码,然后自己一行一行的敲上去,但是没有办法手动的调试,

于是自己冒出个想法,我要在自己的机器上编译并且运行linux0.11。

vwmare虚拟机安装的是ubuntu9.10。我想在9.10上利用bochs 来编译并且运行linux0.01。

(1)   下载的源代码是 linux-0.11-081030.tar.gz ,这个源代码是使用gcc 4.3编译的。

但是ubuntu9.10及其之上的版本都安装的是gcc4.4。

所以第一步就是要安装gcc4.3 ,因为若是使用gcc4.4,那么源代码可能会成功编译,但是无法运行。

在控制台上输入 sudo apt-get install gcc4.3 。  然后把gcc4.3变成系统默认的编译器。

ln -sf /usr/bin/gcc-3.3 /usr/bin/gcc  执行此命令即可。

(2) 将linux-0.11-081030.tar.gz  解压,先使用gunzip解压去掉gz。然后再使用tar xvf 解压。

进入linux-0.11 ,然后make clean  , make 。

你会发现新生成了 Image 和  System.map 。

执行 dd bs=8192 if=Image of =/dev/fd0。(下面的配置文件我使用的是bootimage-0.11-hd,

所以我用的是dd bs=8192 if=Image of =bootimage-0.11-hd)

如果到这一步都没问题,那么就说明你编译正确。

(3) 下载linux-0.11-devel-060625.zip 。解压并把文件夹内的 hdc-0.11-new.img 移动到与Imgae 相同的路径下。

(4) 利用bochs2.4.2 来模拟运行。 boch0.11.bxrc配置文件如下:

cbef093dcc044b2793832001e2365e43.pngmegs:16cbef093dcc044b2793832001e2365e43.pngromimage: file=/opt/bochs/gdbstub/share/bochs/BIOS-bochs-latest

cbef093dcc044b2793832001e2365e43.pngvgaromimage: file=/opt/bochs/gdbstub/share/bochs/VGABIOS-lgpl-latest

cbef093dcc044b2793832001e2365e43.png#floppya: 1_44="Image", status=inserted    #这个是启动盘。

cbef093dcc044b2793832001e2365e43.pngfloppya: 1_44="bootimage-0.11-hd", status=inserted 

cbef093dcc044b2793832001e2365e43.pngata0-master: type=disk, path="hdc-0.11-new.img",   mode=flat, cylinders=410, heads=16, spt=38cbef093dcc044b2793832001e2365e43.pnggdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0cbef093dcc044b2793832001e2365e43.pngboot: floppy

cbef093dcc044b2793832001e2365e43.pnglog: bochsout.txt 

cbef093dcc044b2793832001e2365e43.pngparport1: enable=0cbef093dcc044b2793832001e2365e43.pngvga_update_interval:300000cbef093dcc044b2793832001e2365e43.pngkeyboard_serial_delay:200cbef093dcc044b2793832001e2365e43.pngkeyboard_paste_delay:100000cbef093dcc044b2793832001e2365e43.pngfloppy_command_delay:50000cbef093dcc044b2793832001e2365e43.pngips:4000000cbef093dcc044b2793832001e2365e43.pngmouse: enabled=0cbef093dcc044b2793832001e2365e43.pngprivate_colormap: enabled=0cbef093dcc044b2793832001e2365e43.pngfullscreen: enabled=0cbef093dcc044b2793832001e2365e43.pngscreenmode: name="sample"cbef093dcc044b2793832001e2365e43.pngi440fxsupport: enabled=0cbef093dcc044b2793832001e2365e43.png

(5) 运行bochs ,然后选择相应的文件即可。下面讲一下gdb与bochs联合调试的方法

首先要在bochs的配置文件中增加一句 gdbstub:enabled=1 ,port=1234,text_base=0,data_base=0,bss_base=0

进入源代码中的tools文件夹,执行 gdb system

然后接着输入

break  main

target remote localhost:1234

cont

内核代码将在init.c中的main函数处停止。

在联合调试的过程中,bochs会出现pae_fault的错误,这时候就需要连续按 enter 键即可。

经验教训 :

(1) 一定要选择对应的gcc版本,否则就算是编译正确了,也无法运行。我的gcc版本为 gcc 4.3 。

(2) http://oss.lzu.edu.cn/modules/newbb/viewtopic.php?topic_id=1403 这个网址上有对应的源代码。

aa40a914a1add044c25e3db8b4703522.png    成功的图片。

posted on 2010-11-05 19:53 kahn 阅读(1405) 评论(0)  编辑 收藏 引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
带中文注释可成功编译运行Linux0.11+Bochs2.62实验环境说明 此注释以网上获得的“linux带中文注释的0.11版本”为基础,对照赵炯博士《Linux内核完全注释(0.11) 》V3.0版(http://oldlinux.org/download/clk011c-3.0.pdf)编辑而成。作为对赵博士感谢,以及对Linux初学者的回馈,特发布在CSDN上。 此注释可以在http://oldlinux.org/Linux.old/bochs/提供的Linux-0.11-devel-XXXXXX实验环境下正确编译成功,使用:"make disk"命令重启Bochs虚拟机后,新编译源码直接生效,便于学习者直接阅读源码,直接进行实验。 注意事项: 1、为了使注释版与实验环境上的Linux0.11内核保持一致,达到对应文件可以互换的目的,与Linux0.11原始版本相比,加入了15个系统调用函数(参见include/Linux/sys.h第78-92行。赵博士原书没有这部分注释,我不敢班门弄斧),其它相关的文件加入了相应的定义。新加入的代码只有函数体定义,没有具体实现,对其它原始代码没有改变、没有影响。 2、键盘定义改成了美式键盘(原始代码中是芬兰键盘,会导致个别键出问题,调试的时候我曾被迷糊了好久,以为自己把程序搞乱了)。 3、把网上VC版的注释统一改成了 “/* */” 格式的注释。经测试,在Linux0.11实验环境中(gcc1.40),只有标准C注释语法可以正常编译。 4、由于《Linux内核完全注释(0.11) 》原书版本更新的原因,注释中提到的图、表可能与V3.0版书中不一致。 5、由于代码中加入注释,代码行号发生变化,注释中提到的代码行号会出现不一致,建议对照3.0版查询对应内容。 6、实验方法:请先安装附带的Bochs2.62版安装包,双击Test.bxrc即可启动实验系统,执行命令:sh t,即可完成对linuxcn的编译。 7、linux目录中是此实验系统中/usr/src/linux提取出来的不含中文注释的linux0.11源码(此版本比原始的0.11版多15个系统调用函数),linuxcn是加入了中文注释的源码。 8、diskb.img是实验系统与Windows环境下进行文件交换的1.44M软盘映像,执行脚本命令"sh t"时会自动从此映像中读取linux.tar、linuxcn.tar包,解包并编译编译结果在:/usr/root/zw/linuxcn目录下。为了方便文件交换,建议使用7zip为压缩/解压缩工具(7zip可以直接生成tar包),用WinImage实现Windows环境与软件映像交换文件。 9、实验系统下 .profile中加入了几个命令,请读者注意。 10、若实验环境的启动盘被破坏,请用压缩包中的bootimage-0.11-hd覆盖对应文件即可。 11、若实验环境的要命文件系统被破坏,请用压缩包中的hdc-0.11-new.img覆盖对应文件即可。 2014-5-4 cyfx2288
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值