linux 手动编译内核,手动编译内核

手动编译内核

一般来说,内核的核心功是直接在内核里,要想让内核支持其他功能,通常具有以下三种选择:

1、不使用该功能

2、将这些功能编译成模块的形式

3、将这些功能直接编译进内核当中

手动编译的方式

使用make gconfig命令,不过使用该命令适用于Gnome桌面环境,且需要安装图形开发库

使用make kconfig命令,该命令适用于KDE桌面环境,且需要安装图形开发库

不过最常见的方式是使用make menuconfig命令来编译,使用该命令会产生一个窗口界面

在该窗口下有许多参数可以选择。

然后执行make命令进行编译即可。

接着执行make modules_install来安装编译的模块。

最后执行make install来完成整个编译过程。

在二次编译前,最好先执行make clean命令来清理上次编译过程中产生的一些二进制模块,核心文件(.config)不会被清理掉。

如果是第一次编译,也最好执行make mrproper命令来清理一些残留文件,不过该命令也会将核心配置文件(.config)删除掉,所以建议在执行该命令前,如果有.config文件,最好将 .config文件备份一下。

内核编译步骤

1、将某个内核解压缩到/usr/src/目录下

2、使用cd命令切换到/usr/src目录下

3、在/usr/src目录下有一个内核目录,为这个内核目录创建链接文件

4、切换到这个链接目录下,里面存放里许多和内核有关的文件

5、使用命令make menuconfig来打开一个文本窗口(如果使用该命令打不开的话,把终端窗口最大化)

在这个文本窗口下:

[*]:表示将该功能直接编译到内核,按Y键表示编译进内核

[M]:表示将该功能做出模块,按M键表示编译成模块

[]:表示不启用该功能,按N键表示不启用此功能

在每个选项后面如果出现箭头,表示该选项还有其子选项,按Enter键可进入子选项界面

如果选择完所有功能后,按两次ESC键,即可回到退出界面,在按YES键即可保存之前的选择配置

6、保存配置完成之后,会在当前目录下生产一个.config文件

7、在使用make进行编译

8、使用make modules_install安装内核模块

9、使用make install命令安装内核即可

不过使用这种方式编译的内核花费时间长,可能在系统启动过程中出现许多的错误,或者是某些功能没有编译到内核中而需要重新编译。因此,为了提高编译的成功率,我们可以将当前系统内核所使用的config配置文件,直接复制到链接目录下,并重命名为.config,之后的步骤和之前一下,不再详述。

例如:编译linux-2.6.28.10.tar.gz这个内核文件

1、将linux-2.6.28.10.tar.gz解压缩到/usr/src/目录下

3f106e3ef802b9d8b7a3b5d9255ad9fa.png

2、切换到/usr/src目录下,为linux-2.6.28.10创建一个符合链接,叫linux

2f0bc0b12fb8a8bb550817ec63a65e8f.png

3、切换到linux目录下去,复制/boot/config-2.6.18-308.el5到当前目录下,并重命名为.config文件

1fb1efc54568b71ef60ca36727b051ec.png

4、在当前目录linux目录下,使用make menuconfig命令来打开一个文本菜单选项,里面是内核所有的功能和参数

0ba0b3518609799ed68deef98c3ef900.png

5、使用make命令编译

6、在安装内核之前,先使用命令make modules_install来安装之前选择的模块。

这些安装的模块放在/lib/modules/`uname -r`/目录下

7、使用make install来安装内核

如果安装一切顺利的话,那么在/boot/grub/grup.conf文件中,会出现一个title,因此在下一次启动时,如果选择这个title,那么系统会去加载这个title中的内核,系统也可以顺利开机。

部分编译

有时候我们需要的功能或者模块没有编译进来,如果重新编译的话就会比较麻烦,因此,一般情况下,我们可以实现部分编译

对于部分编译我们可以分为以下几种状况:

1、只编译某个目录下的相关代码

make dir/  :只需指定某个目录即可,就会对指定目录下的代码重新进行编译

例如:重新编译arch目录,该目录是kernel的核心功能

make arch/

2、只编译部分模块

make M=dir/

例如:只编译驱动程序中关于网络的模块

make M=drivers/net/

3、只编译某一个模块

make /dir/Modules_name

例如:只编译驱动程序中的网卡模块

make drivers/net/pcnet32.ko

4、将编译完成的结果放在指定目录下

make   o=/path/to/directory

编译内核时注意事项

当我们使用ssh远程登入到某个主机上去的时候,在编译内核的时候,如果ssh远程登入突然中断了,那么此时编译也跟着中断,那么我们就需要重新编译。为了解决这个问题,我们可以使用screen命令来打开一个界面(屏幕),在这个界面下编译内核时,如果ssh远程登入中断了,当再次远程登入screen界面的时候,我们可以返回到当时编译内核的界面,这样就可以继续编译内核了。

有关screen命令介绍如下:

screen命令:

screen -ls: 显示已经建立的屏幕

screen   -S NAME: 直接打开一个新的屏幕。-S选项可以建议一个名为NAME的窗口。

screen -r ID: 还原回某屏幕(ID使用screen -ls命令可以查看的到)

screen -d ID:暂停某个屏幕。

Ctrl+a, d: 拆除屏幕(就是暂停这个屏幕)

exit: 退出某个屏幕

有时候我们在编译kernel时,要编译某个驱动程序,但是又不知道自己本机的硬件是否支持,这样就容易将那些不用的驱动程序编译进内核或者模块,而我们本机硬件所对应的驱动程序没有编译进内核或模块。因此为了方面我们自己关于如何查看本机硬件设备信息,这里提供了几个常用命令可供我们查看。

查看本机硬件设备信息

cat /proc/cpuinfo:查看CPU硬件信息

cat /proc/meminfo:查看内存信息

cat /proc/interrupt:查看中断信息

lsusb:显示所有USB设备信息

lspci:显示所有连接PCI总线设备信息

hal-device:Hardware Abstract Layer显示所有设备的详细信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值