Linux内核升级 (2.4 to 2.6 OR 2.6.x to 2.6.y)

本文详细介绍了如何在Linux系统中下载并编译2.6内核版本,包括必要的软件准备、配置和编译步骤,以及如何启动新内核的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、软件的下载

启动Linux系统,并用根用户登录,进入终端模式下。

①、查看Linux内核版本

# uname -a

如果显示的是低于你要升级的版本,则可以继续下面的工作。

②、下载Linux2.6内核源代码

download website:http://www.kernel.org/pub/linux/kernel/v2.6/

③、下载软件

下载源码中Document/Changes中要求的版本或更高级的版本,可以通过Document/Changes中个版本要求之后的命令进行查看现有系统的软件版本是否符合。(注:这一点是必须的,否则在编译内核过程中会出现很多的问题!这些软件包很难找的,但是多花点时间是没有问题的)

二、软件的升级

①、安装module-init-tools工具

在/usr/src目录下,依次执行下列命令:

# tar -jvxf module-init-tools-3.2.tar.bz2  (解压module-init-tools)
# cd module-init-tools-3.2  (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf

②、安装xxx.rpm包,使用如下命令:

#rpm -ivh xxx.rpm

③、安装xxx.tar.bz2包,使用如下命令:(一般情况)

# tar -zxvf xxx.tar.bz2
# cd xxx
# ./configure --prefix=/ (如果目录中有configue文件的话,就先运行这个,否则跳过)
# make (编译软件包)
# make install(安装软件包)

④、安装e2fsprogs-xxx.tar.bz2包,使用如下命令:(特别注意其和③不一样)

# tar -zxvf e2fsprogs-xxx.tar.bz2
# cd e2fsprogs-xxx
# ./congfigure --prefix=/
# make(编译软件包)
# make check(本软件包自带测试套件,以确定它是否编译正确。如果你想运行测试套件,执行该命令)
# make install(安装本软件包的大部份内容)
# make install-libs(安装共享库)

⑤、将内核源码进行解压

将内核源码拷贝到/usr/src下:

# cd /usr/src
# rm -fr linux(删除原有的链接文件)
# tar -zxvf linux-2.6.xxx.tar.bz2(解压内核源码)
# ln -s linux-2.6.x linux(将linux设置为linux-2.6.xxx的链接)

三、配置工作

①、配置内核。

# cd linux-2.6.xxx  (进入到/usr/src/linux-2.6.xxx目录下)
# 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 mappersupport”;

Device Drivers--->Graphics support,一定要选上“ Support for frame. buffer devices”;

Device Drivers--->USB support--->选上“USB Mass Storage support”(如果是在实环境中,想要更多USB支持,就全选吧。我的是在虚拟机中,用不着了)

Device Drivers--->;Network device support--->Ethernet (10 or 100Mbit)---><*>AMD PCnet32 PCI support

(3)File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)

Second extended fs support

Ext2 extended attributes

Ext2 POSIX Access Control Lists

Ext2 Security Labels

Ext3 journalling file system support

Ext3 extended attributes

Ext3 POSIX Access Control Lists

Ext3 Security Labels

JBB (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

(我的机器就是在重启之后出现第三种错误,进不去系统,郁闷死,只好重装了~~~如果依照本文做完所有步骤,当你重启Linux系统后,若不幸进不去2.6.xxx内核,你会发现你的出错信息就是上面三种了~~~哈!)

(4)如果你在vmware下编译内核,硬盘用的是scsi的,以下三个选项必选:

Device Drivers ---><*>SCSI device support(此项不选的话,下面两项就选择不上)

Device Drivers ---><*>SCSI device support ---><*>SCSI disk support

Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI support

四、编译工作

①、编译内核

在/usr/src/linux-2.6.xxx目录下,执行以下命令即可编译。编译需要一段时间,给自己倒杯茶耐心等候吧!

# make dep  (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean  (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage  (注意大小写。这一步才是真正编译内核)
  内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make zImage编译,内核很大的话,系统会提示你使用make   bzImage命令来编译,所以我直接用make bzImage来编译。
# make modules  (编译可加载模块)
# make modules_install  (安装可加载模块)
  安装成功后,系统会在/lib/modules目录下生成一个2.6.xxx子目录,里面存放着新内核的所有可加载模块。
# 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.xxx/drivers/scsi/BusLogic.o  /lib/modules/2.6.xxx/kernel/drivers/scsi

不过别忘记,复制过后再执行一下make install。这一步若卡住了,下面的都无法进行。

五、启动新内核

①、将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:

# cp  /usr/src/linux-2.6.xxx/arch/i386/boot/bzImage   /boot/vmlinuz-2.6.xxx    
# cp  /usr/src/linux-2.6.xxx/System.map   /boot/System.map-2.6.xxx
# cd  /boot  (进入boot目录)
# rm –rf  System.map  (删除原来的连接)    
# ln –s System.map-2.6.xxx  System.map   (重新建立连接)  

②、修改Grub启动管理器

如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)

在/boot目录下,执行以下命令:

# new-kernel-pkg --mkinitrd --depmod --install 2.6.xxx (这时候你的/boot下会生成一个initrd-2.4.xxx.img,并且你的grub.conf文件也作了相应更改)
注意:
# df  (查看根目录在那个分区,下一步要用到。注意,这里根分区不是boot的那个50M的分区,而一般是你最大的那个分区,也就是“/”,千万不要搞错。我的为 /dev/hda2)
# vi /boot/grub/grub.conf 
 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值