歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 簡述編譯 Linux 3.0 內核的方法

簡述編譯 Linux 3.0 內核的方法

日期:2017/2/28 16:00:24   编辑:Linux教程

有時候可能需要自己編譯 Linux 內核,下面簡單講述編譯 Linux Kernel 3.0 的一般方法(在 Fedora 和 Ubuntu Linux 發行版上測試通過)。作為示例,下面使用的是 3.0 RC4 版內核 (update: 2011-8-19 這篇文章是從我舊 blog 搬過來的,整理此文時 3.1-RC2 版已經發放出,不過下面的方法仍然適用的)。

1、下載並解壓縮 Linux Kernel 3.0 RC4 源代碼

Linux Kernel 官方網站下載得到 linux-3.0-rc4.tar.bz2 文件,把它放到一個你有權限讀寫的文件夾,運行下面命令解壓縮並進入解壓後的文件夾:

$ tar -jxvf linux-3.0-rc4.tar.bz2
$ cd linux-3.0-rc4

2、配置內核編譯參數

先安裝 ncurses 工具,這是字符版配置工具所依賴的:

$ sudo apt-get install libncurses5 libncurses5-dev  (Ubuntu 適用)
$ sudo yum install ncurses ncurses-devel  (Fedora 適用)

因為新版本配置工具會自動尋找當前系統環境的配置信息(比如 /boot/config-XXX 文件),所以接下來可以直接運行字符版的配置工具:

$ make menuconfig

這裡應該是整個過程最為困惑的一部,因為有很多配置選項。具體的配置方法和含義可以搜索相關的文章,當然也可以一切用默認值,直接選中菜單下面的“Save”然後退出,配置工具會生成一個“.config”文件。

3、開始編譯

$ make

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

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

$ make mrproper

4、安裝編譯好的模塊和內核

內核編譯好之後,使用下面命令安裝 modules:

$ sudo make modules_install

上面的命令會將編譯好的 modules 復制到 “/lib/modules/3.0.0-rc4” 文件夾,其中“3.0.0-rc4”是內核的版本號,你會在“/lib/modules”文件夾中看到其他版本內核的 modules,包括當前系統的。

然後安裝編譯好的內核映像文件:

$ sudo make install

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

是不是發現缺少了一個 initrd.img 文件(初始ram磁盤文件)。使用下面命令創建一個即可:

$ sudo mkinitramfs 3.0.0-rc4 -o /boot/initrd.img-3.0.0-rc4  (Ubuntu 適用)
$ sudo mkinitrd initramfs-3.0.0-rc4.img 3.0.0-rc4  (Fedora 適用)

5、修改 GRUB 啟動菜單,增加新內核的啟動選項

這一步可以使用 Grub2 的自動生成工具完成

$ sudo update-grub2    (Ubuntu 適用)
$ sudo grub2-mkconfig  (Fedora 適用)

假如你(對自己編譯的內核沒什麼把握)不希望修改 Grub 啟動菜單,則可以直接在啟動 Linux 時手動指定新內核,方法如下:(熟悉 Grub 的請忽略以下段落)
重啟計算機,在 Grub 菜單界面(假如沒有看到的話,則在重啟計算機時按下 ESC 鍵)按“c”進入命令模式,先選擇啟動文件的分區,假設 “/boot”位於第一塊硬盤第一個分區:
set root=(hd0, 1)
其中0表示第一塊硬盤,1表示第一個分區。然後指定內核映像和虛擬ram磁盤文件位置:
linux /boot/vmlinuz-3.0.0-rc4 root=/dev/sda1
initrd /boot/initrd.img-3.0.0-rc4

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

Copyright © Linux教程網 All Rights Reserved