RHEL6.1编译内核-kernel-3.0.4

RHEL6.1编译内核-kernel-3.0.4

发表于133 天前  Linux基础  评论数 21  被围观 4,077 views+

文章目录[隐藏]

·        1、到www.kernel.org上下载相应的内核源码包

·        2、确认你的系统中已经具备了编译软件的基本条件,也就是要安装makegcc gcc-c++ ncurses-devel和库工具等等

·        3、解压内核源码包

·        4、配置内核编译参数

·        5、编译内核

·        6、安装编译好的内核与模块

·        7、查看或修改GRUB菜单(为了确认你是不是真的把内核安装好了)

·        8、重新启动系统,测试新内核的工作情况

关于内核的其他相关内容,请大家在羽飞博客上自己查询,本文章以实战为主。

下面具体来看一下,在HREL6.1上如何重新编译内核,并升级到3.0.4的详细步骤:

 

1、到www.kernel.org上下载相应的内核源码包

[root@yufei kernel]#wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2

--2011-09-0610:41:45--  http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2

Resolvingwww.kernel.org... 130.239.17.5, 149.20.4.69, 199.6.1.165, ...

Connecting towww.kernel.org|130.239.17.5|:80... connected.

HTTP request sent,awaiting response... 200 OK

Length: 76759291 (73M)[application/x-bzip2]

Saving to: “linux-3.0.4.tar.bz2”

 

100%[=======================================================>]76,759,291   207K/s   in 6m 44s 

 

2011-09-06 10:48:32(185 KB/s) - “linux-3.0.4.tar.bz2” saved [76759291/76759291]

2、确认你的系统中已经具备了编译软件的基本条件,也就是要安装make gcc gcc-c++ ncurses-devel和库工具等等

3、解压内核源码包

[root@yufei kernel]#tar jxvf linux-3.0.4.tar.bz2 -C /usr/src/

注意,如果说你的系统时间不对的话,可能会提示时间相关的错误,所以要先确认一下你的系统时间。

4、配置内核编译参数

3.0.4的内核文件解压出来是494M

[root@yufei kernel]#cd /usr/src/

[root@yufei src]# du-sh *

4.0K     debug

46M      kernels

494M    linux-3.0.4

 

[root@yufei src]# cdlinux-3.0.4/

[root@yufeilinux-3.0.4]# make menuconfig

  HOSTCC scripts/basic/fixdep

  HOSTCC scripts/kconfig/conf.o

 *** Unable to find the ncurses libraries orthe

 *** required header files.

 *** 'make menuconfig' requires the ncurseslibraries.

 ***

 *** Install ncurses (ncurses-devel) and tryagain.

 ***

make[1]: ***[scripts/kconfig/dochecklxdialog] Error 1

make: *** [menuconfig]Error 2

如果出现上面的错误,记得要安装ncurses-devel,如果你设置了本地源的话,就很简单了。

[root@yufeilinux-3.0.4]# yum install ncurses-devel

然后再执行就能显示界面了。否则你在终端始终执行不了的。

注:上面是文本方式的介面,也就是tui如果说,在X界面上的话,可以用make xconfig(同样需要gt-devel来支持)

上面就是创建.config这个内核的配置文件,但用make menuconfig是利用新内核所固有的默认配置基础上所进行的调整,如果说要在原来系统内核的基础上进行修改的话,那么就需要用到make oldconfig这个命令

为了能在原来的基础上快速的来配置参数,我们可以直接用系统中的,然后在其上面进行少量的修改

[root@yufeilinux-3.0.4]# cp /boot/config-2.6.32-131.0.15.el6.x86_64 .config

[root@yufeilinux-3.0.4]# make oldconfig

所以这里需要大家了解一下makemenuconfig与make oldconfig的区别,他们都是针对.config这个文件来讲的。

(1). 如果.config不存在,运行makemenuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。

(2). 如果.config存在,运行make menuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。

(3). arch/arm/defconfig是一个缺省的配置文件,make defconfig时会根据这个文件生成当前的.config。

(4). arch/arm/configs文件夹中有许多命名为xxx_defconfig的配置文件,如果运行make xxx_defconfig,当前.config文件会由xxx_defconfig文件生成。

(5). make oldconfig的作用是备份当前.config文件为.config.old,如若make config/menuconfig设置不当可用于恢复先前的.config。

所以说,根据上面的内容,可以得出这样一个结论。为了使用新的内核功能,当然是用make menuconfig根据新内核默认的配置。如果说,你是在原来内核基础上,增加内核的某个功能的话,就可以用make oldconfig来进行局部的配置了。

我们只增加一个功能,就是增加对NTFS读写功能。他的位置如下图

 

 

退出记得保存文件啊,随后会给出相应的提示

*** End of theconfiguration.

*** Execute 'make' tostart the build or try 'make help'.

5、编译内核

[root@yufeilinux-3.0.4]# make bzImage

这里需要一段时间,取决于你的系统性能。

 

此处省略无数字节……

  BUILD  arch/x86/boot/bzImage

Root device is (8, 3)

Setup is 14908 bytes(padded to 15360 bytes).

System is 3819 kB

CRC 3fbfb9f7

Kernel:arch/x86/boot/bzImage is ready  (#1)

 

[root@yufeilinux-3.0.4]# make modules

这里也是需要一段时间

 

此处省略无数字节……

  IHEX   firmware/edgeport/down3.bin

  IHEX2FW firmware/whiteheat_loader.fw

  IHEX2FW firmware/whiteheat.fw

  IHEX2FW firmware/keyspan_pda/keyspan_pda.fw

  IHEX2FW firmware/keyspan_pda/xircom_pgs.fw

  
注:上面这两步,可以用make直接代替,省时少力。但这样如果有问题的话,可能就不好排除了,

  
 

6、安装编译好的内核与模块

(1)安装模块

[root@yufeilinux-3.0.4]# make modules_install

这里也是需要一段时间,这一步就是把编译好的modules拷贝到/lib/modules/相应的内核目录里面

此处省略无数字节……

  DEPMOD 3.0.4

/usr/src/linux-3.0.4/scripts/depmod.sh:line 43: 17955 Killed                 "$DEPMOD" "$@" "$KERNELRELEASE"

make: ***[_modinst_post] Error 137 

注意:上面出现了错误

这是由于SWAP不足造成的,所以要适当增加内存或者是SWAP的大小,因为我是虚拟机做的实验,以前是256M内存,我调整到512M,swap我从256M最后调整到了1.5个G才解决了上面的错误

关于增加SWAP的方法,请大家搜索羽飞博客里面的相关文章,我这里来介绍一个简单的。

[root@yufeilinux-3.0.4]# dd if=/dev/zero of=/swap2 bs=1M count=1500

[root@yufeilinux-3.0.4]# mkswap /swap2

[root@yufeilinux-3.0.4]# swapon /swap2

这样简单的三步就增加了SWAP了,而且在下次启动的时候,SWAP还是原来的。

最后再执行

[root@yufeilinux-3.0.4]# make modules_install

此处省略无数字节……

  DEPMOD 3.0.4

就没有错误了。

(2)安装系统的核心

[root@yufeilinux-3.0.4]# make install

sh/usr/src/linux-3.0.4/arch/x86/boot/install.sh 3.0.4 arch/x86/boot/bzImage \

                        System.map"/boot"

ERROR: modinfo: couldnot find module vmware_balloon

这里有个提示,就没有找到相应的模块,这个我们先不管了,继续下面的内容

注意:如果说你想知道make install做了哪些事的话,你可以通过/usr/src/linux-3.0.4/arch/x86/boot/install.sh这个文件来了解。

7、查看或修改GRUB菜单(为了确认你是不是真的把内核安装好了)

[root@yufeilinux-3.0.4]# cat /boot/grub/grub.conf

里面多了新内核的选项

8、重新启动系统,测试新内核的工作情况

注意,在启动的时候,需要自己进来一下选择,否则默认还是以前的内核启动哦。除非你在上一步把默认启动项给改了。


[root@yufei ~]# uname-r

3.0.4

如果说,你只是为了玩,那么想把自己编译的内核删除,那么请用下面的方法

[root@yufei ~]# rm -fr/boot/System.map-3.0.4

[root@yufei ~]# rm -fr/boot/vmlinuz-3.0.4

[root@yufei ~]# rm -fr/boot/initramfs-3.0.4.img

[root@yufei ~]# rm -fr/lib/modules/3.0.4

[root@yufei ~]# vim/boot/grub/grub.conf

把增加的给删除了并调整一下默认的启动项为0,也就是第一项

然后再把你解压出来的包给删除就OK了。


最后总结一下编译内核的步骤

tar jxvflinux-3.0.4.tar.bz2 -C /usr/src/

cd/usr/src/linux-3.0.4/

make menuconfig

make bzImage

make modules

或者用make直接代替上面两步

echo $?

为了确保没有错误,可以用上面的命令来查看是否有错误,如果是0的话,就表示没有错误或警告了

make modules_install

make install

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值