文档库 最新最全的文档下载
当前位置:文档库 › linux内核升级

linux内核升级

一、准备工作
带#号的行都是要输入的命令行,所有命令行都在终端里输入.启动Linux,用根用户登录,进入终端模式

1、查看Linux内核版本
# uname -a
如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,如果显示的是2.4.x,进行下一步

2、下载2.6.18内核源码

3、下载内核升级工具
(1)下载module-init-tools-3.2.2.tar.bz2
(2)下载mkinitrd-4.1.18-2.i386.rpm
(3)下载lvm2-2.00.25-1.01.i386.rpm
(4)下载device-mapper-1.00.19-2.i386.rpm



二、配置工作

4、将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下

5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令;
# cd /usr/src(进入/usr/src目录,如果已经在/usr/src目录,可不执行该命令)
# rm –rf linux(删除linux文件夹,如果内核以前从未编译过,则没有这个文件夹,可不执行该命令)
# tar jvxf linux-2.6.18.tar.bz2(解压新内核)
# ln -s linux-2.6.18 linux(重新生成linux文件夹)

6、安装module-init-tools工具,在/usr/src目录下,依次执行下列命令;
# tar jvxf module-init-tools-3.2.2.tar.bz2(解压module-init-tools)
# cd module-init-tools-3.2.2(由/usr/src目录进入module-init-tools目录)
#./configure --prefix=/
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf

7、安装另外三个升级工具,回到/usr/src目录下,依次执行下列命令;
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
如果不更新以上几个升级包,后面编译内核时会提示以下错误;
mkinitrd failed
make[1]; *** [install] Error 1
make; *** [install] Error 2

8、配置内核选项
# cd linux-2.6.18(进入/usr/src/linux-2.6.18目录)
# make mrproper(确保源代码目录下没有不正确的.o文件)
# make menuconfig(配置内核选项)
此时会出现一个图形界面,列出了所有的内核配置选项,有的选项下还有子选项,可以用方向键选择,用Y键确定,大多数选项默认就行,以下几个选项必须选择
(1)Loadable Module support中选上"Module unloading"和"Automatic kernel module loading"
(2)Device Drivers--->Block Devices中选上"Loopback device support";
Device Drivers--->Multi-device support(RAID and LVM)中选上"device mapper support";
Device Drivers--->Graphics support中选上"Support for frame buffer devices";
Device Drivers--->USB support中选上"USB Mass Storage support"(先将该项依赖项设为y,如果是在实环境中,想要更多USB支持,就全选上);
Device Drivers--->Network device support--->Ethernet(10 or 100Mbit)中选上"AMD PCnet32 PCI support"
(3)File system--->
Second extended fs support
Ext2 extended attributes
Ext2 POSIX Access Control Lists
Ext2 Security Labels
Ext3 journalling file s

ystem support
Ext3 extended attributes
Ext3 POSIX Access Control Lists
Ext3 Security Labels
JBD (ext3) debugging support
File system--->DOS/FAT/NT Filesystems中选上"NTFS file system support"
注意:
ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持直接编译进内核,在你reboot时机器就会当掉,出现如下错误信息:
kernel panic no init found ,try passing init = option to kernel
或者是:
VFS Cannot open root device "hdxy" or unknow-block(0,0)
Please append a correct "root=" boot option
kernel panic VFS Unable to mount root fs on unknown-block(0,0)
或者是:
mount error 19 mounting ext3
pivotroot; pivot_root(/sysroot,/sysroot/initrd) failed 2
umount /initrd/proc fail 2
Freeing unused kernel memory 244k freed
Kernel panic – not syncing No init found. Try passing init = option to kernel
(4)如果你在vmware下编译内核,硬盘用的是scsi的,以下三个选项必选:
Device Drivers---><*>SCSI device support
Device Drivers---><*>SCSI device support---><*>SCSI disk support
Device Drivers---><*>SCSI device support--->SCSI low-level drivers---><*>BusLogic SCSI support



三、编译工作

9、在/usr/src/linux-2.6.18目录下,执行以下命令:
# make dep(建立编译时所需的从属文件,如果内核从未编译过,此步可跳过)
# make clean(清除内核编译的目标文件,如果内核从未编译过,此步可跳过)
# make bzImage(开始编译)
内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage.如果用make zImage编译,内核很大的话,系统会提示你用make bzImage命令来编译
# make modules(编译可加载模块)
# make modules_install(安装可加载模块)
安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块.
# make install(安装新内核)
注意:make install的时候可能会出现如下错误信息
No module BusLogic found for kernel 2.4.12
mkinitrd failed
此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行).解决方式是直接将BusLogic.o文件复制过去:
# cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi
复制过后再执行一下make install,这一步若卡住了,下面的都无法进行



四、启动新内核

10、将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:
# cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
# cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18
# cd /boot(进入boot目录)
# rm –rf System.map(删除原来的连接)
# ln –s

System.map-2.6.18 System.map(重新建立连接)

11、修改Grub启动管理器
下面开始修改grub配置文件,在/boot目录下,执行以下命令;
# new-kernel-pkg --mkinitrd --depmod --install 2.6.18(这时候/boot下会生成一个initrd-2.6.18.img,并且grub.conf文件也作了相应更改)

***************************************************************************
以下非必要***************************************************************************

# df (查看根目录在哪个分区,注意,这里根分区不时boot的那个100M的分区,一般是最大的那个分区,也就是"/",千万不要搞错)
# vi grub/grub.conf
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root= LABEL=/
initrd /initrd-2.6.18.img
做两处修改:
(1)将default=1改为default=0(不改的话也可以,不过重启之后会默认进入2.4内核)
(2)将kernel行的"LABEL=/"换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,下为修改后的grub.conf文件,不明之处可以对照修改
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.18)
root (hd0,0)
kernel /vmlinuz-2.6.18 ro root=/dev/hda2
initrd /initrd-2.6.18.img
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img



升级后可能问题

无法安装rpm包:
# vi /usr/lib/rpm/macros
查找
%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb
修改
%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb private

无法挂载u盘:
Obviously something was not installed properly, make sure
/lib/modules/2.6.18/kernel/fs has:

nls--nls_iso8859-1.ko
nls--nls_cp437.ko
vfat--vfat.ko
fat--fat.ko

Try the follwoing:

modprobe nls_iso8859-1
modprobe nls_cp437
modprobe vfat
modprobe fat

Then:
mount -t vfat /dev/sdb1 /mnt/usb

小企鹅输入:
rpm -e miniChinput
rpm -ivh fcitx.rpm
cd /usr/bin
ln -sf fcitx chinput

相关文档
相关文档 最新文档