红联Linux门户
Linux帮助

Linux系统内核升级与裁剪

发布时间:2011-05-22 21:49:04来源:红联作者:halazi100
[i=s] 本帖最后由 halazi100 于 2011-12-25 23:53 编辑 [/i]

注:请慎重操作
1》升级前准备

1、确认目前版本,避免重复升级

[root@free root]# uname -r

2、下载系统内核

版本确认后,若有升级必要,就要下载系统内核

推荐到www.kernel.org或www.Tux.org下载。注意linux的内核有测试版和正式版。

3、了解硬件环境,知道自己的计算机内究竟安装了哪些接口设备,每项硬件资源所使用的系统资源,尤其是适配器、控制卡使用的IRQ、DMA以及I/O Address。

4、解压内核文件,以linux-2.6.40.tar.gz为例

#tar zxvf linux-2.6.40.tar.gz

#cp -R linux-2.6.40 /usr/scr/my-2.6.40-kernel 将解压后的linux目录复制到存放内核源码的/usr/src目录,并将目录名改为my-2.6.40-kernel

#cd /usr/src

#ln -s my-2.6.40-kernel linux 将my-2.6.40-kernel目录链接到linux,到此准备就绪,开始升级内核,并编译内核文件。

2》 内核的定制

切换到放置内核源代码的目录# cd /usr/scr/linux

首先清除内核源代码树#make mrproper

选择定制方式:1、文本交互方式 #make config

2、文本窗口交互方式 #make menuconfig

3、图形窗口交互方式 #make xconfig ←使用图形界面进行设置

4、使用现有配置文件 #make oldconfig

以图形界面进行设置为例:#make xconfig

立即会出现Linux Kernel Configuration对话框。单击任一个分类的按钮,就会出现该类的对话框。对话框中的问题就是系统功能的设置,必须依据实际情形回答。在每个问题的前面都会有三个选项:y即yes表示启动该项功能;m即module,表示该项功能可编译成功能模块,然后以外挂的方式加载,无需在编译时放入系统内核,并非所有的功能都可模块化,假如该项功能无法编译成模块,则此处的选项会变成“-”号;n即no表示关闭该项功能。某些功能彼此之间存在着关联性,当关键性功能的选项被关闭后,相关的功能便不起作用,此时这些相关功能的字体颜色都会变成灰色,表示不能选择或无法设置。

3》内核与模块编译与安装

1、生成依赖关系 #make dep

2、编译内核 #make bzImage

3、编译模块 #make modules

4、安装模块 #make modules_install

5、安装新编译的内核 #make install

4》查看更新配置的文件

可以查看新内核 #ls /boot/vmlinuz*

5》模块的安装与管理

1、编译内核模块 #make modules

2、安装已编译模块 #make modules_install

#depmod -a ←安装编译完成的模块

编译完成的系统内核bzImage或zImage文件,放置于/usr/src/linux/arch/i386/boot目录下。执行make bzImage命令是为了避免所编译出来的内核过于庞大,而导致编译过程失败;使用make zImage命令进行编译时产生的内核较大,但在系统启动时的性能会较好。

有时因为外挂模块的关系,必须重建initrd文件,执行mkinitrd /boot/initrd (内核版本)命令即可,如:mkinitrd /boot/initrd 2.6.40 ;用户可以执行make zdisk(或make bzdisk)命令编译系统内核,并创建引导盘。

6》更换内核

编译内核之后并不代表一切工作都已经完成,还需要更换新的内核。由于新的系统内核可能导致系统无法启动,所以请先备份文件与重要数据,并准备好linux引导盘以防万一。建议先将/boot目录下的所有文件做备份,并用mkbootdisk命令制作引导盘。

可按以下步骤更换系统内核:

[root@free linux]# cd /boot

[root@free root]# rm System.map

[root@free root]# rm vmlinuz

[root@free root]# mv /usr/src/linux/System.map System.map

[root@free root]# mv /usr/src/linux/arch/i386/boot/bzImage./vmlinuz

如果用Grub来管理开机,就用文本编辑器修改/boot/grub/menu.lst文件:

default=0 #默认启动第一项

timeout=3 #启动菜单选择等待时间,超过此时间系统自动启动默认项
splashimage=(hd0,8)/boot/grub/splash.xpm.gz #指定系统启动画面
hiddenmenu #隐藏菜单选择项
title Linux(new) #添加系统启动菜单选择项Linux(new)
root (hd0,8) #根目录位于第一硬盘,编号为8的分区
kernel /boot/vmlinuz #指定启动内核
initrd /boot/initrd.img #指定系统启动时初始化文件
title Linux(Old) #系统启动菜单选择项Linux(Old),原来的系统启动项,建议先保留
root (hd0,8) #根目录位于第一硬盘,编号为8的分区
kernel /boot/vmlinuz-2.6.35.11-83.fc14.x86_64 ro root=UUID=7a610e29-e8f4-4851-8587-6a8c323ed87b rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=zh_CN.UTF-8 KEYTABLE=us rhgb quiet

#指定启动内核及版本


initrd /boot/initramfs-2.6.35.11-83.fc14.x86_64.img
文章评论

共有 27 条评论

  1. wd152 于 2013-01-10 19:55:04发表:

    定一个,,,,,

  2. adlink 于 2012-12-21 13:10:57发表:

    好书学习中

  3. gky2009514 于 2012-12-07 13:22:17发表:

    新手完成任务,求下书籍~

  4. linuxtro 于 2012-05-31 14:17:37发表:

    不错啊

  5. Lee2012 于 2012-02-15 15:42:39发表:

    学习

  6. qwyan456 于 2012-02-07 00:32:44发表:

    有点晕菜,学习中。

  7. haiwawa 于 2011-12-16 16:07:01发表:

    看看 学习

  8. css8899.hi 于 2011-08-26 15:03:49发表:

    锟斤拷锟斤拷:
    不错啊
    css8899.hi 发表于 2011-8-26 15:03

  9. css8899.hi 于 2011-08-26 15:03:30发表:

    不错啊

  10. css8899.hi 于 2011-08-26 15:03:10发表:

    :0)1

  11. Enbiting 于 2011-08-17 17:24:24发表:

    顶一下

  12. boysgc 于 2011-08-03 15:24:20发表:

    有机会,试试=====>虚拟机

  13. Louis.Hu 于 2011-07-13 23:15:18发表:

    LZ 我要下我要下

  14. wbc2205 于 2011-07-09 11:02:04发表:

    看着晕眩!

  15. lixupeng 于 2011-07-02 13:40:16发表:

    mark收藏

  16. a_lee 于 2011-06-30 14:34:41发表:

    看不明白

  17. caroline0712 于 2011-06-15 23:49:05发表:

    谢谢楼主分享 感谢!

  18. dllzg 于 2011-06-15 22:07:46发表:

    xian shou le

  19. ybb896 于 2011-06-09 21:50:30发表:

    不明白啊!!!!

  20. okzokz123 于 2011-06-09 20:10:24发表:

    1 tar xjf XXXX.tar.bz2 (解压这个不多说了只是注意你下载的内核压缩属性以修改解压参数)
    2 ln -s xxxx xxx (此后操作在xxx里进行)
    3 make mrproper (删除所有配置文件和*.o文件)
    4 make xconfig 或 make gconfig (编译前的配置)
    5 make dep (设定依赖关系)
    6 make clean (确定源代码没有文件)
    7 make (编译源码 非常耗时可以出去打酱油了)
    或7.1=make bzImage
    7.2=make modules
    8 make modules_install (安装编译好的模块)
    9 depmod -a (创建模块的连接)
    10 cp System.map /boot/System.map-xxxx (xxxx为版本号)
    11 cp arch/i386/boot/bzImage /boot/vmlinuxz (X64的在arch/x86_64/boot 安装启动压缩内核镜像)
    12 cd /boot/ (此时改变工作路径到boot)
    13 new-kernel-pkg --mkinitrd --depmod --install 2.6.35.4 必须与/lib/modules/目录下相应的新内核文件夹同名(创建新初始化ram镜像文件)
    ubuntu: mkinitramfs -k -o /boot/initrd-2.6.35.4.img 2.6.35
    14 make install (回到原make目录即前面的XXX目录下再次安装加入vmlinux-2.6.35.4并自动生成启动菜单)
    15 reboot (你可以使用新内核的系统了)

  21. Gaga_Yan 于 2011-05-31 13:37:21发表:

    (6)m:b

  22. Gaga_Yan 于 2011-05-31 11:18:26发表:

    oh ,very good

  23. linjunqian 于 2011-05-28 20:01:17发表:

    挺复杂的,学习

  24. your180 于 2011-05-25 08:19:09发表:

    不懂

  25. Growth兆 于 2011-05-23 09:47:54发表:

    感谢halazi100的分享,本贴加入到论坛顶置的Linux应用贴中

  26. sloepx 于 2011-05-23 08:30:48发表:

    拜读好文

  27. q7262395 于 2011-05-23 08:08:14发表:

    我现在有内核恐惧症,