【转】 Linux内核升级指南

摘要:
1)、以makemenuconfig为例配置内核编译环境,在终端输入makemenuconfig,进入如下图所示界面:2)、在上图,用上下键移动到菜单倒数第二项,再用左右键移动到,按回车进入下图界面:3)、在上图,移动光标至,按回车键,保存配置文件。

【转】 Linux内核升级指南

转自:http://blog.csdn.net/xyang81/article/details/7522032

一、升级背景

前 段时间公司有个项目用到了短信收发的业务,采购了两台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权限

【转】 Linux内核升级指南第1张

三、升级步聚

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

【转】 Linux内核升级指南第2张

2、解压内核文件

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

【转】 Linux内核升级指南第3张

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

【转】 Linux内核升级指南第4张


5、内核配置(make menuconfig)

内核配置,有三种方式:

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

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

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

【转】 Linux内核升级指南第5张

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

【转】 Linux内核升级指南第6张

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

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

【转】 Linux内核升级指南第7张

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

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

【转】 Linux内核升级指南第8张

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

【转】 Linux内核升级指南第9张

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

【转】 Linux内核升级指南第10张

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

【转】 Linux内核升级指南第11张

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

6、修改.config配置文件

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

  1. Volumegroup"VolGroup00"notfound
  2. Unalbetoaccessresumedevice(/dev/VolGroup00/LogVol00)
  3. mount:couldnotfindfilesystem'/dev/root'
  4. setuproot:moving/devfailed:Nosuchfileordirectory
  5. setuproot:errormounting/proc:Nosuchfileordirectory
  6. setuproot:errormounting/sys:Nosuchfileordirectory
  7. switchroot:mountfailed:Nosuchfileordirectory
  8. Kernelpanic-notsyncing:Attemptedtokillinit!

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

【转】 Linux内核升级指南第12张
b)、编辑init文件,删除重复中的其中两行
【转】 Linux内核升级指南第13张

c)、重新打包内核文件
#find . | cpio -c -o > ../initrd
#cd ..
#gzip -9 < initrd >initrd-2.6.35.13.img
d)、将内核文件(initrd-2.6.35.13.img)重新复制到/boot目录下

#cpinitrd-2.6.35.13.img /boot

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

vi /boot/grub/grub.conf

grub.conf文件如下图所示:

【转】 Linux内核升级指南第14张

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

12、重启系统

#uname -r

免责声明:文章转载自《【转】 Linux内核升级指南》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇网页兼容性测试(工具使用IETESTER、Firefox、360安全浏览器)LoadRunner之关联下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux 下安装 MATLAB

MATLAB是美国MathWorks公司出品的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,是一款优秀而又强大的数学软件。 本文基于 Deepin 15.5 进行 MATLAB2016b 的安装,其他操作系统及 MATLAB 版本类似。 一、下载“Crack”和”ISO”文件 下载地址如下所示:http:/...

为什么交换机支持ipv6却不能配置?

测试设备是一台Catalyst3750,从思科官网查看Catalyst3750对IPv6的支持情况: Table 7Catalyst 3750, 3560, 3560-C, 2960, 2960-S and 2960-C Switches and Cisco EtherSwitch Service Module Features and the Minim...

Linux实时查看日志,访问前10IP 和相关命令

Nginx日志分析可以获得很多有用的信息,现在来试试最基本的,获取最多访问的前10个IP地址及访问次数。 既然是统计,那么awk是必不可少的,好用而高效。 命令如下: awk '{a[$1] += 1;} END {for (i in a) printf("%d %s ", a[i], i);}' 日志文件 | sort -n | tail 首先用awk统...

Debian下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

说明:  1、备份MySQL数据库存放目录/var/lib/mysql下面的osyunweidata数据库到/home/mysql_data里面,并且保存为osyunweidata_bak_2012_06_30.tar.gz的压缩文件格式(2012_06_30是指备份执行时当天的日期),最后只保留最近7天的备份 2、上传/home/mysql_data里面...

linux进程状态详解(转)

  Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态。  在下文将对进程的 R、S、D、T、Z、X 六种状态做个说明。 PROCESS STATE CODES        Here are the different values that the s, stat and state...

Linux 的软件管理及配置

1. 对比:Windows 和 Linux 上软件的安装与卸载 大部分 Linux 使用者都是从 Windows 转过来的,先对这俩做个对比,有助理解。 就像在 Windows 下,很多软件也有安装版与免安装版一样,在 Linux 下也有这样的差别。 1.1. Linux 的包管理工具(rpm/yum、dpkg/apt) Windows 下的安装版软件在安...