Linux核心更新方法

Linux核心更新方法

Linux内核的编译和更新
    在具体更新之前,先要了解的一点,如果你拿到的Kernel是奇数版本,说明是开发测试版本,不稳定,偶数版本的的稳定的。你可以在很多地方下到Kernel,例如www.linuxeden.com或www.kernel.or ... 18,测试版本是2.5.5.
    在更新核心之前,可以执行uname ?r检查系统中目前使用的Kernel版本。
    编译核心可按下面步骤来:
Step1 备份旧版Kernel
    #cd /usr/src
    # mv linux  linux.old
    #mv /boot/vmlinuz  vmlinuz.old
   Step2 取得Kernel源程序代码
    我以Kernel2.5.5为例来完成。
    将linux-2.5.5.tar.gz复制到/usr/src/这个目录下。
   Step3 将Kernel解压缩
    在/usr/src/这个目录下解压缩,会看到linux/这个目录。
    tar zxvf linux-2.5.5.tar.gz
   Step4 make mrproper
    在/usr/src/linux/下执行 make mrproper
   Step5 make config
    在/usr/src/linux/下执行 make config,这是编译整个核心的所在,是最复杂的地方。你需要一个一个选择要编译的功能。
   /usr/src/linux/# make config
   Step6 make dep
    在上一步设置完配置文件后,就可以开始编译核心了。
    /usr/src/linux/# make dep
   Step7 make clean
    清除以前编译出来的旧的系统核心与旧的driver
     /usr/src/linux/# make clean
   Step8 make zImage
    制作系统核心文件。
   /usr/src/linux/# make zImage (注意 I 为大写,其余均为小写)
   Step9 取得Linux核心文件zImage
    编译成功后,真正的系统核心文件Kernel Image放在
   /usr/src/linux/arch/i386/boot/ zImage
   应将此目录的zImage复制到/boot/vmlinuz
   #cd /usr/src/linux/arch/i386/boot
   #cp zImage /boot/vmlinuz-2.5.5
   #cd /boot
   # ln ?s /boot/vmlinuz-2.5.5 /boot/vmlinuz
  Step10 编译系统模块
  如果在make config中设置将某些功能或硬件驱动程序编译成模块modules,且想安装这些模块,执行下面步骤。
/usr/src/linux/# make modules  (编译模块)
/usr/src/linux/# make modules_install  (安装模块)
    编译成功的模块会被放置在/lib/modules/2.5.5/这个目录,若以后想载入模块就执行
#insmod /lib/modules/2.5.5/xxx.o  (xxx.o是模块名称)
# modprobe /lib/modules/2.5.5/xxx.o
  Step11 更新System.map
# cp /usr/src/linux/System.map /boot/System.map-2.5.5
# cd /boot
# ln ?s System.map-2.5.5 System.map
  Step12 编辑lilo.conf
  编辑lilo.conf,使开机能选用新Kernel或旧Kernel启动,然后执行 lilo ?v ?v ?v,将编辑好的lilo.conf设置写入系统核心文件,最后执行sync;sync;sync将在内存中的数据写回硬盘,再执行shutdown ?r now 或reboot重新启动。
  
    如果顺利完成上面的步骤,且能用新的内核启动,基本上更新系统核心成功了。在编译核心的过程中,最麻烦的就是make config,如果乱选一通的话,回导致编译出来的核心不能启动。还有就是lilo.conf的多重启动写法,一定要对,它也是使用linux的基本功,一定要掌握。

      
为什么你不推荐人家使用GRUB哩~

要玩kernel configuration的话,GRUB可是个好帮手      
玩grub又得怎么玩?      
我用的是lilo,再者说,如果你用GRUB,同样修改相应的文件就行了!      
我在redhat 7.2下重新编译kernel 2.4.7.10怎么老是出错,是不是我没有redhat7.2的两张source disk的原因。
不过我没有执行make mrproper,它是干什么的?

/usr/src/linux下没有.config文件,一样可以make xconfig吗?如果不行,我拷哪个.config比较好,我的大概是赛杨500的CPU      
redhat带的source有问题,最好down个新的,我down了个2.4.18很好用。

BTW,kernel patch怎么打呀,我展开是一个大的文本文件,没有扩展名字。

hint,如果你是重新编译的kernel和原来的版本一样,你最好最加一个末版本好,这样make modules_install就不会删除原来的了,还可以区别原来的kernel,方法,修改/usr/src/linux/include/kernel/version.h