linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载

一、概述:我们知道linux系统启动中必须要加载内核并加载其内核模块,那么内核的功能是什么呢,其实内核的功能主要包括进程调度、内存管理、文件系统、硬件驱动、网络功能、安全、提供缓冲和缓存加速系统性能。

内核的设计模式分为两种,分别为微内核模式和单内核模式,它们的区别在于微内核的内核当中只保留最核心的功能,而其它应该由内核实现的功能被实现在子系统中完成,这些子系统需要在核心系统的协调下完成;单内核是把所有的功能统统做进内核。究竟linux的内核模式是哪种呢,可能很多朋友会认为是微内核模式,其实不然,linux内核模式恰恰是单内核模式的,这里linux内核做了精巧的设计,采用了微内核的设计思想,保留了单内核的架构把许多功能做成了内核模块(对象)(ko:kernel object),这样就减小了内核的大小,接下来我将会详细讲解一下linux内核编译的方法和步骤。

linux内核官方网站(www.kernel.org)上有官方发布的最新版本的内核,如下:

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第1张图片

内核的源代码编译一般在/usr/src/目录中,并在该目录中创建linux链接文件指向源码目录,下载完最新版本的内核后要对其进行解压,然后对内核进行配置,配置内核的命令有一下几种:

make config遍历式的,如果有5000项的话,都要被问个遍,这样的话会很麻烦;

make menuconfig打开一个文本图形界面进入功能界面,使用上下箭头会很方便的进

行选择;

make gconfig 需要安装genoo的GTK图形开发环境;

make kconfig 需要安装KDE的QT开发环境;

make defconfig表示一切都是默认的;

make allyesconfig测试用的;

make allnoconfig测试用的;

其中比较常用的是前三种,编辑完后会提示保存,一般保存在/usr/src/linux目录下的.config的隐藏文件中;

然后执行以下命令开始编译内核:

make                  ---->开始编译;

make modules_install  ---->开始编译模块;

make install          ---->安装内核;等编译完后我们要重启系统并选择新内核就可以了,其实步骤很简单,就是编译需要一点时间而已,下面具体演示一下步骤,这里以已经下载好的linux-2.6.28.10版本的内核为例:

1、检查系统是否安装相应的开发环境;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第2张图片

2、确保ncurses-devel开发包已安装;5751d21d74dd09bbdcd630d6dcd011e4.png

3、然后找到我们下载的linux内核并将其解压至/usr/src/目录下;linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第3张图片

4、make menuconfig打开一个文本图形界面进入功能界面,选择需要装载的功能模块;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第4张图片

(1)解释一下文本图形界面中的各功能模块的意义:

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第5张图片

(2)内核的功能模块选项有以下几种:

*    表示直接做进内核;

M    表示做成模块;

空白 表示不使用此功能;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第6张图片

(3)进入General setup子选项,然后给自己编译的内核命名版本号;2caf488482bcc053661de4899e676b4d.png

(4)功能模块选择好后保存退出会保存在linux目录下的.config隐藏文件中;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第7张图片

其实我们自己对文本图形界面的功能进行设置后很可能会导致内核启动不起来,因为这些工作都是很专业人士才能完成的工作,所以我们将红帽官方给的样例复制到当前目录下的.config文件中,然后在其基础上进行修改;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第8张图片

根据上面的步骤配置一些功能模块:linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第9张图片

接着进入下面子选项;

8bd0a928f07b7d57cd0674a8e05819ee.png

然后选择适合自己computer的cpu类型;linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第10张图片

配置网卡驱动,选择Device Drivers-->Network device support-->Ethernet (10 or 100Mbit)下的AMD PCnet32 PCI support并将其选为直接编译进内核,让其在内核初始化后直接加载进来,这样就只能为自己所用了:

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第11张图片

其它的任何选项可以根据自己需要选择,上面的网卡驱动配置好后保存退出,下面

5、开始对内核进行编译;

make                  ---->开始编译;

make modules_install  ---->开始编译模块;

make install          ---->安装内核;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第12张图片

6、执行make modules_install  ---->开始编译模块;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第13张图片

7、执行make install  ---->开始安装内核;

安装完成后重新启动系统;

7e035017b33cf5b05a7ca779286d5b1f.png

8、重启系统后按e键进入选择内核界面,然后加载我们编译的内核;

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第14张图片

linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载_第15张图片

二、总结:

以上就是关于linux内核及模块编译的整个过程,鉴于作者的记忆力和理解力有限,错误或疏漏在所难免,望朋友们给予指点和纠正。

你可能感兴趣的:(linux内核的编译步骤及模块加载,浅析linux内核编译及相关模块加载)