1. 程式人生 > >linux 4.1核心原始碼編譯

linux 4.1核心原始碼編譯

編譯環境

Arch Linux on VirtualBox

下載核心

下載的核心壓縮包,此時的最新核心版本為4.1:

解壓包

# tar -xvJf linux-4.1.tar.xz

在這裡為了方便直接切換到su許可權了,如果為普通許可權,須在每條命令前加上sudo,如果sudo可用的話。

(命令語句中劃線的部分為檔名或目錄名,是要根據實際情況更改的部分,後面也會遇到很多)

cd到原始碼根目錄

# cd ~/Documents/linux-4.1

進行設定

這裡使用了當前執行核心的預設設定。

拷貝正在執行的核心的配置檔案(.config檔案)到編譯根目錄

# zcat /proc/config.gz > .config

 

當然也可以手動設定

# sudo make menuconfig

(末尾參考資料一中有詳細的說明)

編譯核心

# sudo make [-j 2]

後面的引數-j2表示,cpu要開啟兩個執行緒來編譯核心,可以加快編譯速度。

編譯完成後的核心檔案:

[root@localhost linux-4.1.18]# ll arch/x86/boot/

安裝模組

指定:驅動模組的安裝目錄
    [root@localhost linux-4.1.18]# make modules_install INSTALL_MOD_PATH=/home/test/tmp/
    [root@localhost tmp]# ls lib/
    firmware  modules

# sudo make modules_install

 

將編譯好的核心拷貝到/boot目錄

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-YourKernelName

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-YourKernelName

在這裡YourKernelName為4.1:

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-4.1

# cp -v arch/x86/boot/bzImage /boot/vmlinuz-4.1

製作初始化記憶體盤

# mkinitcpio -k FullKernelName /etc/mkinitcpio.conf -g /boot/initramfs-YourKernelName.img 

可以通過 ls /lib/modules 命令查詢到可用的FullKernelName:

在這裡FullKernelName為4.1.0-ARCH(如上圖):

# mkinitcpio -k 4.1.0-ARCH -c /etc/mkinitcpio.conf -g /boot/initramfs-4.1.img 

[拷貝System.map]

# cp System.map /boot/System.map-YourKernelName

在這裡YourKernelName為4.1:

# cp System.map /boot/System.map-4.1
# ln -sf /boot/System.map-YourKernelName /boot/System.map

完成了這部操作後,/boot目錄如下圖所示:

在這裡vmlinuz-linux為當前核心,vmlinuz-4.1為新編譯的核心。initramfs-4.1.img為新的初始化記憶體盤,還有剛拷貝的System.map-4.1檔案以及System.map連結。

下面我們需要對新的核心檔案和記憶體盤進行引導,以啟動新核心。

設定啟動項

 # grub-mkconfig -o /boot/grub/grub.cfg

我們可以看到grub自動添加了新的核心,新的核心啟動選項在"Advanced options for Arch Linux"中。

重啟

# reboot 0

編譯前後核心對比

編譯前: