1. 程式人生 > >自己動手搭建 Linux 0.12 編譯環境 — 開篇

自己動手搭建 Linux 0.12 編譯環境 — 開篇

起因 =>

在想到說要搭建0.12的編譯環境之前,我一直在學習0.12的math/模組,從基礎知識延伸出很多內容都是我從未涉足過的東西。我翻看了Intel Spec的很多章節,雖然英文很差,可是我會多看一遍,久而久之,感覺比較乏味。

我不是很耐得住很長一段時間做同一件事情的人,不過這樣的僵局即將開啟。偶然看到論壇中有人分享Linus早期經歷,看得很興奮,Linux在Linus設定的一個個目標中完成,好帥氣喔~ 於是,我覺得自己應該換點有意思的事情。

Linux 0.12是一個非常好的“玩具”,不僅這樣,它還完全透明,沒有你摸不到的地方,只要你有興致去玩弄它,它便會聽從你的指揮。有時候玩起來感覺自己又回到了從前的時光!既然是玩具,那麼得時常玩一下,讓自己快樂起來。

這次我選擇了在它的使用者介面製造一些有意思的工具,很顯然,編譯成功一個應用使其執行其中是非常有意思的。(在之前我幾乎認為這樣做是否有必要,哈哈~|~)

堅持 =>

這兩個字大家可能都看噁心了,我也是,老師還有父母常常教導。比如堅持跑完全程、堅持每天晨讀、離高考100天堅持,大部分應該都已經習慣這樣的叫法或語法。可是堅持是有不同的,有些堅持是很難估算終止時間的,堅持跑完全程,那麼終點就在那裡,堅持100天高考,那麼100天就可以終止,而如堅持每天晨讀,它卻沒有結束日期,因此從這樣的角度分析,堅持需要分別看了!

既然我已經決定了去搭建一個編譯環境,那麼我就要時刻準備著堅持二字,因為我無法預期完全時間,而且我可能會在某天選擇放棄,因為我已經預估了離完成日期可能還得花費一個月且必須每天干,但是事情可能完全與你的預期不符,其實你只需在堅持一天,答案就會悄悄來臨,可是誰能預期呢。這時,我們該如何選擇?

對於我,我選擇了在試試,或許會找到答案,是的,這就是信仰!我相信答案就在我的下一個想法裡面了。

耗時 =>

不得不提,不得不說,3月3日,我開始著手搭建工作,大概3月11日我完成了編譯工具,於是我開始測試它們,從這時開始,一個接一個的錯誤襲來,壓力也越來越大,因為查詢它們的原因我幾乎想對自己說no。調整心理後,我決定和它決戰到底。(其實現在想來,如果沒有這些bug作伴,那麼成功的樂趣將大打折扣)

我用一個txt文件大致的記錄下了一些解決的過程和思路,以便於我之後的核對。

到今天23日中午還有一個bug在糾纏著我,不過心態已經非常平和了,因為我清楚的知道,它們不過如此。下午我解決了它,你可能很難相信,這是寫gcc原始碼的人犯的一個低階錯誤!算了,畢竟是1991年的事情了,誰還去計較呢。

準備 =>

當然,在自己想著手搭建0.12的編譯環境之前,我已經比較熟悉Linux 0.12的工作原理,手頭上也有相應的資源來幫助我完成這件事情。如果你看到這裡後,希望自己也來實現它,那麼我可以簡單的羅列一下需要準備的:

1. bochs虛擬機器的使用,當然你可以選擇更好的

2. Linux主機,即你需要在該機器上完全許多的工作,最好是選擇VMware來做

3. 原始碼包,我相信這個你可以去找到,在oldlinx論壇和gnu原始碼庫裡面搜搜

4. 理解編譯連結過程,這個一篇部落格足矣

5. 瞭解Linux 0.12程式載入原理,這也比較容易,直接看看它的原始碼即可

6. 學會在Linux主機上生成Linux 0.12可執行檔案,這部分需要簡單瞭解一下可執行檔案的組成部分

7. 學會製作啟動硬碟,為什麼是硬碟不是軟盤,因為軟盤容量太小了

8. 瞭解Linux 0.12啟動過程,看看boot/目錄吧

9. 學會製作swap分割槽,這部在Linux 0.11上沒有的,0.12新加的內容

10. ... 大概是這些,目前回憶起來差不多

噢,還有就是一顆“堅持”的恆心,不要覺得又噁心了,當你自己主動完成此事後,你會變得很開心!