网站搜索

内核 3.16 发布 - 在 Debian GNU/Linux 上编译和安装


内核是任何操作系统的核心。内核的主要功能是充当应用程序 - CPU、应用程序 - 内存和应用程序 - 设备(I/O)之间的中介。除了执行其他任务外,它还充当内存管理器、设备管理器并参与系统调用。

对于Linux来说,内核是它的心脏。 Linux 内核是根据 GNU 通用公共许可证发布的。 Linus Torvalds 于 1991 年开发了 Linux 内核,并发布了初始内核版本 0.01。 2014年8月3日(今年)Kernel 3.16发布。在这22年里,Linux内核取得了长足的发展。现在有数千家公司、数百万独立开发者为 Linux 内核做出贡献。

粗略估计大品牌及其对当前 Linux 内核的贡献,根据 Linux 基金会Linux 内核开发报告预计将有 1700 万行代码。

  1. 红帽 – 10.2%
  2. 英特尔 – 8.8%
  3. 德州仪器 – 4.1%
  4. 利纳罗 – 4.1%
  5. 苏塞 – 3.5%
  6. IBM – 3.1%
  7. 三星 – 2.6%
  8. 谷歌 – 2.4%
  9. 视觉雕刻系统 – 2.3%
  10. 欧胜微电子 – 1.6%
  11. 甲骨文 – 1.3%
  12. 博通 – 1.3%
  13. 英伟达 – 1.3%
  14. 飞思卡尔 – 1.2%
  15. 英格斯科技 – 1.2%
  16. 思科 – 0.9%
  17. Linux 基金会 – 0.9%
  18. AMD – 0.9%
  19. 学者 – 0.9%
  20. NetAPP – 0.8%
  21. 富士通 – 0.7%
  22. 平行 – 0.7%
  23. ARM – 0.7%

百分之七十的内核开发是由开发人员完成的,他们在公司工作并为此付费,听起来很有趣吗?

Linux Kernel 3.16 面向生产环境中的个人和公司发布,他们将出于多种原因更新其内核,其中一些原因包括。

  1. 安全补丁
  2. 稳定性增强
  3. 更新的驱动程序 - 更好的设备支持
  4. 处理速度提高
  5. 最新功能等

本文旨在以 Debian 方式更新 Debian 内核,这意味着更少的手动工作、更低的风险,而且更完美。我们还将在本文的后面部分更新 Ubuntu 内核。

第1步:下载内核3.16

在继续之前,我们必须了解当前已安装的内核。

avi@tecmint:~$ uname -mrns 

Linux tecmint 3.14-1-amd64 x86_64

关于选项:

  1. -s:打印操作系统(此处为“Linux”)。
  2. -n:打印系统主机名(“howtoing”,此处)。
  3. -r:打印内核版本(“howtoing 3.14-1-amd64”,此处)。
  4. -m:打印硬件指令集(“x86_64”,此处)。

从下面的链接下载最新的稳定内核。不要对那里的补丁下载链接感到困惑。下载明确注明“最新稳定内核”的版本。

  1. https://www.kernel.org/

或者你也可以使用wget来下载内核,这样更方便。

avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.xz

步骤2:验证内核3.16签名

下载完成后,在继续之前,强烈建议验证内核签名。

avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.sign

签名验证需要针对未压缩的文件进行。这需要针对各种压缩格式(即 .gz、.bz2、.xz)的一个签名。

接下来,解压缩 Linux 内核映像。

avi@tecmint:~/Downloads$ unxz linux-3.16.tar.xz

对照签名进行验证。

avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign

注意:如果上述命令抛出 gpg: Can't check signature: public key not found 错误。这意味着我们需要从 PGP 服务器手动下载公钥。

avi@tecmint:~/Downloads$ gpg --recv-keys  00411886

下载密钥后,再次验证密钥。

avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign

您是否注意到有关 gpg 密钥验证的两件事。

  1. gpg:来自“Linus Torvalds <[email >”的良好签名。
  2. 主密钥指纹:ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886 。

不用担心密钥指纹,我们现在确定存档正常并已签名。让我们继续前进吧!

第 3 步:安装所需的软件包

在我们开始构建内核之前,我们需要安装某些软件包来简化内核构建和安装过程,并以无风险的 Debian 方式进行。

安装 libcurse5-dev、fakeroot 和 kernel-package。

avi@tecmint:~/Downloads$ sudo apt-get install libncurses5-dev
avi@tecmint:~/Downloads$ sudo apt-get install fakeroot
avi@tecmint:~/Downloads$ sudo apt-get install kernel-package

步骤 4:构建内核 3.16

成功安装上述软件包后,我们就可以构建内核了。转到提取的 Linux 内核映像(我们在上面提取,同时验证签名)。

avi@tecmint:~/Downloads$ cd linux-3.16/

现在,重要的是复制当前的内核配置以作为 root 用户显示工作目录。

cp /boot/config-'uname -r' .config

它正在复制 /boot/config-'uname -r' 到当前工作目录“/home/avi/Downloads/linux-3.16”并将其保存为“.config'。

这里“uname -r”将自动替换为您当前安装的内核版本并进行处理。

由于无法以正常方式查看点文件,因此您需要在当前工作目录中使用选项“-a”和ls来查看该文件。

ls -al

构建 Linux 内核的方法有3种。

  1. make oldconfig:这是一种交互式方式,内核逐一询问它应该支持什么,不支持什么。这是一个非常耗时的过程。
  2. make menuconfig:它是一个基于命令行菜单的系统,用户可以在其中启用和禁用选项。它需要 ncurses 库,因此我们使用上面的库。
  3. make qconfig/xconfig/gconfig:它是基于图形菜单的系统,用户可以在其中启用和禁用选项。它需要 QT 库。

显然我们将使用“make menuconfig”。

害怕构建内核?你不应该这样。很有趣,你会学到很多东西。您应该记住以下这些事情。

  1. 您的硬件需求和适当的驱动程序。
  2. 在您自己构建内核时选择新功能,例如高内存支持。
  3. 优化内核 – 仅选择您需要的驱动程序。它将加快您的启动过程。如果您不确定任何驱动程序,最好将其包括在内。

现在,运行“make menuconfig”命令。

make menuconfig

重要:您必须选择“SELECT – ENABLE LOADABLE MODULE SUPPORT”,如果您忘记这样做,您将会遇到困难。

注意:在打开的配置窗口中,您可以配置网卡、蓝牙、触摸板、显卡、文件系统支持(例如 NTFS)的各种选项以及许多其他选项。

没有教程可以指导您应该选择什么、不应该选择什么。你只能通过研究、在网络上学习东西、从howtoing教程中学习以及以其他所有可能的方式来了解这一点。

您可能会看到有一个选项“内核黑客”。黑客攻击?是的!这里是探索的意思。您可以在内核黑客下添加各种选项并利用许多功能。

接下来,选择通用驱动程序选项

网络设备支持。

输入设备支持。

加载我们从 /boot/config-`uname –r`.config 保存的配置文件 (.config)。

单击“确定”,保存并退出。现在清理源代码树并重置内核包参数。

make-kpkg clean

第5步:编译内核3.16

在开始编译内核之前,我们需要导出CONCURRENCY_LEVEL。根据经验,并发级别有一条规则,即向内核核心添加数字 1。如果您有 2 个核心,请导出 CONCURRENCY_LEVEL=3。如果您有 4 个核心,请导出 CONCURRENCY_LEVEL=5。

要检查处理器的核心,您可以使用 cat 命令,如下所示。

cat /proc/cpuinfo
样本输出
Sample Output
processor	: 0 
vendor_id	: GenuineIntel 
cpu family	: 6 
model		: 69 
model name	: Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz 
stepping	: 1 
microcode	: 0x17 
cpu MHz		: 799.996 
cache size	: 3072 KB 
physical id	: 0 
siblings	: 4 
core id		: 0 
cpu cores	: 2 
apicid		: 0 
initial apicid	: 0 
fpu		: yes 
fpu_exception	: yes 
cpuid level	: 13 
wp		: yes

您可以看到上面的输出,我有 2 个核心,因此我们将导出 3 个核心,如下所示。

export CONCURRENCY_LEVEL=3

设置正确的 CONCURRENCY_LEVEL 将加快内核编译时间。

fakeroot make-kpkg --append-to-version "-tecmintkernel" --revision "1" --initrd kernel_image kernel_headers

这里的“tecminkernel”是内核构建名称,它可以是任何名称,包括您的姓名、主机名、昵称或其他任何名称。

内核编译需要花费大量时间,具体取决于正在编译的模块和机器的处理能力。到编译的时候,先看一下内核编译的一些常见问题。

经常问的问题

Q1.我的内核编译了很长时间。是否正常。
Q2。如果我在编译时中断内核,我需要重新开始吗?
Q3。编译后的文件可以在不同的系统上用来更新内核吗?
Q4。您会托管您的编译文件吗?
Q5.我的存储库中是否有 fakeroot 和 ncurses5-dev 等软件包?
Q6.安装最新内核后,我能否启动到最后一个内核。
Q7.我在更新内核时遇到问题。你会帮助我吗?是否收费?
Q8.我的公司在更新内核时面临问题。您的团队会协助我们吗?是否收费?

FAQ到此结束,让我继续编译过程。成功编译内核后,它会创建两个文件(Debian 软件包),其中一个目录位于我们当前工作目录的“上方”。

我们当前的工作目录是。

/home/avi/Downloads/linux-3.16/

Debian 软件包创建于。

/home/avi/Downloads

要验证它,请运行以下命令。

cd ..
ls -l linux-*.deb

接下来,运行如此创建的 Linux 映像文件。

dpkg -i linux-image-3.16.0-tecmintkernel_1_amd64.deb

运行如此创建的 Linux 头文件。

dpkg -i linux-headers-3.16.0-tecmintkernel_1_amd64.deb

全做完了!我们已经在 Debian 上成功构建、编译并安装了最新的 Linux Kernel 3.16 以及所有其他依赖项。此外,Debian 软件包能够自动更新引导加载程序 (GRUB/LILO)。是时候重新启动并测试最新的内核了。

请务必注意启动过程中可能收到的任何错误消息。重要的是要了解该错误以解决它们(如果有)。

reboot

Debian 再次启动后,单击“高级选项”即可查看可用和已安装内核的列表。

查看已安装内核的列表。

选择最新编译的内核(即3.16)来启动。

检查内核版本。

uname -mrns

现在安装的最新版本设置为自动启动,您无需每次都从高级启动选项中选择它。

第6步:安装预编译内核3.16

对于那些不想在 Debian (x86_64) 上编译自己的内核并希望使用我们在本教程中构建的预编译内核的人,他们可以从下面的链接下载它。该内核可能不适用于您可能拥有的某些硬件。

  1. linux-image-3.16.0-howtoing.com_kernel_1_amd64.deb
  2. linux-headers-3.16.0-howtoing.com_kernel_1_amd64.deb

接下来,使用以下命令安装预编译的内核。

dpkg -i linux-image-3.16.0-linux-console.net_kernel_amd64.deb
dpkg -i linux-headers-3.16.0-linux-console.net_kernel_amd64.deb

可以使用命令从系统中删除未使用的内核。

apt-get remove linux-image-(unused_version_number)

注意:在彻底测试最新内核后,您应该删除旧内核。不要匆忙做出决定。仅当您知道自己在做什么时才应该继续。

如果你在删除你想要的内核时做错了什么,或者删除了你不应该删除的内核,你的系统将处于一个无法工作的阶段。

卸载未使用的内核后,您可能会收到类似的消息。

  1. 链接 /vmlinuz 是一个损坏的链接。
  2. 删除符号链接 vmlinuz。
  3. 您可能需要重新运行引导加载程序[grub]。
  4. 链接 /initrd.img 是一个损坏的链接。
  5. 删除符号链接 initrd.img 。
  6. 您可能需要重新运行引导加载程序[grub]。

这是正常现象,您无需担心。只需使用以下命令更新 GRUB。

/usr/sbin/update-grub

您可能需要更新 /etc/kernel-img.conf 文件并禁用“do_symlinks”,以禁用这些消息。如果您能够重新启动并再次登录,则没有问题。

目前为止就这样了。我将再次在这里发表另一篇有趣的文章。在此之前请继续关注并连接到 Howtoing。不要忘记在下面的评论部分向我们提供您的宝贵反馈。也请告诉我们您在遇到内核编译和安装时的经历。

另请阅读

  1. 在 Ubuntu 中安装内核 3.16
  2. 在 Debian Linux 中编译并安装内核 3.12