linux-0.11完全剖析第二天: bochs+ubuntu 14.04 运行简单的多任务内核

来源:互联网 发布:淘宝总部投诉电话地址 编辑:程序博客网 时间:2024/05/18 00:44
按照Linux完全剖析,这个简单的多任务内核实例代码在http://oldlinux.org/Linux.old/bochs/linux-0.00-050613.zip
解压后可以得到linux-0.00.tar.gz,再次解压这个文件可以得到三个文件,boot.s,head.s, Makefile
为了得到这个内核的Image,执行make
问题1:

在现在的linux系统已经不存在gas和gld,因此需要将gas改为as
gld改为ld
问题2:

以前的对齐方式为.align 2(2表示幂次),但是现在是计算后的结果因此:
.align 2 改为 .align 4  .align 3 改为 .align 8
问题3:

将movl-->mov
问题4:

由于默认的text段的地址为0x08048000,但是我们实际上需要从0开始 因此给 LDFLAGS加上参数 -Ttext=0x00
LDFLAGS =-s -x -M -Ttext=0x00
将以上问题解决后,生成的Image仍然不能通过bochs运行模拟出现象。
原因在于:dd bs=512 if=system of=Image skip=2 seek=1
skip=2, 跳过前面的1024字节的内容,然后让内容接到boot后面
调试了半天,最后通过比较二进制文件得出用as和ld生成的文件需要跳过前面的4096字节
dd bs=512 if=system of=Image skip=8 seek=1
最后终于得到了想要的结果。。。。。。。。。。。。。。

0 0
原创粉丝点击