I've been hankering to rebuild the core of Linux, seemed incredible to myself. But now let's kick off.
准备阶段:
备份旧有核心#cp /boot/vmlinuz /boot/vmlinuz.2.2.12
取得新核心压缩档(ex.linux-2.2.15.tar.gz),或修补程序文件(Patch)(ex.patch-2.2.13.gz, patch-2.2.14.gz, & patch-2.2.15.gz)
备份/usr/src/linux一般linux只是一个符号链接,你可以直接将之移除
将压缩档在/usr/src下解开#tar zxvf linux-2.2.15.tar.gz#mv linux linux-2.2.15#ln -s linux-2.2.15 linux
Change Directory To /usr/src/linux
重编核心的步骤 (以2.2.12升级至2.2.15为例)
I. make mrproper在linux目录下执行"make mrproper",此一步骤目的在清除不稳定目的档(.o),确保核心重编时顺利成功。这个步骤在修补核心(patch)后重编核心时,为重要且必要。
II. make config (make menuconfig, make xconfig)这是重编核心时极重要的一个步骤,你必须针对系统现况,回答上百个问题,错误的选项可能导致核心无法使用。选像设定方式有三种:"make config"、"make menuconfig"及"make xconfig";"make config"采交谈式一问一答;"make menuconfig"在文字模式下,采选单方式设定核心选项;"make xconfig"则是在图形模式(X-Window)下的选单设定模式。当你完成冗长的设定程序之后,如果未指定设定内容储存档名,你的设定将会被储存在./usr/src/linux/arch/i386/defconfig中,下次重编核心时,这就是你的预设(default)选项来源。
III. make dep这个步骤帮你设定所的附设档案,确保include file的相依关系。
IV. make clean清除旧系统核心与driver,如果你第一次重编核心,你可以略过这个步骤。
V. make zImage编制一个新的核心,如果你的心核心大小超过640KB,你必须改用"make bzImage"。如果你希望编制新核心的过程中,顺带制作一个开机片,你可使用"make zdisk" or "make bzdisk"(if new kernle is larger than 640KB)。这个步骤所需时间约20~40分钟不等(or longer),端视你系统CPU与RAM数量而定。编译成功后,新核心位置在/usr/src/linux/arch/i386/boot/zImage or /usr/src/linux/arch/i386/boot/zbImage。
VI. 改变系统使用之核心#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.15#cd /boot#ln -s /boot/vmlinuz-2.2.15 /boot/vmlinuz###请确定你原有核心以备份。(如前置作业所述)如果你为使用lilo开机,你必须在编译核心时制作开机片,或直接用"dd"将核心加载磁盘中,以便开启新系统。
VII. 编译系统模块#make modules#make modules_install你必须执行此一步骤,否则你的心核心将无法使用你的旧模块。新的模块将会被安装至/lib/modules/2.2.15目录下。
VIII. 更新System.map#cp /usr/src/linux/System.map /boot/System.map-2.2.15#rm /boot/System.map#ln -s System.map-2.2.15 System.map每一版本的系统核心都有其特有的系统功能映像文件System.map,以定义该版核心的所有功能信息。
IX. 编辑lilo.conf,保留旧核心开机选项没有人可以保证编辑的新核心一定可以开启系统,保留旧核心开机选项是一个保险做法。你的lilo.conf修改之后大约会像以下的内容:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz
label=linux
read-only
root=/dev/hda1
image=/boot/vmlinuz-2.2.12-20
label=linux.old
read-only
root=/dev/hda1
执行过lilo -v -v -v之后你就可以准备重新开启新核心了。(By Reboot System)
X. uname -a
检查新核心版本。(After Reboot)
[root@nmc ~]# uname -r
2.2.15 --> Kernel is now 2.2.15