zoukankan      html  css  js  c++  java
  • linux 内核升级 转

    inux 内核升级 2011-03-25 23:13:28 
    
    
    
    分类: LINUX
    
    
    
    因要测试一些软件,需要2.6.30以上的内核,安装好CentOS 5.5,内核是2.6.18-194.el5.这次的升级还算比较顺利,具体的过程如下:
    [root@localhost ~]# uname -r
    2.6.18-194.el5
    1.下载linux-2.6.30内核包到/usr/src目录
    cd /usr/src
    wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.gz
    tar -xzvf linux-2.6.38.tar.bz2 -C /usr/src
    cd linux-2.6.38
    make mrproper   清除环境变量,即清除配置文件
    make menuconfig 在菜单模式下选择需要编译的内核模块:
    
    networking support—>networking options—>network packet filtering framework(netfilter)
    
    (1).core netfilter configuration
    A 勾中”Netfilter connection tracking support”   -m state相关模块是依赖它的,不选则没有。
    B 将netbios name service protocal support(new)    编译成模块,不然后面升级iptables后启动时会出错
    C 勾中“Netfilter Xtables support (required for ip_tables)”
    (2).IP: Netfilter Configuration
    A 将 “IPv4 connection tracking support (require for NAT)” 编译成模块。
    B 勾中IP tables support (required for filtering/masq/NAT) 。
    C 将 “Full NAT” 下的 “MASQUERADE target support” 和 “REDIRECT target support” 编译成模块
    
    如果要安装iotop工具,在编译内核的时候一定要把:General setup ——Enable per-task storage  I/O accounting这个选项选上。
    
    
    (3).其它模块可以根据自己的需要进行选择,若不懂可以参考内核配置手册.
    
    如果是LVM文件系统 需要注意的是:在2.6.xx版的内核中在配置文件中有部分配置需要手动修正:
    
    CONFIG_SYSFS_DEPRECATED=y
    
    CONFIG_SYSFS_DEPRECATED_V2=y
    
    否则在使用LVM的linux系统下,内核编译成功但是会提示找不到VolGroup00等错误,并直接导致内核启动失败,文件系统挂载出错。
    
    开始升级:
    
    make clean   确保所有东西均保持最新状态.
    make bzImage   生成内核文件
    make modules 编译模块
    make modules_install 安装模块
    make install   安装
    
    
    2.并把default=1改为default=0
    [root@localhost ~]# cat /etc/grub.conf
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/rootvg/rootvol
    #          initrd /initrd-version.img
    #boot=/dev/sda
    default=0
    
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.38)
            root (hd0,0)
            kernel /vmlinuz-2.6.38 ro root=/dev/rootvg/rootvol
            initrd /initrd-2.6.38.img
    title CentOS (2.6.18-194.el5)
            root (hd0,0)
            kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/rootvg/rootvol
            initrd /initrd-2.6.18-194.el5.img
                                              
    
    3.此步若没有操作,重启会报错”insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”,原因是重复了,根据网上查到的资料,2.6.x自编译内核会有这个小bug,我测试过不修改直接重启,虽然有报错,但仍然可以进入系统的.
    [root@localhost]cp /boot/initrd-2.6.38.img /tmp
    [root@localhost]cd /tmp/
    [root@localhost tmp]mkdir newinitrd
    [root@localhost tmp]cd newinitrd/
    [root@localhost newinitrd]zcat ../initrd-2.6.38.img |cpio -i
    [root@localhost newinitrd]vi init              删掉重复的如下两行:
    echo “Loading dm-region-hash.ko module”
    insmod /lib/dm-region-hash.ko
    
    [root@localhost newinitrd]# find .|cpio -c -o > ../initrd
    14765 blocks
    [root@localhost newinitrd]# cd ..
    [root@localhost tmp]# gzip -9 < initrd > initrd-2.6.38.img
    [root@localhost tmp]# ls
    gconfd-root   initrd   initrd-2.6.38.img   mapping-root   newinitrd   scim-panel-socket:0-root
    [root@localhost tmp]# mv /boot/initrd-2.6.38.img /home/
    [root@localhost tmp]# cp initrd-2.6.38.img /boot/
    [root@localhost tmp]#reboot
    
    4.重启成功后,再看看内核,是2.6.38,ok了。
    [root@localhost ~]# uname -r
    2.6.38
    
    
    
    --------------------------------------------------------------------
    
    先需要升级到 Linux 2.6.32, 由于 2.6.3x 的内核编译步骤基本相似,所以本文标题写的是 2.6.32x .
    
     
    
    (1) 下载标准内核 2.6.32,并解压至目录下,如 /usr/src
    
    (2) make menuconfig 选择相关内核模块
    
          cd /usr/src/linux-2.6.32
    
          cp /usr/src/kernels/2.6.18-194.el5-x86_64/.config .  <将当前内核的 .config 复制过来>
    
          make menuconfig
    
          注意一定要选择 General Setup-> enable deprecated sysfs features to support old...
         (即生成的新 .config文件中的 CONFIG_SYSFS_DEPRECATED_V2=y ),若不如此选择,编译完内核重新启动时会报错“mount:could not find filesystem ‘/dev/root’。 这是新版内核特有的选项,老内核没有 CONFIG_SYSFS_DEPRECATED_V2 选项,老内核的.config也和新内核不一样,但是使用新内核的 make menuconfig 产生的 .config 不仅包含了复制过来的 .config 文件中的相关选项,还包含一些新选项.
    
    networking support—–>networking options—->network packet filtering framework(netfilter)
    
    1 —->core netfilter configuration
    A 勾中”Netfilter connection tracking support”  -m state相关模块是依赖它的,不选则没有。
    B 将netbios name service protocal support(new)编译成模块,不然后面升级iptables后启动时会出错
    C 勾中“Netfilter Xtables support (required for ip_tables)”
    
    2 —–>IP:Netfilter Configuration
    A 将 “IPv4 connection tracking support (require for NAT)” 编译成模块。
    B 勾中IP tables support (required for filtering/masq/NAT) 。
    C 将 “Full NAT” 下的 “MASQUERADE target support” 和 “REDIRECT target support” 编译成模块
    
    这个地方也可以下载热点内核标准配置文件
    1.wget http://vbets.googlecode.com/files/config
    2.mv config .config
    
         保存 .config
    
    (3) 编译内核
    make clean   确保所有东西均保持最新状态.
    make bzImage   生成内核文件
    make modules 编译模块
    make modules_install 安装模块
    make install   安装
    
    (4) 修改/etc/grub.conf,选择新内核,重启系统。
    
  • 相关阅读:
    (转载)openwrt nginx
    *** 竞赛中的各种低级错误,及编程常见错误小结 ***
    信息学奥赛辅导经验谈 & 问题教学法中的学生思维能力培养
    数学&数论的一些题
    信息学竞赛中的一些经典思维 (题)
    从权值线段树到主席树
    浅谈莫队算法
    CSP-S 2019提高组训练 服务器需求
    NOIP2019 PJ 对称二叉树
    NOIP2017 PJ 跳房子 —— 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/zengkefu/p/4808151.html
Copyright © 2011-2022 走看看