Jack将带你在Ubuntu16.04服务器上走过内核编译之旅。
以前有一段时间,升级Linux内核让好多用户打心中有所惧怕。在哪个时侯,升级内核包含了好多步骤,也须要好多时间。如今linux内核编译,内核的安装可以轻易地通过像apt这样的包管理器来处理。通过添加特定的库房,你能很轻易地安装实验版本的或则指定版本的内核(例如针对音频产品的实时内核)。
考虑一下,既然升级内核这么容易,为何你不乐意自行编译一个呢?这儿列出一些可能的缘由:
不管出于哪些缘由,懂得怎样编译内核是十分有用的,并且可以被视作一个通行权。当我第一次编译一个新的Linux内核(那是许久曾经了),之后尝试从它启动,我从中(马上就崩溃了,之后不断地尝试和失败)感遭到一种特定的激动。
既然这样,让我们来实验一下编译内核的过程。我将使用Ubuntu16.04Server来进行演示。在运行了一次常规的sudoaptupgrade以后,当前安装的内核版本是4.4.0-121。我想要升级内核版本到4.17,让我们当心地开始吧。
有一个警告:强烈建议你在虚拟机里实验这个过程。基于虚拟机,你总能创建一个快照,之后轻松地从任何问题中回退出来。不要在产品机器上使用这些方法升级内核,除非你晓得你在做哪些。
下载内核
我们要做的第一件事是下载内核源码。在找到你要下载的所需内核的URL。找到URL以后,使用如下(我以4.17RC2内核为例)来下载源码文件:
wget //git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz
在下载期间,有一些事须要去考虑。
安装须要的环境
为了编译内核,我们首先得安装一些须要的环境。这可以通过一个来完成:
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
勿必注意:你将须要起码128GB的本地可用c盘空间来完成内核的编译过程。因而你必须确保有足够的空间。
解压源码
在新下载的内核所在的文件夹下,使用该来解压内核:
tar xvzf linux-4.17-rc2.tar.gz
使用命令cdlinux-4.17-rc2步入新生成的文件夹。
配置内核
在即将编译内核之前,我们首先必须配置须要包含什么模块。实际上,有一些特别简单的方法来配置。使用一个命令,你能拷贝当前内核的配置文件,之后使用可靠的menuconfig命令来做任何必要的修改。使用如下命令来完成:
cp /boot/config-$(uname -r) .config
如今你有一个配置文件了,输入命令makemenuconfig。该命令将打开一个配置工具(图1),它可以让你遍历每位可用模块,之后启用或则禁用你须要或则不须要的模块。
图1:运行中的makemenuconfig
很有可能你会禁用掉内核中的一个重要部份,所以在menuconfig期间当心地一步步进行。假如你对某个选项不确定,不要去管它。或则更好的方式是使用我们拷贝的当前运行的内核的配置文件(由于我们晓得它可以工作)。一旦你已然遍历了整个配置列表(它特别长),你就打算好开始编译了。
编译和安装
如今是时侯去实际地编译内核了。第一步是使用make命令去编译。调用make命令之后回答必要的问题(图2)。这种问题取决于你将升级的现有内核以及升级后的内核。相信我,将会有特别多的问题要回答,因而你得预留大量的时间。
图2:回答make命令的问题
回答了短篇累牍的问题以后,你就可以用如下的命令安装这些之前启用的模块:
make modules_install
又来了,这个命令将花费一些时间,所以要么坐出来看着编译输出,或则去做些其他事(由于编译期间不须要你的输入)。可能的情况是linux内核编译,你想要去进行别的任务(除非你真的喜欢看着终端界面上纷飞而过的输出)。
如今我们使用这个命令来安装内核:
sudo make install
又一次,另一个即将花费大量可观时间的命令。事实上,makeinstall命令将比makemodules_install命令耗费更多的时间。去享用早餐,配置一个路由器,将Linux安装在一些服务器上,或则午睡一会吧。
启用内核作为引导
一旦makeinstall命令完成了,就是时侯将内核启用来作为引导。使用这个命令来实现:
sudo update-initramfs -c -k 4.17-rc2
其实,你须要将上述内核版本号替换成你编译完的。当命令执行完毕后,使用如下命令来更新grub:
sudo update-grub
如今你可以重启系统而且选择新安装的内核了。
恭喜!
你已然编译了一个Linux内核!它是一项花费时间的活动;并且,最终你的Linux发行版将拥有一个订制的内核linux 删除文件,同时你也将拥有一项被许多Linux管理员所倾向忽略的重要技能。
从Linux基金会和edX提供的免费“IntroductiontoLinux”课程来学习更多的Linux知识。
译文出处
via:
作者:JackWallen选题:lujun9972译者:icecoobe校对:wxy
打开Applinux定时器,阅读杂记
本文原创地址://q13zd.cn/sjlnhwsmnbyy.html编辑:刘遄,审核员:暂无