linux内核的配置与编译,linux内核配置与编译

一、linux内核配置

linux内核配置有两种方式:

a4c26d1e5885305701be709a3d33442f.png

make config:是基于文本模式的交互式配置

make menuconfig:基于文本模式的菜单型配置

一般都会使用基于文本模式的菜单型配置来配置内核

1.1、主要需要配置的几个选项

处理器类型和特点的配置(processor type and features)

网络配置(networking support)

设备驱动配置(device drivers)

文件系统配置选择(file system)

1.2、具体到要配置的每一小项

按空格可以切换选择 ,带<>的表示可以选择M、*和空白,带[]只能选*和空白

空白:表示本次编译不选择该功能

*:表示要选择该功能,比如有a.c、b.c文件,则会编译成a.o、b.o文件,然后编译成内核镜像zImage,然后加载进内存运行

M:表示选择该功能,比如有a.c、b.c文件,则会编译成a.o、b.o文件,然后编译成a.ko、b.ko文件,然后放在硬盘里面,当需要的时候,作为内核模块加载进内存,这样可以节省内存,这些功能不是经常要使用的,经常要使用的要选择*选项。

1.3、配置结果

配置好的结果放在.config文件中,以.的形式的文件属于隐藏文件,要以ls

-a的方式才能显示出来。.config里面的每一项对应我们菜单里面选择的一项。选择help选项可以查看到对应的每一项.

a4c26d1e5885305701be709a3d33442f.png

1.4、使用已有的配置文件简化配置

由于我们配置项太多而且不够熟悉,不可能一个一个去配置,我们可以使用已有的配置文件来简化配置

例如我们将我们电脑上虚拟机正在使用的linux系统的配置文件(在/boot/config....中)作为参考,将其拷贝到我们内核中,然后基于该配置文件进行一个小的调整,不知道的我们可以保持默认。各种平台的配置参考文件我们都可以在内核的arch/...目录中找到,比如我们的ARM平台的,我们可以在arch/arm/configs/中找

二、编译内核

2.1、编译内核

make zlmage:在X86平台下,只能用于小于512k的内核,高版本的linux内核已经不支持make

zlmage命令了

make bzlmage:可以用于比较大的内核

所有选择为*的选项在这里都会一起编译成bzImage文件或者zImage文件

如果需要获取详细的编译信息,可以使用如下的编译选项:

make zImage V=1

make bzImage V=1

最后编译好的内核位于arch//boot目录下面,比如在我们这里是i386

2.2、编译内核模块

make modules:

编译好的内核模块散落在各个内核下面的各个目录里面,以.ko后缀结尾

make

modules_install:将散落在内核各个目录里面的.ko文件复制到我们自己自己linux操作系统的/lib/modules/目录下面,并会新建一个文件夹来存放,这个目录名和我们编译的内核版本是一样的

移动好了之后我们使用mkinitrd initrd-$version $version对这个目录进行打包操作。

其中initrd-$version:表示的是我们要打包出来的名字,后面这个$version表示我们要在lib/modules下要打包的目录名,比如mkinitrd

initrd-2.6.39 2.6.39,这个命令可以在任何目录下执行,表示我们将/lib/modules/目录下的2.6.39这个目录里面所有的内核模块打包为名为initrd-2.6.39文件,这个文件将会放在我们执行这条命令的当前目录中。

2.3、安装内核

1、cp

arch//boot/bzImage /boot/vmlinuz-$version

将我们编译好的bzImage文件拷贝到我们的linux目录下的/boot/目录下面,因为我们linux系统启动是从这里启动的,此处我们是将此内核在我们PC机上运行

2、cp

/(此处是我们打包好的内核模块所在的目录,不一定是当前目录) initrd-$version /boot/

将我们打包好的内核模块复制到我们linux系统的/boot/目录下

3、修改/etc/grub.conf文件,让系统可以从我们编译好的内核启动

a4c26d1e5885305701be709a3d33442f.png

将从title开始的下面四行代码复制一份,然后更改一下相应的几个名字即可

a4c26d1e5885305701be709a3d33442f.png

里面最后一行是打包好的文件名,我们这里应该是initrd-2.6.39

然后可以重启系统,会让你选择从哪个系统刚开始启动,我们选择从我们刚制作好的内核启动,我们可以使用我们uname

-a来查看我们所使用的linux内核版本,另外,我们只是更换了linux系统的内核,文件系统这些东西我们是没有更换的,而文件系统是放在磁盘上的,所以我们会发现操作系统里面的很多东西和之前的一样。

2.4、清理内核

make clean:清理掉编译过程中产生的.o/.ko文件,不能清除掉.config文件

make disclean:可以清理掉.config文件,同时也可以清楚掉.o/.ko文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值