Ubuntu16.04編譯Linux核心
本文介紹在Ubuntu中編譯Linux核心並新增新的啟動項資訊。
第一步:下載核心原始碼並解壓
核心原始碼可以在官網下載:點選開啟連結
筆者用的核心版本是4.14的。把下載好的核心原始碼放在/usr/src/kernel目錄下,沒有這個目錄的話可以自己建立。通過以下命令把核心原始碼解壓,後面跟的是原始碼檔名。
tar xvJf xxxxxx.tar.xz
第二步:配置編譯選項
配置編譯選項有多種方法:
(1)make config:基於文字的配置介面。
(2)make menuconfig:基於文字的選單式配置介面。
(3)make xconfig:基於X Windows(Qt)圖形配置介面。
(4)make gconfig:基於X Windows(Gtk)圖形配置介面。
(5)make oldconfig:使用原有核心配置。
這裡使用最簡單的make config。
進入解壓得來的資料夾,使用make config命令配置編譯選項。如果沒特殊要求,一路回車選擇預設配置就好。
第三步:開始編譯核心
使用make bzImage命令開始編譯核心,此過程大概需要一小時。
使用make modules編譯相應的核心模組,接著使用make modules_install安裝編譯好的核心模組。此過程大概需要兩個小時。
在以上過程中出現scripts/sign-file.c:23:30: fatal error: openssl/opensslv.h錯誤的解決辦法:點選開啟連結
第四步:新增新的啟動項資訊
將/usr/src/kernel/linux-4.14/arch/x86/boot下的bzImage檔案拷貝到/boot下,並重命名為vmlinuz-4.14.0,後面是核心版本。這時候該目錄下還有init-4.14.0,這是通過命令make modules_install得到的。
修改grub/grub.cfg檔案:
只需把上面名為"Ubuntu"的啟動項資訊複製下來,修改一下啟動項名字,還有在linux,initrd分別改成對應的兩個檔案即可。
重啟系統可以進入新的核心。通過uname -r命令可以得到當前核心版本。