ubunut 下編譯核心

2021-04-13 11:52:43 字數 3510 閱讀 7768

step 1:

可以通過uname -a命令檢視當前系統核心的版本好及編譯時間

得到原始碼後,將其解壓到某個目錄下

推薦解壓到~/linux/ 目錄下,至於為什麼,等我明白了再告訴你

step 2:

開啟終端,進入源**目錄下,比如:

cd ~/linux/linux-2.6.20.1/

進入後,安全起見,先 make mrproper 一下,

以清除目錄下所有配置檔案和先前生成核心時產生的中間檔案

接下來將要進行核心配置,這是最難也是最關鍵的一步

有四種方法可完成這件事情:

#make config

#make menuconfig

#make xconfig

#make oldconfig

我用的是第二種,但這時問題來了,執行命令後發生錯誤,而且一堆

最關鍵的錯誤資訊是少乙個庫

原來,ubuntu安裝時缺少很多東西,尤其是程式設計方面的,需要自己通過「源」來安裝

ubuntu自己帶的源不全,速度慢不說,有的還連不上,所以要自己新增一些源

使用源第一次進行自動更新的時候,ubuntu裡帶的輸入法也會更新

但這次的更新與上個版本不相容,因此會導致輸入法無法使用

我為這個問題鬱悶半天,上網查很久才找到解決方法:

sudo apt-get remove fcitx

rm -r ~/.fcitx

sudo apt-get install fcitx

就是把原來的fcitx輸入法卸掉,移除它在根目錄下的配置檔案(?好像是),然後重灌

ok,言歸正傳,編譯核心需要下面一些東西:

apt-get install libncurses5-dev  (meke menuconfig要呼叫的)

apt-get install libqt3-headers   (make xconfig要呼叫的)

上面列的不全,但你安裝的時候,源會提示你,哪些包是推薦安裝的

都裝上就是了

如果連基本的程式設計庫(gcc, make等)也沒有的話

apt-get install build-essential

如果上面的東西都裝完了,恭喜你,終於可以make menuconfig了

但先別急,相信你現在的系統正用得很爽

上網,聲音,顯示···什麼問題都沒有

但等你重新編譯核心後,可能你就少些東西了,比如上不了網,聲音沒了等等

嚴重的連系統都進不了

為此,你最好把現在核心用的.config檔案拷貝過來,當作模版

當你make menuconfig後,選倒數第二項:load config(好像是這個名字,記不清了)

把.config載入進來,這樣你就能在原來核心的基礎之上修改了

這時相信你只要別隨便減去什麼東西

編好核心後一樣用得很爽

至於menuconfig裡面數不清的選項都是什麼意思

相信你即使很懂英文也看不太明白

我從網上找了乙個解釋其中一些選項的,發到了論壇上

後來發現黃誠那有更全的,真太有才了

給個鏈結,想研究的去看看吧:http://bbs.ss.pku.edu.cn/ss/index.php/7777/action_viewspace_itemid_8065.html

但有乙個選項,一般很少提到,就是如果你發現編譯完之後

重啟時進度條沒有了

多半是因為你在device-drivers==>graphic ···==>console···(路徑記不清了)下有個

config_framebuffer_console

,不能是m(動態載入),而是要×(編譯進核心)

配置好後,強烈建議你把生成的.config檔案備份一下

這樣將來一旦有什麼問題

你可以馬上copy過來,在原來的基礎上繼續

step 3:

接下來就簡單了

如果你人品夠好,下面四個命令之後就ok了:

make clean

make -j4  (-j4是讓處理器分成四個執行緒來編譯核心,速度快,推薦cpu好的使用)

make modules_install

make install

結束後重啟,就可以在啟動選單上看到新核心了

我人品不夠,或者說ubuntu太另類

居然不給我生成initrd檔案

上網查,原來要用下面的命令:

make-kpkg clean (kpkg具體什麼作用不懂)

其中--initrd必需要,不然生成不了initrd檔案

wing1是你自己取的映象的名字

編號核心後,就會顯示linux-2.6.20.1-custom最後兩項是生成映象包和標頭檔案包

make完之後,會在上一層目錄看到兩個deb包

用dpkg -i命令安裝這兩個包就好了

安裝核心及標頭檔案包

sudo  dpkg -i linux-image-2.6.22.1-2.6.22.1_2.6.22.1-2.6.22.1-10.00.custom_i386.deb

sudo  dpkg -i linux-headers-2.6.22.1-2.6.22.1_2.6.22.1-2.6.22.1-10.00.custom_i386.deb

這個過程結束後,/boot/grub/menu.lst中會自動新增新的啟動項,不用再手動更改,非常方便。

重新啟動即可進入新核心,這中方式應用在debian中,ubuntu同樣適用,並且比傳統的方式簡便許多

這個時候,一切都弄好了

可以去/boot目錄下看看vmlinuz、initrd、system.map檔案是否都在

然後看看/boot/grub/menulist檔案中的內容是否已經加上你新編譯的核心

如果是,恭喜你,放心大膽的重啟吧

重啟後,就可以進入你自己編譯的核心了

常規方式編譯核心:

1.安裝必要的工具

包 包有:libncurses5-dev(menuconfig需要的)和essential

sudo aptitude install build-essential bin86 kernel-package

sudo

aptitude

install libqt3-headers libqt3-mt-dev

sudo

aptitude

install make

sudo

aptitude

新增乙個新的啟動項 :

sudo vim /boot/grub/menu.lst

title ubuntu, kernel

2.6.21.1

root (hd1,0) //注意分割槽名稱

kernel /boot/vmlinuz-

2.6.21.1

root=/dev/sdb1 ro

initrd /boot/initrd.img-

2.6.21.1

boot

Linux下核心編譯

這裡直接解壓會有問題,因為那個zip軟體固有的問題,導致解壓的時候出問題,一般這個時候不注意是看不出來的,在編譯的時候就會顯現出來,一般為檔名太長。symlink error file name too long這是解壓的時候報出來的,這個一般不注意看不出來的。下面是我make arch arm c...

Ubuntu下編譯核心

cd wget 安裝有關編譯程式。安裝make gcc,make kpkg,執行menuconfig等等和編譯核心相關的工具。安裝不了,請檢查 etc apt sources.list 檔案。有關命令 sudo apt get install build essential kernel packa...

ubuntu 下編譯核心

2.為寫qemu的watchdog驅動練手。有朋友問make的 watchdog驅動 需要什麼準備,所以寫這個blog。ubuntu 12.04.4 1.make 時間 大於1個小時 1.安裝編譯核心所需要的軟體 apt get install build essential kernel pack...