我×。。。终于好了,大概3 4个小时吧。。。各种毛刺问题。终究还是闯过来了。。。。
[email protected]:~/Downloads/linux-0.00-050613/linux-0.00$ make
ld -s -x -M head.o -o system > System.map
dd bs=32 if=boot of=Image skip=1
16+0 records in
16+0 records out
512 bytes (512 B) copied, 0.000605945 s, 845 kB/s
dd bs=512 if=system of=Image skip=2 seek=1
14+1 records in
14+1 records out
7632 bytes (7.6 kB) copied, 0.000221138 s, 34.5 MB/s
sync
去这里下载 linux -0.00-041217.zip或者050613的zip都行
http://oldlinux.org/Linux.old/bochs/
不算最痛苦的,遇到很多问题,还好有前人帮忙,希望我的blog也能帮到别人。
编译过程中遇到的很多问题,下面的up都有遇到,并给出的详细解答。。。。好人啊。。。致敬
http://chfj007.blog.163.com/blog/static/173145044201132523034138/
head.s:148: Error: invalid instruction suffix for `pop‘ head.s:149: Error: operand type mismatch
会出现上面这种很多suffix前缀不正确的指令错误提示。解决问题的办法很简单,也就是32位汇编在64位的机子上跑要解决的问题
在相对应的汇编代码的开头加个
.code32
OK
同样,会遇到
head.s:105: Warning: using `%ebx‘ instead of `%bx‘ due to `l‘ suffix
这个把相应的bx寄存器改成ebx就OK
head.s:248: Error: `%al‘ not allowed with `movl‘
head.s:257: Error: `%al‘ not allowed with `movl‘
这个把movl改成movb,这里应该是一个错误,而不是一个平台差异照成的
因为我觉得al是8bit的movl是16bit的,即使在32位平台上也是不对的
Over。 还是很舒坦的。。。平安无事的编译成功了
时间就这样慢慢的流淌,当我们还是流动的长河,当我们变成静静的湖泊
《linux 内核完全剖析》编译linux 0.12 内核 Ubuntu 64bits 环境,布布扣,bubuko.com