linux内核

内核kernel是操作系统的最底层,也就是和硬件打交道的关键,因为它包含了驱动主机各项硬件的检测程序和驱动模块。

内核通常被放置在/boot/vmlinuz中,但是一台主机而已拥有多个内核文件。

内核模块(kernel module)

如果电脑的硬件更新了,而内核比较旧,肯定无法支持,是否要拿一个新的内核呢?

因此,linux提出了模块化的设计,将一些不常用的驱动程序独立出内核,编译成模块,当内核要用到时调用即可,如此可以在不改动内核的前提下,只要编译出适当的内核模块并加载它,那么linux就可以使用这个硬件了,linux的内核模块放在,/lib/module/$(uname-r)/kernel/当中。


为何要编译内核:

除了BIOS之外,内核是操作系统中最早被加载到内存的,但并不是要将所有内核支持的东西都编译到我的内核中,这样很多其实我们不需要的功能模块也放在里面,使得内核变得臃肿。

要记住,内核编译的重点在于你要你的linux做什么,这样才能让linux运行更为顺畅。这也就是为什么要编译内核

linux内核特色:可以随时随人的喜好而变动,版本改动次数太频繁。

一般用户不需要在安装好linux后立即编译内核。几乎每个linux distribution都将内核编译得相当适合普通用户使用了。

内核编译的目的:

1.新功能的需求

2.原内核太过臃肿

3.其他需求(如嵌入式系统 embedded system)


内核源代码的取得方式:

1.原本distribution提供的内核源代码文件

2.取得最新的稳定版内核源代码:www.kernel.org

3.保留原本设置,利用patch(补丁)升级内核源代码:如果只是想在原本的内核下面加入某些特殊功能,而该功能已经针对内核源代码推出patch补丁,可以根据上面网站下载补丁,而要注意的是补丁通常都是仅针对前一版的,因此如果要跨级升级,每一级的补丁都要下,然后依次安装。

http://write.blog.csdn.net/postedit

    tar.xz    是完整的内核包

    pgp      是.tar.sign后缀的文件,用于校验类似于MD5(指纹校验)

    patch    是补丁包


内核编译的前处理:

保持干净的源代码 make mrproper:如果是第一次编译,不清楚下载的源代码当中有没有保留目标文件(.o)等,可以通过make mrproper命令来清除,需要注意的是这个操作会将以前进行过的内核功能选择文件也删除掉。因此只有第一次执行内核编辑前才进行这个操作,其他时间,可以采用make clean删除前一次编译过程的残留数据。make clean 删除大多数的编译生成文件, 但是会保留内核的配置文件.config。


开始挑选内核功能:make xxconfig,在/boot下面存在一个名为config-xxx的文件,就是内核功能列表文件。如何创建该文件,常见方法有

make menuconfig:最常见的,是文字模式下可以显示图形界面的方式,不需要启动x window能够挑选内核功能菜单

make oldconfig:使用已存在的./.config文件内容,只将新版本内核内的新功能列出

make xconfig:通过以Qt为图形界面基础功能的图形化界面显示,需要x window的支持,例如KDE

make gconfig:GNOME

make config:最古老的方法





posted on 2016-07-23 15:46  sichenzhao  阅读(120)  评论(0编辑  收藏  举报

导航