免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7308 | 回复: 1
打印 上一主题 下一主题

[内核模块] centos 升级内核到3.1.4 安装过程 纠结一个周 搞定 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-22 19:49 |只看该作者 |倒序浏览
本帖最后由 SCDXMOE 于 2012-12-23 16:39 编辑

  
鄙人centos5.8 linux内核2.6.18 升级为3.1.4  
下载了linux-3.1.4编译

make bzImage出现错误 :
GEN     .version
  CHK     include/generated/compile.h
  UPD     include/generated/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      .tmp_vmlinux1
ld: BFD 2.17.50.0.6-20.el5 20061020 internal error, aborting at ../../bfd/merge.c line 863 in _bfd_merged_section_offset

ld: Please report this bug.

make: *** [.tmp_vmlinux1] 错误 1
[root@localhost linux-3.1.4]#
[root@localhost linux-3.1.4]#

原以为是gcc版本问题 元版本gcc-4.1.2 升级为gcc4.4.6还是出先一样的问题
  


求解

论坛徽章:
0
2 [报告]
发表于 2012-12-23 16:37 |只看该作者
搞定了 参考了 http://blog.csdn.net/xyang81/article/details/7522032不过要在centos6.3版本(内核为2.6.32)上升级到3.1.4   cento5.8系统好像不支持 (反正我是搞了一个个周都没搞定) Linux内核升级指南                分类:            Linux2012-04-29 14:48712人阅读评论(0)收藏举报

一、升级背景
前段时间公司有个项目用到了短信收发的业务,采购了两台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。假如不修改该行,在升级重新启动后会报如下的错,导致启动失败:
[plain] view plaincopyprint?

  • 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!  

Volume group "VolGroup00" not foundUnalbe to access resume device (/dev/VolGroup00/LogVol00)mount: could not find filesystem '/dev/root'setuproot:moving /dev failed: No such file or directorysetuproot:error mounting /proc: No such file or directorysetuproot:error mounting /sys: No such file or directoryswitchroot: mount failed: No such file or directoryKernel 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






您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP