LINUX编译内核教程

内核编译

大家都知道一个完整的计算机系统不仅需要硬件系统还需要软件系统才能运行。而在软件系统里,操作系统是最最重要的系统软件。简单来说,操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。而内核,是一个操作系统的核心,是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。
内核是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行保护。通常把这一部分称之为操作系统的内核。
类UNIX系统上的内核是LINUX,严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
一些组织基于内核,自定义各种工具并打包发布,这种叫做LINUX发行版,通常我们使用的也都是LINUX发行版,比如Debian系列、Redhat系列、Suse系列。这些发行版一般在放出的时候就已经把内核以最稳定的方式编译好了,并且根据他们的测试和需求,把内核的许多属性自定义的启用和禁用了,这些发行版一般比较稳定。但是这些发行版一般发行周期都比较长,而内核的升级发行却非常快,而且每次升级都会有许多新的功能,如果想要使用这些新特性就要自己去编译内核了。当然编译内核不算太难也不是太简单,而且编译需要一定的时间(这和计算机的性能有关)。

编译内核步骤:

1.安装开发编译环境
2.下载LINUX内核源码压缩包
3.解压源码LINUX压缩包并切换工作路径到源码包目录
4.配置内核属性
5.编译内核
6.编译和安装内核模块
7.安装内核
8.启动

详细安装过程:

1.安装开发编译环境

Centos系列可以通过YUM安装开发软件包组来搭建开发编译环境

yum groupinstall "Development Tools"

DEBIAN系列可以通过APT安装开发软件包组来搭建开发编译环境

apt install build-essential

2.下载内核源码压缩包

LINUX内核源码压缩包的可以通过内核官方网站(https://www.kernel.org) 下载,也可以通过其他的软件源来下载。

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.12.2.tar.xz
(从内核官方网站上,下载版本为4.12.2的内核源码压缩包)

3.解压源码包

tar -xf linux-4.12.2.tar.xz
(linux-4.12.2.tar.xz为下载下来的内核源码压缩包文件名)

4.切换当前工作路径到解压过的源码包目录

cd linux-4.12.2
(linux-4.12.2为解压过的源码包目录名)

5.配置内核属性

make menuconfig //基于ncurse库编制的图形工具配置界面
make config //基于文本命令行的配置工具,不推荐使用
make xconfig //基于X11图形配置工具界面
make gconfig //基于gtk+的图形配置工具界面

注意:使用这些工具是需要解决一些依赖问题的。
例如:使用make menuconfig时需要下载ncurse软件包,而且也不能使用远程ssh工具(因为ssh不支持ncurse图形界面),不然会报错。

也可以使用当前系统上的内核配置文件进行二次修改定制,自定义启用或者禁用内核属性。

cp /boot/.config-4.12.2-amd64 ./config
(复制当前系统上的内核配置文件(在boot分区下一般以config开头后面跟当前系统内核版本号)并把重命名修改为.config)

6.编译内核

现在开始编译内核,中途可能会很多次失败,不要气馁,它的报错信息一般会提示我们应该怎样解决,一般情况下大多是缺少依赖包,这时候只要安装缺少的相关依赖包即可(一般是*.devel软件包),解决这些问题以后就可以接着编译了,如果还有错误重复上面的步骤。

make -j 4
(开始编译内核,-j后面用来指定线程数,指着就是漫长的等待过程了,一般需要1-3个小时的时间,性能特别好或者特别差的机器除外)

7.编译和安装内核模块

make modules_install
(这个过程是系统在/lib目录下创建一个以编译内核版本为目录名的文件夹,并把编译后的内核模块复制过去)

8.安装内核

make install
(这个过程是系统把编译过的相关内核文件复制到/boot目录下,并在grub中追加引导项)
安装编译后的内核,不会替换旧的内核,也就是说它会多内核共存于系统中。
如果前面的步骤没问题的话,之后重启就能看到在grub引导项中多了一条引导(一般含有编译的内核版本号),选择这个引导项启动就可以使用自己编译的内核启动系统。

注意:使用自己编译的内核,有可能会导致某些软件无法正常使用,或者出现一些莫名其妙的bug(一般不会出现错误),所以什么时候使用就看你自己选择了,使用需要谨慎。

你可能感兴趣的:(LINUX编译内核教程)