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/<cpu>/boot目录下

(五)编译内核模块

使用命令

make  modules 

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

(六)安装内核模块

使用命令: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目录。使用命令:

<P>cp initrd-2.6.29&nbsp; /boot
<P>cp linux-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29 </P>

(九)修改/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)启动。

时间: 2024-10-26 21:37:50

Linux内核的配置与编译(X86平台)的相关文章

3.1Linux内核的配置和编译

Linux内核的配置和编译 之所以要对内核进行配置,这是很多都是硬件的需求,和软件的需求.就是选择自己需要的,去掉自己不要的. 配置内核的方法: make config:基于文本模式的交互式配置. make menuconfig:基于文本模式的菜单型配置. ? 上面有两种配置方法,但是make config是几乎不用的.他是一问一答的配置方法.很费时间.所以,都是采用make menuconfig来配置内核的. 1.3内核配置结果 内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件

linux内核的配置机制及其编译过程

linux内核的配置机制及其编译过程 国嵌第一天第三节:讲解的是内核在X86平台上的配置.安装过程,制作自己的Linux系统,并双系统启动. <Linux系统移植>第四章 http://blog.csdn.net/zhengmeifu/article/details/7682373 Linux内核具有可定制的特点,具体步骤如下: 1.1.1 配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Lin

【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,如果对这个课程有兴趣的,可以加我的QQ2059055336和我联系. 课程内容简介 本课程重点是给大家讲解嵌入式linux系统移植的开发方法,采用理论与实践,硬件与软件相结合的方法. 1.在每节开始之前先简单回顾上一节所讲的主要内容,并对本节所讲的内容先进行概述,讲解概念.技术要点,设计实现思路等内容,最后总结本次课程的要掌握的要点. 2.在讲课的过程中对关键技术

《linux 内核完全剖析》编译linux 0.12 内核 Ubuntu 64bits 环境

我×...终于好了,大概3 4个小时吧...各种毛刺问题.终究还是闯过来了.... [email protected]:~/Downloads/linux-0.00-050613/linux-0.00$ make ld -s -x -M head.o  -o system > System.map dd bs=32 if=boot of=Image skip=1 16+0 records in 16+0 records out 512 bytes (512 B) copied, 0.000605

linux内核菜单配置make menuconfig错误

Ubuntu:16.04.2-x64-100ask linux-2.6.22.6 2018-10-15 1期~2期衔接课程,linux-2.6.22.6内核菜单配置make menuconfig错误及解决:第一步:内核配置及编译[email protected]:~/workbook/jz2440/system/linux-2.6.22.6$ make menuconfigMakefile:416: *** mixed implicit and normal rules: deprecated

linux内核图形配置疑难解决

配置linux内核是遇到的问题:(1)问题一make gconfig * * Unable to find the GTK+ installation. Please make sure that * the GTK+ 2.0 development package is correctly installed... * You need gtk+-2.0, glib-2.0 and libglade-2.0. * make[1]: *** No rule to make target `scr

Nginx 服务并发过10万的Linux内核优化配置

以下Linux 系统内核优化配置均经在线业务系统测试,服务器运行状态良好,用了一些时间整理,现和大家分享一下,如有那位高人看到配置上有问题,请给与指出! Controls the use of TCP syncookies #表示开启重用.允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭: net.ipv4.tcp_syncookies = 1 #一个布尔类型的标志,控制着当有很多的连接请求时内核的行为.启用的话,如果服务超载,内核将主动地发送RST包. net

Linux内核分析.:反编译简单c程序

作者:xujianguo 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” c程序部分代码如下: int g(int x) {   return x + 5; } int f(int x) {   return g(x); } int main(void) {   return f(9) + 1; } 实验分析如下: 实验楼没法用,晚点分析,抱歉@! 课程总结: 计算机是由软件和硬件组

linux kernel 的配置及编译

1. 执行make menuconfig 配置内核 2. 执行make zImage 编译内核 3. 执行make modules 编译模块 4. 内核源代码的配置及编译系统 Makefile Kconfig 配置脚本工具 实例在内核中增加程序: (1) 将源代码放到内核的相应目录下 (2) 在目录的Kconfig文件中增加关于新代码对应项目的配置选项 (3) 在目录的Makefile文件中增加关于新代码的编译条目 实例移植内核到arm: (1) 搭建编译环境 (2) 修改Makefile 使得