之前介紹過如何用Debian的方式來編譯核心,將它變成deb檔。現在要介紹的是用傳統的方法來編譯,適用於各個不同版本的linux下。
下載所需的核心並解壓縮在/usr/src裡
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2
# tar jxvf linux-2.6.25.tar.bz2
# cd /usr/src linux-2.6.25
# make clean
編輯所要編譯核心,設定是靜態還是動態連結到核心裡。最後會產生一個.config檔
# make menuconfig
開始編譯核心,產生一個壓縮的boot image,如果是x86的電腦,會產生在arch/x86/boot/bzImage
# make bzImage
編譯及安核心模組。模組會被放置在/lib/modules/`uname -r`/這個目錄裡
# make modules
# make modules_install
將產生的boot image複製到/boot,並改名成vmlinuz-2.6.25
# cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.25
更新bootloader,在這,我們是使用grub。
# update-grub
重開機即可。
若在開機的過程發生問題時,可能核心還需要initrd的幫助。
Initial ramdisk (initrd)是一個初始的root file system。它會在真實的root file system可使用之前被掛載使用。initrd是依附在Kernel上,他的載入視為是Kernel開機程序的一部份。Kernel然後將此 initrd掛載進來,載入相關的模組,讓真實的root file system可以使用,並取得真正的root file system。
initrd包含一個極小集合的目錄和可執行檔來完成它的工作,如insmod來將Kernel module載入。然而,initrd只是一個短暫的file system,用來橋接真正的root file system,一旦完成任務,它將會被卸載,釋放記憶體。
所以,可以利用工具(mkinitramfs來建立initrd檔案
# cd /boot
# mkinitramfs -o 2.6.25-initrd 2.6.25
# update-grub
即完成。
所以,可以利用工具(mkinitramfs來建立initrd檔案
# cd /boot
# mkinitramfs -o 2.6.25-initrd 2.6.25
# update-grub
即完成。
0 意見:
張貼留言