linux304内核编译详细步骤.docx
《linux304内核编译详细步骤.docx》由会员分享,可在线阅读,更多相关《linux304内核编译详细步骤.docx(7页珍藏版)》请在冰豆网上搜索。
linux304内核编译详细步骤
下面具体来看一下,在HREL6.1上如何重新编译内核,并升级到3.0.4的详细步骤:
1、到www.kernel.org上下载相应的内核源码包
[root@yufeikernel]#wgethttp:
//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,...
Connectingtowww.kernel.org|130.239.17.5|:
80...connected.
HTTPrequestsent,awaitingresponse...200OK
Length:
76759291(73M)[application/x-bzip2]
Savingto:
“linux-3.0.4.tar.bz2”
100%[=======================================================>]76,759,291207K/sin6m44s
2011-09-0610:
48:
32(185KB/s)-“linux-3.0.4.tar.bz2”saved[76759291/76759291]
2、确认你的系统中已经具备了编译软件的基本条件,也就是要安装makegccgcc-c++ncurses-devel和库工具等等
3、解压内核源码包
[root@yufeikernel]#tarjxvflinux-3.0.4.tar.bz2-C/usr/src/
注意,如果说你的系统时间不对的话,可能会提示时间相关的错误,所以要先确认一下你的系统时间。
4、配置内核编译参数
3.0.4的内核文件解压出来是494M
[root@yufeikernel]#cd/usr/src/
[root@yufeisrc]#du-sh*
4.0Kdebug
46Mkernels
494Mlinux-3.0.4
[root@yufeisrc]#cdlinux-3.0.4/
[root@yufeilinux-3.0.4]#makemenuconfig
HOSTCCscripts/basic/fixdep
HOSTCCscripts/kconfig/conf.o
***Unabletofindthencurseslibrariesorthe
***requiredheaderfiles.
***'makemenuconfig'requiresthencurseslibraries.
***
***Installncurses(ncurses-devel)andtryagain.
***
make[1]:
***[scripts/kconfig/dochecklxdialog]Error1
make:
***[menuconfig]Error2
如果出现上面的错误,记得要安装ncurses-devel,如果你设置了本地源的话,就很简单了。
[root@yufeilinux-3.0.4]#yuminstallncurses-devel
然后再执行就能显示界面了。
否则你在终端始终执行不了的。
注:
上面是文本方式的介面,也就是tui如果说,在X界面上的话,可以用makexconfig(同样需要gt-devel来支持)
上面就是创建.config这个内核的配置文件,但用makemenuconfig是利用新内核所固有的默认配置基础上所进行的调整,如果说要在原来系统内核的基础上进行修改的话,那么就需要用到makeoldconfig这个命令
为了能在原来的基础上快速的来配置参数,我们可以直接用系统中的,然后在其上面进行少量的修改
[root@yufeilinux-3.0.4]#cp/boot/config-2.6.32-131.0.15.el6.x86_64.config
[root@yufeilinux-3.0.4]#makeoldconfig
所以这里需要大家了解一下makemenuconfig与makeoldconfig的区别,他们都是针对.config这个文件来讲的。
(1).如果.config不存在,运行makemenuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。
(2).如果.config存在,运行makemenuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。
(3).arch/arm/defconfig是一个缺省的配置文件,makedefconfig时会根据这个文件生成当前的.config。
(4).arch/arm/configs文件夹中有许多命名为xxx_defconfig的配置文件,如果运行makexxx_defconfig,当前.config文件会由xxx_defconfig文件生成。
(5).makeoldconfig的作用是备份当前.config文件为.config.old,如若makeconfig/menuconfig设置不当可用于恢复先前的.config。
所以说,根据上面的内容,可以得出这样一个结论。
为了使用新的内核功能,当然是用makemenuconfig根据新内核默认的配置。
如果说,你是在原来内核基础上,增加内核的某个功能的话,就可以用makeoldconfig来进行局部的配置了。
我们只增加一个功能,就是增加对NTFS读写功能。
他的位置如下图
退出记得保存文件啊,随后会给出相应的提示
***Endoftheconfiguration.
***Execute'make'tostartthebuildortry'makehelp'.
5、编译内核
[root@yufeilinux-3.0.4]#makebzImage
这里需要一段时间,取决于你的系统性能。
此处省略无数字节……
BUILDarch/x86/boot/bzImage
Rootdeviceis(8,3)
Setupis14908bytes(paddedto15360bytes).
Systemis3819kB
CRC3fbfb9f7
Kernel:
arch/x86/boot/bzImageisready(#1)
[root@yufeilinux-3.0.4]#makemodules
这里也是需要一段时间
此处省略无数字节……
IHEXfirmware/edgeport/down3.bin
IHEX2FWfirmware/whiteheat_loader.fw
IHEX2FWfirmware/whiteheat.fw
IHEX2FWfirmware/keyspan_pda/keyspan_pda.fw
IHEX2FWfirmware/keyspan_pda/xircom_pgs.fw
注:
上面这两步,可以用make直接代替,省时少力。
但这样如果有问题的话,可能就不好排除了,
6、安装编译好的内核与模块
(1)安装模块
[root@yufeilinux-3.0.4]#makemodules_install
这里也是需要一段时间,这一步就是把编译好的modules拷贝到/lib/modules/相应的内核目录里面
此处省略无数字节……
DEPMOD3.0.4
/usr/src/linux-3.0.4/scripts/depmod.sh:
line43:
17955Killed"$DEPMOD""$@""$KERNELRELEASE"
make:
***[_modinst_post]Error137
注意:
上面出现了错误
这是由于SWAP不足造成的,所以要适当增加内存或者是SWAP的大小,因为我是虚拟机做的实验,以前是256M内存,我调整到512M,swap我从256M最后调整到了1.5个G才解决了上面的错误
关于增加SWAP的方法,请大家搜索羽飞博客里面的相关文章,我这里来介绍一个简单的。
[root@yufeilinux-3.0.4]#ddif=/dev/zeroof=/swap2bs=1Mcount=1500
[root@yufeilinux-3.0.4]#mkswap/swap2
[root@yufeilinux-3.0.4]#swapon/swap2
这样简单的三步就增加了SWAP了,而且在下次启动的时候,SWAP还是原来的。
最后再执行
[root@yufeilinux-3.0.4]#makemodules_install
此处省略无数字节……
DEPMOD3.0.4
就没有错误了。
(2)安装系统的核心
[root@yufeilinux-3.0.4]#makeinstall
sh/usr/src/linux-3.0.4/arch/x86/boot/install.sh3.0.4arch/x86/boot/bzImage\
System.map"/boot"
ERROR:
modinfo:
couldnotfindmodulevmware_balloon
这里有个提示,就没有找到相应的模块,这个我们先不管了,继续下面的内容
注意:
如果说你想知道makeinstall做了哪些事的话,你可以通过/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了。
最后总结一下编译内核的步骤
tarjxvflinux-3.0.4.tar.bz2-C/usr/src/
cd/usr/src/linux-3.0.4/
makemenuconfig
makebzImage
makemodules
或者用make直接代替上面两步
echo$?
为了确保没有错误,可以用上面的命令来查看是否有错误,如果是0的话,就表示没有错误或警告了
makemodules_install
makeinstall
另外提一下几个常用的命令或参数
(1)在RHEL6之后用dracut来创建initramfs这个镜像文件了,不在是以前的mkinitrd了。
(2)make的时候,可以加上-jN(指定多少核进行编译,根据系统的内核数情况,加快编译速度。
N就是指核数)
(3)makeclean只删除编译好的文件
(4)makemrproper把包还原成解压出来时的样子
关于(3)和(4),我喜欢直接把文件删除,再重新解压,这样更放心。
呵呵……