今天一時心血來潮,重裝了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 閱讀(449)
評論(0) 編輯 收藏 引用 所屬分類:
操作系統