zoukankan      html  css  js  c++  java
  • Linux内核升级指南

    一、升级背景

    前段时间公司有个项目用到了短信收发的业务,采购了两台16口的Wavecom USB短信猫设备,服务器操作系统是ReadHat5.4,内核2.6.18,插上设备后,操作系统无法自动识别该设备,原因是没有预装该设备USB转串口的驱动程序,可能是只有这个产品不能识别,因为曾经我用过单口的GSM MODEM短信猫测试,可以自动识别出来。后来从供应商处得到信息,说是他们这个产品比较新,版本低的内核没有预装新的USB转串口驱动程序,但现在2.6.32以上内核都自带了USB转串口的驱动,所以最后通过升级系统内核的方式解决了这个问题。


    二、升级测试环境

    宿主机:Window xp 

    虚拟机:VM8.0.2

    OS:CentOS 5.8 Final

    内核(升级前):2.6.18

    所有操作步聚使用root权限



    三、升级步聚

    1、下载内核

    www.kernel.org下载一个新版本内核源码,当前最新稳定版为3.3.4。这里下载的是:http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.13.tar.bz2



    2、解压内核文件

    linux-2.6.35.13.tar.bz2上传到/usr/local/src目录下,使用tar -jxvf linux-2.6.35.13.tar.bz2命令解压,得到linux-2.6.35.13目录


    3、清除文件

    cd linux-2.6.35.13(下面所有操作都是在此目录,除非切换了新的目录)

    make distclean 

    清除以前编译内核生成的所有文件(除了清除可执行文件和目标文件外,configure所产生的Makefile也会清除掉)

    如果是第一次编译,这步聚可以省略


    4、复制配置文件

    将系统默认的内核配置文件复制到linux-2.6.35.13目录下,并命名.config

    cp /boot/config-2.6.18-308.el5 .config



    5、内核配置(make menuconfig)

    内核配置,有三种方式:

    a)、make config:基于文本的最为传统的配置界面,不推荐使用

    b)、make menuconfig:基于文本选单的配置界面,字符终端下推荐使用。

    注意:使用make menuconfig 需要安装ncurses(yum -y install ncurses-devel) ,如果未安装会报如下错误:


    解决方式:在联网的情况下,在终端输入yum -y install ncurses-devel,自动安装ncurses-devel包,如下图所示:


    c)、make xconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用

    注意:如果要用make xconfig,则要先安装QT3开发包,并配置。如果未安装会报如下错误:


    解决方案:安装QT3开发包,再执行make xconfig。

    1)、以make menuconfig为例配置内核编译环境,在终端输入make menuconfig,进入如下图所示界面:


    2)、在上图,用上下键移动到菜单倒数第二项(Load an Alternate Configuration File),再用左右键移动到(Select),按回车进入下图界面:


    3)、在上图,移动光标至(OK),按回车键,保存配置文件。回到下图所示界面:


    4)、在上图中,用上下键移动到菜单最后一项(Save an Alternate Configuration File),用左右键移动到(Select),按回车键,保存配置文件。


    5)、选中(Exit),按回车键,退出配置。


    6、修改.config配置文件

    在.config文件搜索CONFIG_SYSFS_DEPRECATED_V2,会发现# CONFIG_SYSFS_DEPRECATED_V2 is not set这一行,将该行修改为CONFIG_SYSFS_DEPRECATED_V2=y。假如不修改该行,在升级重新启动后会报如下的错,导致启动失败:

    Volume group "VolGroup00" not found
    Unalbe to access resume device (/dev/VolGroup00/LogVol00)
    mount: could not find filesystem '/dev/root'
    setuproot:moving /dev failed: No such file or directory
    setuproot:error mounting /proc: No such file or directory
    setuproot:error mounting /sys: No such file or directory
    switchroot: mount failed: No such file or directory
    Kernel panic - not syncing:Attempted to kill init!

    7、编译内核

    make all

    大概需要30至60分钟左右,具体时间看机子的性能


    8、编译模块

    make modules_install


    9、安装

    make install


    10、修改initrd文件

    假如升级重启后会报“insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”错误,这是由于initrd里面重复加载dm-region-hash.ko这个模块了,因此需要修改生成的initrd文件(不是所有的机器都会出现这个错),修改的方式如下:

    a)、解压initrd文件
    #cp /boot/initrd-2.6.35.13.img /tmp
    #cd /tmp
    #ls
    initrd-2.6.35.13.img
    #mkdir newinitrd
    #cd newinitrd
    #zcat ../initrd-2.6.35.13.img | cpio -i
    #ls



    b)、编辑init文件,删除重复中的其中两行

    c)、重新打包内核文件
    #find . | cpio -c -o > ../initrd
    #cd ..
    #gzip -9 < initrd > initrd-2.6.35.13.img 

    d)、将内核文件( initrd-2.6.35.13.img)重新复制到/boot目录下

    #cp  initrd-2.6.35.13.img /boot


    11、修改grub.conf,让引导程序默认从新的内核启动

    vi /boot/grub/grub.conf

    grub.conf文件如下图所示:

    将上图中将的default=1改成default=0


    12、重启系统

    #uname -r

    2.6.35.13


  • 相关阅读:
    使用Angular CLI生成 Angular 5项目
    asp.net core 2.0 web api + Identity Server 4 + angular 5 可运行前后台源码
    依赖反转原则DIP 与使用了Repository模式的asp.net core项目结构
    Git基本命令 -- 别名 + 忽略 + 推送
    Git基本命令 -- 历史
    多线程,论多核时代爱恨情仇
    凛冬将至,用几款特效暖暖身
    HTML5游戏开发引擎,初识CreateJS
    详解设计模式之工厂模式(简单工厂+工厂方法+抽象工厂)
    详解设计模式六大原则
  • 原文地址:https://www.cnblogs.com/xyang0917/p/4172529.html
Copyright © 2011-2022 走看看