編譯Linux源碼
一. 下載內核源碼(這裏使用清華大學鏡像源)
-
下載地址
Linux內核 -
解壓
二. 安裝編譯文件需要的軟件
- 修改源(ubuntu系統)
Ubuntu 的軟件源配置文件是/etc/apt/source-list
。將系統自帶的該文件做個備份,將該文件替換爲這裏的內容,即可使用 TUNA 的軟件源鏡像。
- 安裝必須的軟件
sudo apt-get install libelf-dev
sudo apt-get install libssl-dev
sudo apt-get install libncurses5-dev libssl-dev
sudo apt-get install build-essential openssl
sudo apt-get install zlibc minizip
sudo apt-get install libidn11-dev libidn11
三. 編譯內核
3.1 清理文件(在linux源碼根目錄)
- 編譯前清理
make clean # 只清理所有產生的文件
make mrproper # 清理所有產生的文件與config配置文件
make distclean # ß清理所有產生的文件與config配置文件,並且編輯過的與補丁文件
3.2 配置(收集硬件信息如cpu型號,網卡等…)
- 編譯配置, 四種方法選一種, 推薦第二種
make config # 基於文本模式的交互配置
make menuconfig # 基於文本模式的菜單模式(推薦使用)
make oldconfig # 使用已有的.config,但會詢問新增的配置項
make xconfig # 圖形化的配置(需要安裝圖形化系統)
- 使用make menuconfig操作方法:
1> 按y:編譯>連接>鏡像文件
2> 按m:編譯
3> 按n:什麼都不做
4> 按"空格鍵":y,n輪換
配置完並保存後會在linux源碼根目錄下生成一個.config文件
- 利用已有的配置文件模板(.config)
1> linux源碼根目錄/arch/<cpu架構>/configs/<具體某一的CPU文件>,把裏面對應的文件copy並改名爲.config至linux源碼根目錄下
2> 利用當前運行已有的文件(要用ls /boot/ -a查看)把/boot/config-2.6.18-53.e15拷貝並改名爲.config至linux源碼根目錄下執行以上操作就可以用make menuconfig在拷貝.config文件上面修改文件了
3.3 編譯內核
- 編譯啓動鏡像
make bzImage -j 8
- 編譯模塊
make modules -j 8
四、安裝內核
4.1 安裝內核
- 安裝模塊
make modules_install
- 安裝內核
make install
4.2 更改啓動grub
- 查看當前
$ cat /proc/version
Linux version 4.10.0-35-generic (buildd@lcy01-33) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #39~16.04.1-Ubuntu SMP Wed Sep 13 09:02:42 UTC 2017
$cat /boot/grub/grub.cfg | grep 4.10
....
五、卸載內核
刪除 /lib/modules/ 目錄下以內核的版本號爲名稱的目錄
刪除 /usr/src/linux/ 目錄下不需要的內核源碼
刪除 /boot 目錄下啓動的內核和內核映像文件
更改 grub 的配置文件,刪除不需要的內核啓動列表
/boot/vmlinuz*KERNEL-VERSION*
/boot/initrd*KERNEL-VERSION*
/boot/System-map*KERNEL-VERSION*
/boot/config-*KERNEL-VERSION*
/lib/modules
KERNEL-VERSION代表你想卸載的內核的版本號
最後必須更新grub : update-grub。
# 修改啓動項
sudo vim /boot/grub/grub.cfg