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(一般不会出现错误),所以什么时候使用就看你自己选择了,使用需要谨慎。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容