原创  RH9编译内核升级到2.6.18过程 (附dazuko2.3.4安裝於Redhat ES5) 收藏

环境:Redhat9.0 (VM下)
原来内核:2.4.20-8
升级内核版本:kernel 2.6.18
一、编译内核软件包:
1、kernel 2.6.18 内核源代码,能够在下面地址下载
http://www.kernel.org/pub/linux/kernel/v2.6/

2、module-init-tools
3、modutils-2.4.21-23.src.rpm
因为在VM下装所以要装2和3的软件包,不然编译2.6版本的会失败,真机上没实验过,不知道是不是要必需的,呵呵!公司的都是用FC4和BSD(偶也比较喜欢用BSD)
二、软件包安装
1、module-init-tools-3.0.tar.gz
tar -zxvf module-init-tools-3.0.tar.gz
.configure --prefix=/usr/local/module-init-tools
make
make install
2、modutils-2.4.21-23.src.rpm
rpm -ivh modutils-2.4.21-23.src.rpm
3、解压linux-2.6.18.tar.gz 并把源代码放到/usr/src目录下
tat -zxvf linux-2.6.18.tar.gz
cp -rf linux-2.6.18.tar.gz /usr/src
ln -s linux-2.6.18 linux
cd linux
三、编译
编译内核时您要对内核进行要编译那些模块和配置进去,所以要先对内核的配置要进行选择
内核的配置能够用以下的命令,
make config     (使用文本模式)
make menuconfig (使用文本菜单模式)

When you run make menuconfig, go to "Security Options", Enter, and look for "Default Linux Capabilities". Then press the space bar to change the * to <M> and save the config.

在安裝Dazuko2.3.4 For Redhat ES5 中出現以下(藍色字體)錯誤時,請使用上面紅色部分的方法來編譯.

verifying capabilities are not built-in... built-in :(
error: capabilities are built-in to the kernel:
       you will need to recompile a kernel with capabilities
       as a kernel module


make xconfig    (使用图像界面模式,XWINDOW下使用)
make oldconfig  (假如只在原来老的内核上修改些东西,那么使用该模式比较省事)
上面几条的命令功能都是相同的,区别在您配置内核显示的方式不同而已,您能够根据您的爱好进行选择   
内核的配置内容很的多,但要注意些东西:比如
#假如您在vmware下重新编译内核,硬盘用的是scsi的,以下选项必选:
#Device Drivers  --->;SCSI device support  --->;;   SCSI disk support
#Device Drivers  --->;SCSI device support  --->;SCSI low-level drivers  --->; ; BusLogic SCSI support
#Device Drivers  --->; Fusion MPT device support  --->;; Fusion MPT (base + ScsiHost) drivers和;   Fusion MPT misc device (ioctl) driver(这个要不要,不确定)
#注意:只能选模块方式,直接编译进内核,就出错,不知道为什么,这个浪费了我好多时间才找到,编译了几十次的成果。
#出错信息如下:No module mptbase found for kernel vmware。。。。。。。
#Device Drivers  --->; USB support  --->;;   USB Mass Storage support
#Device Drivers  --->; Networking support  --->;Ethernet (10 or 100Mbit)  --->; ;   AMD PCnet32 PCI support(看到文章说这个必选,应该是网卡吧)
上面的东西是前人的教诲,呵呵。2.6.18的版本跟上面有点区别,但大致相同,上面提到的东西就选上。
    我们用 make menuconfig  内核的配置,此时我们的目录是/usr/src/linux   
   
    make menuconfig
    每个选项前面的括号,可用空格选择
  选择相应的配置时,上面会有说明括号里代表的是什么意思
    Y和* 都代表编译进内核
    M    编译模块,但不编译进内核
    N    既不编译模块也不编译进内核
完成上面内核的配置后,接下来就是编译,下面的编译过程需要很多的时间,此时您能够去喝杯咖啡或活动下筋骨,回来时就能够了
make clean        --删除不必要的模块和文档 
make bzImage       --开始编译系统内核
make modules       --开始编译外挂模块
make modules_install   --安装编译完成的模块
make install             --安装编译好的内核

到此為止,事個內核2.6.18編譯就算完成了.


重起后有两个内核选择菜单,默认下是进入旧的内核,我们选择新的内核启动菜单就OK了!假如在编译或启动过程中碰到了什么问题能够看下面的FAQ,转别人的,呵呵


#make install
这里假如出现 "NO MODULE BUSLOGIC FOUND",解决方法
第1种方法:
编辑文档 /etc/modules.conf
将"alias scsi hostadapter BusLogic"这行注释掉,
即#alias scsi hostadapter BusLogic
保存 /etc/modules.conf,退出
# make install
第2种方法:
手动添加启动项
#depmod -a
#cp /usr/src/linux/System.map /boot/System.map-2.6.13
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.6.13
1. 编译完后不启动,报以下错误:
VFS: Cannot open root device "LABEL=/" or 0.0
>; Please append a correct "root=" boot option
>; kernel panic: VFS: Unable to mount root fs
假如是上面的错误,请确认您把如下选项配置进kernel
(1) 假如/使用了EXT3 文档系统,在内核中要加入EXT3的支持
(2)假如是IDE的硬盘必须要IDE的驱动加载
(3)在block devices--RAM disk support 中选取 Initial disk(initrd) support,有时在mount / 之前
需要加载一些模块,这些modules 被做到一个映像文档中--kernel-ver.img 中,这个文档位于/boot.举个例子,假如EXT3 的是以模块加载的话,在mount / 时就需要用到他,所以系统就在initrd.kernel-ver.img 中寻找他.
使用命令 mkinitrd initrd.kernel-ver.img kernel-ver 能够生成initrd.kernel-ver.img
2. 系统启动过程中加载iptables时报错的处理方法
修改/etc/rc.sysinit文档:
将其中任何的/proc/ksyms替换为/proc/kallsyms。
将其中任何的/proc/sys/kernel/modprobe 替换为/sbin/modprobe
在文档中mount -f /proc这一句下添加mount -f /sys
在文档中的action $"Mounting proc filesystem: " mount -n -t proc /proc /proc 这一句的下面添加 action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
修改/etc/fstab文档:
加入none /sys sysfs defaults 0 0
修改/etc/init.d/halt文档:
将halt_get_remaining函数内的awk '$2 ~ /^\/$|^\/proc|^\/dev/{next}改为
awk '$2 ~ /^\/$|^\/proc|^\/sys|^\/dev/{next}
创建目录:
mkdir /sys
然后重启机器,模块的问题应该解决的差不多了。
到这里编译工作顺利结束了.以上是本人在编译内核过程中碰到的问题连同解决方法,有些问题没有碰到,就没有写进去,希望大家给予补充指正,充分弘扬Linux精神!!!
3.RPM问题
进入编译好的内核后,和RPM相关的命令有些不能使用,并出现下列错误:
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
no packages
解决方法是执行“export LD_ASSUME_KERNEL=2.2.25”命令,也能够将其写入/etc/bashrc。

发表于 @ 2008年06月06日 16:19:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:使用腳本來啟動DOMINO服務. | 新一篇:Red hat ES5 中加載網絡共享目錄跟大家一起分享

  • 发表评论
  • 评论内容:
  •  
Copyright © hucool
Powered by CSDN Blog