最近在学习linux内核 ,但是现在的内核代码太大过于复杂,于是想从最初的linux版本开始 ,结果买了linux0。11内核分析 ,发现书本上的都还没有讲清楚 ,甚至连最起码的环境书本上都没有讲清楚怎么搭建成功 ,只是拷贝一个可以跑linux的bochs,怎么调试怎么使用都没讲明白 ,我很郁闷 ,于是熬夜到网络上查资料 ,终于找出一个实用环境的搭建方法 。在网络的资料中 ,有一篇七十年代(作者名)写的文章已经解决了这个问题 ,但我这里仍然将自己学习后的心得贴出来 ,下文很多是引用他的内容 。建立的步骤为
也就是说 ,首先安装boch,然后将linux-0.11-dev-040809在boch的安装目录
下展开为任意文件夹,假设为解压缩为文件夹linux011
3、进入linux011目录 点击bochsrc-hd.bxrc进入linux0.11系统
此时进入模拟机便启动了。linux也在bochs上跑起来了。
( 注意此时运行的是基于hd的linux,在同一目录下还有一个机遇fd的可以启动的 bochsrc-fd.bxrc,此文件是基于bootimage_fd 的 ,也就是说 ,我们可以通过机遇fd的linux0.11编译生成一个内核image文件 ,然后挂软驱diskb.img 通过mcopy拷贝image 到diskb.img中 .然后启动基于fd的虚拟机,这样就实现了通过我们刚刚编译生成的diskb.img这个内核img文件启动linux0.11的过程 。通过这种方式我们可以很轻松的对linux0。11内核进行调试和修改 ,再次感谢七十年代给出了这个实现方式 ,让我少走了很多弯路)
4、进入内核所在目录([/usr/src/linux]#)
5、#make clean 回车
把它自带的内核删掉
6、(略)使用vi对各个目录下的Makefile进行编辑,去除其中的(-mstring-insns)
7。编译内核([/usr/src/linux]#make 回车)
9、内核编译完成
下面开始调试内核
10 。mformat b:
11 mcopy image b
12 修改bochsrc-fd.bxrc
floppya: 1_44="bootimage-0.11", status=inserted修改为
floppya: 1_44="IMAGE", status=inserted
13 双击bochsrc-fd.bxrc文件运行新编译的内核了。
这个方法很方便呵呵 ,另外附上mcopy的说明
名称:mcopy
使用权限:所有使用者
使用方式:
mcopy [-b/ptnvmoQOsSrRA] sourcefile targetfile
mcopy [-b/ptnvmoQOsSrRA] sourcefile [ sourcefiles... ] targetdirectory
mcopy [-tnvm] MSDOSsourcefile
说明:
本程序可用来复制 MSDOS 格式档案到 Linux 中,或是由 Linux 中复制 MSDOS 档案到磁片上。mcopy 可复制单一的档案到所指定的档案名称,或是复制数个档案到所指定的目录之中。来源与目的档案可为 MSDOS 或是 Linux 档案。
参数:
b 批次模式.这是为大量的档案复制进行最佳化的选项,但是当在复制档案过程中产生 crash 时,会有安全性的问题产生。/ 递回的复制。包含目录所含档案与其下所有子目录中的档案。
p 维持档案原来的属性。
Q 当复制多个档案产生错误时,尽快结束程序。
t 复制纯文字档案。将 carriage return/line feeds 转换成 line feeds 字元。
n 在覆盖 Linux 档案时不会出现警示讯息。
o 在覆盖 MSDOS 档案时不会出现警示讯息。
m 维持档案原来的修改时间。当目的档案已存在,且使用 -n 选项时,mcopy 会询问是否要覆盖或是另存新档。
范例:
mcopy a:autoexec.bat . 将 A 槽磁片根目录中的 autoexec.bat 复制到目前工作目录之下。
阅读(2761) | 评论(3) | 转发(0) |