linux 4.1內核編譯報告編譯環境Arch Linux on VirtualBox下載內核https://www.kernel.org/下載的內核壓縮包,此時的最新內核版本為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要開啟兩個線程來編譯內核,可以加快編譯速度。編譯完成后的內核文件:
安裝模塊# 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
編譯前后內核對比編譯前:
編譯后:
參考資料[1]https://wiki.archlinux.org/index.php/Kernels/Compilation/Traditional[2]https://wiki.archlinux.org/index.php/GRUB(感謝Arch-Linux詳細的wiki文檔)