歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RHEL6下編譯Linux 3.0.1內核

RHEL6下編譯Linux 3.0.1內核

日期:2017/2/28 16:05:56   编辑:Linux教程

下面簡單講一下在 rhel6 中編譯 Linux Kernel 3.0.1 的過程。因為編譯內核的過程都差不多,所以理論上下面的過程同時也適用於其他發行版(比如大便系列的 Ubuntu 11.04,下面我會同時注出使用大便系列編譯的異同),因為如果編譯後的內核有問題可能使用自己編譯的新內核啟動不了計算機,所以要保留當前使用的內核。

1、下載並解壓縮 Linux Kernel 3.0.1 源代碼
到官方 http://kernel.org/ 下載,得到 linux-3.0.1.tar.bz2 文件,把它移動到任何你有讀寫權限的文件夾,運行下面命令解壓縮並進入解壓後的文件夾:
$ tar jxvf linux-3.0.1.tar.bz2
$ cd linux-3.0.1

2、配置內核編譯參數
先安裝 ncurses 工具,這是字符版配置工具所依賴的:
$ sudo yum install ncurses ncurses-devel #(紅帽系列環境)
$ apt-get install libncurses5 libncurses5-dev #(大便系列環境)

我已經在本機手動配置了 sudoers 所以如何提示當前用戶不是 sudoer 請配置 sudoers 或可用root(我沒測試過)
添加用戶到sudo執行權限 :
1. chmod u+w /etc/sudoers
2. vim /etc/sudoers
3. 在 root ALL=(ALL) ALL 下添加 [user] ALL=(ALL) ALL ([user] 為賦予權限的用戶)
4. chmod 440 /etc/sudoers

新版本配置工具會自動尋找當前系統環境的配置信息(即位於 /boot 下以 config-XXX 開頭的文件),所以接下來可以直接運行字符版的配置工具:
$ make menuconfig

這裡有很多配置選項,如果是嘗試性的心態,則可不必理會它,直接選中菜單下面的“Save”然後退出,配置工具會生成一個“.config”文件。

3、開始編譯
$ make

編譯過程從十幾分鐘到1、2個小時不等,視乎你計算機運行的速度。如果CPU是4核的,可以在 make 命令後面加上“-j4”參數讓編譯程序同時使用4核編譯,這樣編譯所需要的時間能減倍。

如果編譯中途意外中斷,然後想重新開始編譯,需要先執行下面命令清理一下編譯現場然後再編譯:
$ make mrproper

(這裡是漫長的等待過程)

4、安裝編譯好的模塊和內核
內核編譯好之後,使用下面命令安裝 modules:
$ sudo make modules_install

上面的命令會將編譯好的 modules 復制到 “/lib/modules/3.0.1” 文件夾,其中“3.0.1”是內核的版本號,你會在“/lib/modules”文件夾中看到其他版本內核的 modules,包括當前系統環境的。這是個很重要的文件夾,不要手癢把這些文件夾刪除了。

然後安裝編譯好的內核映像文件:
$ sudo make install

上面的命令會把編譯文件夾裡面的“arch/x86/boot/bzImage”文件復制到“/boot”,同時還會復制 init 和 System.map 文件,最終在“/boot”會多出如下3個文件:

/boot/initramfs-3.0.1.img
/boot/System.map-3.0.1
/boot/vmlinuz-3.0.1
現在重啟機器就可以選擇3.0.1的內核來啟動Linux

但網上還有一說安裝時少 initrd.img 文件(初始ram磁盤文件)?使用下面命令創建一個即可:
$ sudo mkinitrd initramfs-3.0.1.img 3.0.1 #(紅帽系列環境)
$ sudo mkinitramfs 3.0.1 -o /boot/initrd.img-3.0.1 #(大便系列環境)

5、修改 GRUB 啟動菜單,增加使用新內核啟動的項目
這一步可以使用 GRUB2 的自動生成工具完成
$ sudo grub2-mkconfig #(紅帽系列環境)
$ sudo update-grub2 #(大便系列環境)

假如你(對新內核沒什麼把握)不希望修改 GRUB 啟動菜單,則可以直接在啟動 Linux 時手動指定新內核,方法如下:
重啟計算機,在 GRUB 菜單界面(假如沒有看到的話則重啟計算機時按下ESC鍵)按“c”進入命令模式,先設置啟動文件的分區,下面假設 “/boot”位於第一塊硬盤第一個分區,如果在其他分區則把下面的數字“1”改成“2,3,5,6,7……”等:
set root=(hd0, 1)

指定內核映像和虛擬ram磁盤文件位置:
linux /boot/vmlinuz-3.0.1 root=/dev/sda1
initrd /boot/initrd.img-3.0.1

注意,在 GRUB 命令模式下也可以按“TAB”鍵自動補完的,不要一個字一個字地敲。最後輸入“boot”啟動。

Copyright © Linux教程網 All Rights Reserved