最近想弄點東西,抓了kernel source 來幫麗納思小妹妹換個強壯的心靈!!!
按照慣例
這是神級的官網
http://www.kernel.org/
版本這次用的是
2.6.32.4
雖然工作機是Unbuntu不過這次要換的是Debian小B機~
首先準備
解開linux source 需要bzip2 (debian 預設沒有裝)
make menuconfig 需要ncurses-devel,ncurses-devel 需要叫做libncurses5-dev (靠~debian 預設還是沒有裝,不過我就是喜歡她這點>////////< 不穿比較好)
- 編譯步驟
make help <-- Makefile 有寫了哪些目標可以被make
就會發現下面很有用的訊息:
make mrproper <-- 清光設定檔包跨 .config + make clean
make clean <-- 就是 clean
make menuconfig <-- 選菜
make oldconfig <-- 只有列出新的來選
make all <-- 等於make vmlinux, make modules, make bzImage
make vmlinux <-- 作出沒有壓縮的核心,在source 根目錄會看到
make modules <-- 作出核心用的模組,以後可以insmod
make bzImage <-- 作出壓縮過的核心,在arch/i386/boot/bzImage,或是arch/i386/boot/bzImage -> ../../x86/boot/bzImage
make module_install <--會幫忙拷貝module到目錄/lib/modules... 玩玩而已可以不用
- make menuconfig (記得拷貝舊的來用,在/boot/下面有)
- make all
- make moudule_install (用來做initrd.img) copy 檔案到系統/boot下,需要vmlinuz、initrd.img、System.map、新config
- 修改/boot/grub/menu.lst
- 重開機
littleB:/home/bejo/code# uname -a
Linux littleB 2.6.32.4 #1 Fri Jan 22 07:00:51 CST 2010 i686 GNU/Linux
YES~
-----
總結來說,核心就是一個檔案,開機之後bootloader指到那邊去執行,initrd.img是為瞭解決巧妙的驅動問題,
檔案說明
System.map <--記得拷貝到 /boot/
What Is The System.map File?
There are 2 files that are used as a symbol table:
1. /proc/ksyms (在ubuntu 是 /proc/kallsyms,媽的~我開始覺得這東西流著debianㄧ樣GY的血液是真的)
2. System.map
這個檔案會紀錄module應該插入的symbol記憶體位置,如果模組有問題的話,可以確認一下。
vmlinux <-- 沒壓縮的核心檔
vmlinuz <-- 有壓縮的核心檔
bzImage <-- 有壓縮的核心檔,用bzip壓縮,把這個檔案拷貝到 /boot 下,然後更改成vmlinuxz
zImage <-- 有壓縮的核心檔,用gzip壓縮
.config <-- 系統原本的設定檔,如果要升級現有kernel可以在/boot 下面找到類似config-2.6.27-16-generic之前的前一份檔
所以可以把它拷貝出來餵給現在的核心吃,這樣就不會不知道選啥Kernel菜了,所以記得換過核心要順便把新的config塞進去,守規矩。
mkinitramfs 這東西製造出新的initrd.img
mkinitramfs -o initrd.img-版號 版號
(在這之前ㄧ定要make modules_install 因為它會吃/lib/module/板號)
(如果編譯端不是安裝端,可以用Makefile 改路徑騙過他)
修改開機的kernel選擇
/boot/grub/menu.lst
增加
title BeJo GNU/Linux, kernel 2.6.32.4
root (hd0,0)
kernel /boot/vmlinuz-2.6.32.4 root=/dev/hda1 ro
initrd /boot/initrd.img-2.6.32.4
savedefault
下面是Unbuntu的,有uuid跟debian不大ㄧ樣,照換也可以。
title linux kernel 2.6.27.7
uuid bdce929d-3c0b-4f10-aeb7-76b0fb8b62cd
kernel /vmlinuz-2.6.27.7 root=UUID=1d668bc0-d6b1-4798-8173-b05b65e925e7 ro quiet splash
initrd /initrd.img-2.6.27.7
quie
沒有留言:
張貼留言