设为首页 加入收藏

TOP

Linux内核的配置与编译(X86平台)
2014-11-24 03:11:42 来源: 作者: 【 】 浏览:1
Tags:Linux 内核 配置 编译 X86 平台

说明:只供学习交流


目的:


(1):配置、编译X86平台下的Linux-2.6.29内核


(2):在vmware下安装编译好的内核并启动


工具:


Gcc编译器, Linux-2.6.29内核


步骤:


(一):清除临时文件,中间文件和配置文件等(刚从网上下载下来的文件这步可省略)。


make clean


删除大多数的由编译生成的文件、但会保留内核的配置文件.config。


make mrproper


删除所有的编译生成的文件,还有内核配置文件,再加上各种备份文件。


make distclean


mrproper删除的文件,加上编辑备份文件和一些补丁文件。


(二)选择参考配置文件


使用正在运行的内核配置文件作为参考配制文件,该配置文件在/boot目录下,使用命令


cp /boot/config-2.6.18-53.el5 .config。


(三)配置内核


配置内核有如下命令:


make config:基于文件模式的交互式配置(也就是一问一答)。


make menuconfig:基于文本模式的菜单式配置(强烈推荐)。


make oldconfig:使用已有的配置文件(.config)但是会询问新增的配置选项。


make xconfig:图形化配置(需要安装图形化系统)。


make menuconfig是最为常用的内核配置方式,使用方法如下:


1、使用方向键在各选项间移动;


2、使用“Enter”键进入下一层选单;每个选项上的高亮字母是键盘快捷方式,使用它可以快速地到达想要设置的选单项。


3、在括号中按“y”将这个项目编译进内核中,按“m”编译为模块,按“n”为不选择(按空格键也可在编译进内核、编译为模块和不编译三者间进行切换),按“h”将显示这个选项的帮助信息,按“Esc”键将返回到上层选单。


内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件Linux内核提供了一系列可供参考的内核配置文件,位于Arch/$cpu/configs


注意:要运行make menuconfig的界面需要调整终端的窗口大小,至少为80*19。


(四)编译内核


(1):make zImage


(2):make bzImage


区别:在X86平台,在zImage只能用于小于512Kd的内核(注意是X86平台)


如需获取详细编译信息,可使用:


make zImage V=1


make bzImage V=1


编译好的内核位于arch//boot目录下


(五)编译内核模块


使用命令make modules


内核模块编译的时间比较长,一般需要1~2小时的时间。这些模块源于使用命令make menuconfig启动的菜单型配置界面中选择的项。


(六)安装内核模块


使用命令:make modules_install,完成安装后,编译好的内核模块会从内核源代码目录拷贝至/lib/modules/2.6.29目录下。


(七)制作init ramdisk


使用cd跳动linux-2.6.29/,目录的上层目录,使用命令:mkinitrdinitrd-$version $version(mkinitrd initrd-2.6.29 2.6.29)将上一步中产生的模块目录/lib/modules/2.6.29制作成initrd-2.6.29。


提示:initrd是“initial ramdisk”的缩写,initrd是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。在桌面或服务器Linux系统中,initrd是一个临时的文件系统。其生命周期很短,只会用作真实文件系统的一个桥梁。在没有存储设备的嵌入式系统中,initrd可以是永久的根文件系统。


Linux的众多发行版之所以使用initrd主要是为了在内核启动之后能够判断哪些硬件驱动需要加载,哪些不需要,文件系统有没有问题等,最终使得根分区能顺利加载。在scsi和sata设备上启动,usb启动盘,无盘服务器等都需要initrd来做判断,这样可以提高Linux内核的通用性。


(八)安装内核


由于Linux系统启动时,会从/boot目录下寻找内核文件与init ramdisk,所以需要将内核和initrd拷贝至/boot目录。使用命令:


cp initrd-2.6.29 /boot


cp linux-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29


(九)修改/etc/grub.conf或者/etc/lilo.conf


为了让grub在启动时能提供一项我们自己制作的linux内核的选项,需要修改grub的配置文件/etc/grub.conf。(添加的代码为title My Linux(2.6.29)以下的)


注意:/etc/grub.conf实际上是/boot/grub/grub.conf的一个链接,因此真正的配置文件存在与/boot/grub目录下。


(十):重启系统


使用命令reboot,重新启动系统,按住空格键不放,直到进入grub界面,选择My Linux(2.6.29)启动。


推荐阅读:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发性能优化大总结 下一篇Ubuntu 13.04 改变 Eclipse popup..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ 语言社区-CSDN社 (2025-12-24 17:48:24)
·CSDN问答专区社区-CS (2025-12-24 17:48:22)
·C++中`a = b = c`与` (2025-12-24 17:48:19)
·C语言结构体怎么直接 (2025-12-24 17:19:44)
·为什么指针作为c语言 (2025-12-24 17:19:41)