(zz)编译Ubuntu Linux内核
生活随笔
收集整理的這篇文章主要介紹了
(zz)编译Ubuntu Linux内核
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
準(zhǔn)備
先確認(rèn)有基本的編譯環(huán)境,否則執(zhí)行:
$ sudo apt-get install build-essential
注:此命令將會(huì)安裝 glibc、glibc++等等相關(guān)的庫(kù)及頭文件。
環(huán)境說(shuō)明
OS: Ubuntu 9.04 (jaunty)
kernel: linux-2.6.28-12-generic
gcc:?? 4.3.3
注:Ubuntu 9.04 默認(rèn)使用的內(nèi)核是 linux-2.6.28-11-generic,由于我安裝過(guò)更新包,所以是 linux-2.6.28-12-generic
開始
1. 下載內(nèi)核源代碼,這里我下載的內(nèi)核是 linux-2.6.29.3
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.3.tar.bz2
注:linux-2.6.29.3 發(fā)布于 2009-05-08,在寫這篇文章時(shí)它是最新的內(nèi)核,不過(guò)由于linux內(nèi)核更新很頻繁,每2~3周就會(huì)發(fā)布一個(gè)新版本,所以很快這個(gè)就會(huì)過(guò)時(shí);如果你總是需要最新的版本,最好還是到 kernel.org 看看。
2. 解壓
$ tar xjvf linux-2.6.29.3.tar.bz2
3. 配置內(nèi)核
Ubuntu 的內(nèi)核配置文件保存在 /boot 目錄下,如 9.04 的配置文件是 /boot/config-2.6.28-11-generic,為了通用性,可以使用以下命令:
$ cd linux-2.6.29.3
$ sudo cp /boot/config-`uname -r`-generic ./.config
為了遵循 Ubuntu 對(duì)其內(nèi)核的命名方式,需要修改 Makefile 的 EXTRAVERSION,打開Makefile,找到該行(一般就在前幾行中)并修改為:
EXTRAVERSION = -3-generic
注:其中3是內(nèi)核版本號(hào)2.6.29.3的最后一位,generic是 Ubuntu 的命名習(xí)慣。
4. 編譯內(nèi)核
$ make mrproper
注:清理內(nèi)核代碼樹,基本上編譯內(nèi)核之前最好都要進(jìn)行這一步。
$ make menuconfig
選擇 'Load an Alternate Configuration File'
OK即可。
注:make menuconfig 是一個(gè)文本形式的圖形界面配置環(huán)境,如果你喜歡更高級(jí)的圖形界面配置環(huán)境,GNOME用戶可以輸入 make gconfig,KDE用戶可以輸入 make kconfig
附:(make gconfig)
這樣就加載了默認(rèn)的內(nèi)核配置,然后可以在此基礎(chǔ)上自己定制。
注:如果你對(duì)自己不那么有信心,建議你使用默認(rèn)的配置;否則,根據(jù)自己計(jì)算機(jī)的硬件和自己的需求定制內(nèi)核是最好的方式。
定制完后保存:
退出配置界面后回到命令行,執(zhí)行:
$ make
$ sudo make modules_install
5. 生成initrd.img
$ sudo mkinitramfs -o /boot/initrd.img-2.6.29-3-generic
6. 安裝內(nèi)核
$ sudo cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.29-3-generic
7. 其他
$ sudo cp System.map /boot/System.map-2.6.29-3-generic
$ sudo cp .config /boot/config-2.6.29-3-generic
$ cd /
$ sudo rm vmlinuz initrd.img
$ sudo ln -s boot/vmlinuz-2.6.29-3-generic vmlinuz
$ sudo ln -s boot/initrd.img-2.6.29-3-generic initrd.img
8. 修改 GRUB 菜單
用喜歡的文本編輯器打開 /grub/menu.lst,添加對(duì)應(yīng)的菜單項(xiàng)(這個(gè)應(yīng)該很簡(jiǎn)單,可以參考舊的菜單項(xiàng))
9. 重啟(使用新內(nèi)核)
如果你決定不再使用舊的內(nèi)核,可以考慮刪除舊的內(nèi)核模塊(因?yàn)樗鼈兒苷即疟P空間),這些模塊位于 /lib/modules 下,如刪除 2.6.28-12-generic 模塊:
注:不建議進(jìn)行這一步,畢竟新編譯的內(nèi)核沒有與發(fā)行版相關(guān)的 linux-headers,如果你想做一些開發(fā)的話則不能夠缺少這些頭文件!(目前我還不知道怎么做,不過(guò)可以肯定的是絕對(duì)不是 make headers_install 這么簡(jiǎn)單)
$ sudo rm -rvf /lib/modules/2.6.28-12-generic
注:如果系統(tǒng)上安裝了 VirtualBox,還要重新編譯VirtualBox的內(nèi)核模塊,執(zhí)行:
$ sudo /etc/init.d/vboxdrv setup
未解決問(wèn)題
生成特定于發(fā)行版(Ubuntu)的內(nèi)核頭文件。
附:(系統(tǒng)監(jiān)視器截圖)
出處:http://hi.baidu.com/benzus/blog/item/9f5dc20ee5647dc27acbe144.html
先確認(rèn)有基本的編譯環(huán)境,否則執(zhí)行:
$ sudo apt-get install build-essential
注:此命令將會(huì)安裝 glibc、glibc++等等相關(guān)的庫(kù)及頭文件。
環(huán)境說(shuō)明
OS: Ubuntu 9.04 (jaunty)
kernel: linux-2.6.28-12-generic
gcc:?? 4.3.3
注:Ubuntu 9.04 默認(rèn)使用的內(nèi)核是 linux-2.6.28-11-generic,由于我安裝過(guò)更新包,所以是 linux-2.6.28-12-generic
開始
1. 下載內(nèi)核源代碼,這里我下載的內(nèi)核是 linux-2.6.29.3
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.3.tar.bz2
注:linux-2.6.29.3 發(fā)布于 2009-05-08,在寫這篇文章時(shí)它是最新的內(nèi)核,不過(guò)由于linux內(nèi)核更新很頻繁,每2~3周就會(huì)發(fā)布一個(gè)新版本,所以很快這個(gè)就會(huì)過(guò)時(shí);如果你總是需要最新的版本,最好還是到 kernel.org 看看。
2. 解壓
$ tar xjvf linux-2.6.29.3.tar.bz2
3. 配置內(nèi)核
Ubuntu 的內(nèi)核配置文件保存在 /boot 目錄下,如 9.04 的配置文件是 /boot/config-2.6.28-11-generic,為了通用性,可以使用以下命令:
$ cd linux-2.6.29.3
$ sudo cp /boot/config-`uname -r`-generic ./.config
為了遵循 Ubuntu 對(duì)其內(nèi)核的命名方式,需要修改 Makefile 的 EXTRAVERSION,打開Makefile,找到該行(一般就在前幾行中)并修改為:
EXTRAVERSION = -3-generic
注:其中3是內(nèi)核版本號(hào)2.6.29.3的最后一位,generic是 Ubuntu 的命名習(xí)慣。
4. 編譯內(nèi)核
$ make mrproper
注:清理內(nèi)核代碼樹,基本上編譯內(nèi)核之前最好都要進(jìn)行這一步。
$ make menuconfig
選擇 'Load an Alternate Configuration File'
OK即可。
注:make menuconfig 是一個(gè)文本形式的圖形界面配置環(huán)境,如果你喜歡更高級(jí)的圖形界面配置環(huán)境,GNOME用戶可以輸入 make gconfig,KDE用戶可以輸入 make kconfig
附:(make gconfig)
這樣就加載了默認(rèn)的內(nèi)核配置,然后可以在此基礎(chǔ)上自己定制。
注:如果你對(duì)自己不那么有信心,建議你使用默認(rèn)的配置;否則,根據(jù)自己計(jì)算機(jī)的硬件和自己的需求定制內(nèi)核是最好的方式。
定制完后保存:
退出配置界面后回到命令行,執(zhí)行:
$ make
$ sudo make modules_install
5. 生成initrd.img
$ sudo mkinitramfs -o /boot/initrd.img-2.6.29-3-generic
6. 安裝內(nèi)核
$ sudo cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.29-3-generic
7. 其他
$ sudo cp System.map /boot/System.map-2.6.29-3-generic
$ sudo cp .config /boot/config-2.6.29-3-generic
$ cd /
$ sudo rm vmlinuz initrd.img
$ sudo ln -s boot/vmlinuz-2.6.29-3-generic vmlinuz
$ sudo ln -s boot/initrd.img-2.6.29-3-generic initrd.img
8. 修改 GRUB 菜單
用喜歡的文本編輯器打開 /grub/menu.lst,添加對(duì)應(yīng)的菜單項(xiàng)(這個(gè)應(yīng)該很簡(jiǎn)單,可以參考舊的菜單項(xiàng))
9. 重啟(使用新內(nèi)核)
如果你決定不再使用舊的內(nèi)核,可以考慮刪除舊的內(nèi)核模塊(因?yàn)樗鼈兒苷即疟P空間),這些模塊位于 /lib/modules 下,如刪除 2.6.28-12-generic 模塊:
注:不建議進(jìn)行這一步,畢竟新編譯的內(nèi)核沒有與發(fā)行版相關(guān)的 linux-headers,如果你想做一些開發(fā)的話則不能夠缺少這些頭文件!(目前我還不知道怎么做,不過(guò)可以肯定的是絕對(duì)不是 make headers_install 這么簡(jiǎn)單)
$ sudo rm -rvf /lib/modules/2.6.28-12-generic
注:如果系統(tǒng)上安裝了 VirtualBox,還要重新編譯VirtualBox的內(nèi)核模塊,執(zhí)行:
$ sudo /etc/init.d/vboxdrv setup
未解決問(wèn)題
生成特定于發(fā)行版(Ubuntu)的內(nèi)核頭文件。
附:(系統(tǒng)監(jiān)視器截圖)
出處:http://hi.baidu.com/benzus/blog/item/9f5dc20ee5647dc27acbe144.html
轉(zhuǎn)載于:https://www.cnblogs.com/pangpangxiongxiong/archive/2009/07/17/1525405.html
總結(jié)
以上是生活随笔為你收集整理的(zz)编译Ubuntu Linux内核的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用MySQL Workbench进行数
- 下一篇: 第五人格三阶会掉分吗(《第五人格》官方网