今天一时心血来潮,重装了linux,不过接下来是一段痛苦的历程。
首先是按照旧套路安装ns-allinone-2.34,这个除了gcc版本不对导致一运行安装好的ns2就出现堆栈溢出这个错误外,其他的还算顺利,因为毕竟轻车熟路,修改gcc-4.5为gcc-4.4即可。
之后就安装bochs,还是安装原来的套路先到sourceforge上下载bochs2.4.6源码,接着按照书上的步骤./configure --enable-debugger --enable-disasm,然后是make和make install,很顺利。接下来是安装nasm,直接选择apt-get install nasm安装。
然后用原来的无错误的源码试一下安装环境如何,结果就出现了问题,最后定位下来发现执行loader文件的时候在显示"Loading ..."的时候出现错误,我发现该字符串在正常运行的时候地址是0x8000:0x247,而现在地址却成了0x8000:0x80,相当奇怪啊!!
后来我猜测可能是gcc或者nasm版本不对,不过换到另外一台机器上发现gcc和nasm大版本没有问题啊,接着我又用xxd命令直接查看System.Image文件,看boot最后几个字节用来记录loader和kernel大小的数值是否正确,高潮来了,我在正常机器上看到loader占用2个扇区,而在现在的linux上发现loader占用一个扇区,我又直接查看loader文件大小,发现正常机器上编译完的loader文件大小为600多B,而在现在linux上编译完后是260多K,但是奇怪的是用fread()函数读取laoder文件的时候这260多K却读不出来!!!!太狗血了!!我也不想细查原因,肯定是nasm的问题,我又去nasm官网下载到nasm源码,安装完成,替换掉原来的nasm,再编译发现loader文件大小正确了,再运行发现OK了!现在终于发现直接ubuntu源安装还是不能100%靠谱啊!!还是源码安装比较好…受教了.
posted on 2012-02-23 00:51
myjfm 阅读(443)
评论(0) 编辑 收藏 引用 所属分类:
操作系统