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

时间: 2024-09-17 03:53:18

Linux内核升级指南的相关文章

Linux内核升级及内核编译

一:Linux内核: 操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件.一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割.计算机的硬件,含有外围设备.处理器.内存.硬盘和其他的电子设备组成计算机的发动机.但是没有软件来操作和控制它,自身是不能工作的.完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为"内核",也可以称为"核心".Linux内核的主要模块(或组件)分以下几个部分:存储管理.CPU和进程管理.文件系统

linux内核升级(ubuntu12.04从3.13.0升级到3.4.0 )

花了一天的时间,终于把ubuntu12.04 的linux内核版本从3.13.0升级到3.4.0 升级后,系统更加稳定. 具体步骤:# wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.gz# tar zxvf linux-3.4.tar.gz -C /usr/src# cd /usr/src/linux-3.4# make menuconfig# make# make modules_install# cp arch/

介绍linux 2.6.9-42内核升级到linux 2.6.26-42的方法

这篇升级Linux内容的文章,是基于Red Hat的Linux版本,从linux 2.6.9-42内核升级到linux 2.6.26-42的方法,对于在实际使用过程中需要升级内核版本的玩家,能提供一个不错的参考方法,以供借鉴于学习之用. 在这里且不说版本的不同与区别,它所支持的功能.相信用过LINUX的人都希望自己所用的系统,内核是最新的了.接下来就来就给大家介绍linux2.6.9-42升级linux2.6.26-42的方法.首先来看下当前系统的版本吧: 接下来就开始吧,把所需文件&http:

在Ubuntu上升级到Linux内核3.11.6

Ubuntu 13.10已经发布,不过它的内核可不是最新的.当然坚持Ubuntu 13.10当前内核不是一件坏事.事实上.不特别建议升级超出你的Linux发行版的官方仓库测试过的特定版本. 但另一方面,如果你不害怕一再折腾Ubuntu,那么你可以试试升级到最新Ubuntu支持的Linux内核.你会发觉最新的内核总是有改善的.修补了漏洞和添加特性的. 所以,如果你的电脑有些运行不正常,那么更新Linux内核可能就能修复.但记住,当你升级时你也有可能导致系统崩溃. 如果你不再惧怕,和我一起永往直前吧

关于Linux内核读取磁盘序列号的研究

一向的观点就是"别在内核里面处理字符串"!事实上,确实应该如此! Linux内核的块设备驱动有能力读取磁盘的序列号,这个数据存储在磁盘的控制芯片ROM里面.内核应该以怎样的形式将这个序列号呈现给调用者呢?我们ls一下这个目录: /dev/disk/by-id ll /dev/disk/by-id/ ... lrwxrwxrwx 1 root root 9 10月 17 10:11 scsi-SATA_ST3500413AS_Z2A2AGQA -> ../../sdb 可以看到,一

Ubuntu清理老旧无用Linux内核文件教程

  在 Ubuntu 环境中,我们有很多种方式可以升级内核. Ubuntu 桌面版本可以在每天自动更新时升级内核,Ubuntu Server 可以使用 unattended-upgrade 自动更新的方式来升级内核,当然还可以使用 apt-get 或 aptitude 来同时兼容 Ubuntu 桌面或服务器版本. 随着使用时间的推移,被替换下来的老旧内核版本将会占用一定的磁盘空间而造成浪费.每个内核映像文件和相关的模块文件/header(头文件)会占用大约 200 – 400 M 的磁盘空间,如

重新编译Linux内核必要性及其准备工作

内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr /src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码.全世界任何一个软件工程师都可以将自己认为优秀的 代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用.而Linux的内核则是这些特点的最直接的代表. 想象一

《奔跑吧Linux内核》之处理器体系结构

本文摘自人民邮电出版社异步社区<奔跑吧Linux内核> 第1章 处理器体系结构 京东购书:https://item.jd.com/12152745.html 试读地址:http://www.epubit.com.cn/book/details/4835本章思考题 1.请简述精简指令集RISC和复杂指令集CISC的区别. 2.请简述数值0x12345678在大小端字节序处理器的存储器中的存储方式. 3.请简述在你所熟悉的处理器(比如双核Cortex-A9)中一条存储读写指令的执行全过程. 4.请

《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #1 如何获取Linux内核

HACK #1 如何获取Linux内核 本节介绍获取Linux内核源代码的各种方法. "获取内核"这个说法看似简单,其实Linux内核有很多种衍生版本.要找出自己想要的源代码到底是哪一个,必须首先理解各种衍生版本的意义. 接下来将简单介绍Linux内核的开发模式,并分析各种衍生版本在其中所处的地位,然后介绍获取这些衍生版本的源代码的方法. 内核的种类 想要获取正确的Linux内核源代码,首先必须了解Linux内核的开发模式. Linux内核是由多个开发者以分散型的模式进行开发的.这里出