Linux核心源碼學習之 核心編譯,linux核心源碼編譯
ubuntu14.04系統編譯3.16.1核心
我的完全是新系統(剛裝上並且進行了更新20140906)
下載linux-3.16.1系統並解壓到/usr/src/下:
mkproper
無法執行此命令,表示缺少相關軟體,上網安裝即可。
sudo apt-get install ncurses-dev
make menuconfig
採用的方法是直接匯入本機已有的.config檔案,未做更改。
開始編譯:
make bzImage
編譯成功後會顯示相關的成功的資訊。
make modules
以上完成的核心和模組的編譯,以下進行安裝:
make modules_install
此時,所有的東西包括安裝好的模組會在/boot/下產生相應的檔案夾
make install
完成核心的安裝(會複製核心至標準位置/boot..)相應的grub檔案也會做更改。
以上基本完成了所有的核心編譯的工作。
開機啟動後,一切正常。
PS:網卡問題
在開機之後成功正常運行幾個小時之後,突然連不上網了。。。。
不知道是什麼問題:
網口沒問題
網線沒問題
所以懷疑是網卡壞掉了,後來驗證的是
硬體上存在雙顯卡:主板上的顯卡和一個獨立顯卡
獨立顯卡的驅動出問題了
懷疑是系統開機時優先啟動獨立顯卡,而獨立顯卡的驅動壞掉了。
最後解決方案:
拔掉獨立顯卡,主板上的顯卡可以正常運行。算是解決了吧。。。。
Linux核心編譯與源碼安裝是一回事嘛?
Linux的核心下載下來是代碼,需要進行配置和編譯。編譯的流程當然就是編譯過程了。具體編譯過程見核心根目錄下的readme.txt檔案,大體是配置,清理目錄,編譯產生鏡像,修改開機檔案。
linux 模組編程為何要編譯核心源碼樹
當然需要。。。
第一點,就是源碼樹中有相應的標頭檔和函數的實現,沒有源碼樹,你哪調用去呢?(PC上編譯的時候核心有匯出符號,系統中有標頭檔,這樣就可以引用核心給你的介面了,但是只能編譯你PC上版本的核心可載入的模組)。
第二個,核心模組中會記錄版本號碼的部分,需要記錄版本號碼的原因是不同的核心版本之間,那些介面和調用可能會有比較大的差異,因此必須要保證你的代碼和某個特定的核心對應,這樣編譯出來的模組就可以(也是只能)在運行這個核心版本的Linux系統中載入,否則一個很簡單的異常就會導致核心崩潰,或者你的代碼根本無法編譯通過(介面名變了)。
我上面說的是編譯模組的情況,當然如果是把模組直接編譯到核心當中去的話,那就不用說了,沒有核心源碼,你無法編譯核心。