编译自己的 Linux 内核时的 5 个有用技巧

Linux Kernel 是一个出色的软件工程。 它拥有超过一百万行代码,可以说是当今仍在积极开发中的最复杂的程序之一。 自 1990 年代后期以来,Linux 内核已被用于计算密集型项目以及准系统嵌入式应用程序中。

内容

什么是内核以及为什么要配置它?

尽管如此,Linux 内核只是一个程序,它充当计算机硬件和您日常使用的软件之间的链接。 它使您可以将各种设备用于您每天使用的程序。

一 example 这种硬件-软件链接的核心是高级 Linux 声音架构 (ALSA)。 ALSA 是一个内置于 Linux 内核的声音驱动程序框架。 除其他外,它还允许您轻松安装声卡并将其配置为立即与您喜欢的程序一起运行。

知道这一点,Linux 内核是普通用户在很大程度上不知道的程序。 在大多数情况下,每当您安装一个发行版时,您通常会得到一个开箱即用的内核。 如果您只是想让您的系统正常工作,这可能很有用。

但是,如果您使用的是 Arch 和 Gentoo 等发行版,从长远来看,能够配置您的内核是有益的。 为了 example,只有启用您想要的功能才能加快启动时间。

因此,本文旨在在编译您自己的 Linux 内核时提供五个有用的技巧。

笔记:查看这篇文章,了解如何开始编译自己的内核。

1.使用帮助系统

配置 Linux 内核时最有用的功能之一是帮助系统。 这是您可以在内核配置菜单中访问的内置功能。 这样,您就可以查看可以安装在内核中的每个功能和驱动程序的描述。

5 内核技巧 03 内核帮助示例

要使用这个系统,您需要做的就是在突出显示特定内核选项的同时按 Shift + /。 从那里,配置菜单将打印一张简短的幻灯片,说明该功能的作用。 为了 example,我可以按 Shift + / 到“PCI Support”选项来查看我需要启用它的所有选项。

5 内核技巧 04 Linux Pci 示例帮助

这样,您还可以使用相同的帮助系统来搜索有关特定内核功能的信息。 如果您想了解有关特定功能所需的所有选项的更多信息,这将特别有用。

为此,您可以在配置菜单中按 /。 然后,这将弹​​出一个小提示,您可以在其中键入特定选项的名称。 为了 example我可以按 / 然后输入“PCI”来搜索使用 PCI 标志的选项。

5 内核提示 05 内核搜索提示

2.禁用不必要的 HID 支持

Linux 内核经常将自己吹捧为具有几乎通用硬件支持的软件。 这样,您通常可以确定它将能够驱动您连接到它的任何设备。

5 内核技巧 06 Linux 硬件支持示例

然而,这种方法的一个问题是,包括每一点支持都会增加内核的整体大小和占用空间。 反过来,这可能导致恶意黑客可以轻松利用和侵入的缓慢二进制文件。

处理此问题的一种方法是删除您机器中不使用的硬件支持。 为了 example,Linux 内核在其默认配置中包含火线支持。 尽管如此,现在大多数机器默认不包括 Firewire 端口。

5 内核技巧 07 Linux Firewire 支持

知道这一点,查看可以禁用哪些硬件设备的一种快速方法是浏览“特殊 HID 驱动程序”部分。 这是您可以在配置菜单中的“设备驱动程序”和“HID 支持”下访问的类别。 在这里,内核将列出它可以支持的所有稀有和不寻常的设备。

5 内核技巧 08 特殊隐藏类别

这样,您还可以使用 Shift + / 和 / 来搜索本节中列出的每个选项。 为了 example,我可以选择“ELECOM 设备”并按 Shift + / 来查看该选项的作用。

5 内核技巧 09 Elecom 帮助示例

然后,您可以选择您想要的设备,然后按 N 禁用它们的功能。 就我而言,我将禁用所有特殊 HID 支持,因为我不使用任何这些设备。

5 个内核提示 10 个禁用的特殊隐藏驱动程序

3.禁用不必要的文件系统支持

另一种减小内核大小的快速方法是删除对不使用的文件系统的支持。 默认情况下,Linux 内核构建时可选择支持大多数类型的文件系统。 这些包括旧 BSD FFS 以及一些高性能系统,例如 BTRFS。

5 内核技巧 12 Linux 文件系统支持

在大多数情况下,普通用户只在日常使用中真正使用少数文件系统。 为了 example,Linux 系统通常使用 EXT2、EXT4、FAT32 和 NTFS 进行所有数据存储。 因此,可以删除对其他文件系统的支持并从内核中获得合理数量的额外性能。

要删除内核中不必要的文件系统支持,您需要做的就是转到“文件系统”类别。

5 内核技巧 13 内核文件系统类别

然后,您可以从那里选择要从系统中删除的文件系统,方法是突出显示它们并按 N。在我的情况下,我将只保留对 EXT2、EXT3、EXT4 和 JFS 的支持。

5 内核技巧 14 少数 Linux 文件系统已启用

4.禁用不必要的图形驱动程序

除了禁用特殊 HID 和文件系统支持之外,您还可以使用配置菜单删除您不使用的任何图形驱动程序。 这是因为 Linux 内核捆绑了对大多数现代图形设备的支持。 这意味着即使您的机器不使用显卡,您的内核仍然会像拥有显卡一样运行。

5 内核技巧 15 Linux 图形支持

与上面类似,这会导致内核二进制文件运行您不一定需要的功能。 反过来,如果您在旧硬件或弱硬件上运行 Linux,这可能会成为一个问题。

为了删除不必要的图形支持,您需要首先进入配置菜单的“设备驱动程序”部分。 然后,您需要从那里向下滚动并选择“图形支持”。

5 内核技巧 16 内核图形类别

完成后,内核将显示它为其提供驱动程序的所有图形硬件的列表。 然后,您可以在此处按 Y 或 N 启用或禁用特定驱动程序。

就我而言,我将只启用“Intel 8XX Graphics”和“Intel GMA500 Framebuffer”,因为它们是我笔记本电脑中唯一的图形设备。

5 内核技巧 17 仅英特尔显卡支持

5. 将驱动程序安装为模块

最后,Linux 内核的最佳特性之一是它能够删除自身的一部分并将它们作为模块重新加载。 这种方法不仅可以减小内核的大小,还可以让您灵活地使用内核功能。

为了 example,您可以将您的无线驱动程序变成一个模块,这样您就可以在不重新编译内核的情况下对其进行更新。 因此,模块对于想要拥有快速内核但又想要保持 Linux 出色的硬件兼容性的用户特别有用。

5 内核技巧 18 Linux 模块文件

要将内置功能转换为模块,您需要转到要转换为模块的部分和选项。 为了 example,要转换我的无线驱动程序,我需要转到“网络支持”部分,然后转到“无线”。

5 内核技巧 19 内核无线类别

然后,我可以在“cfg80211”驱动程序上按 M 键将它们转换为内核模块。

5 内核技巧 20 Linux 内核模块特性

完成后,您可以按六次 Esc 退出配置菜单。 反过来,这将弹出一个提示,询问您是否要保存所做的更改。 就我而言,我将选择“是”。

5 内核技巧 21 Save 内核配置

完成后,您现在可以通过运行以下命令来编译具有所需功能的 Linux 内核版本:

make && make modules_install
make install
5 内核技巧 11 Linux 内核编译

经常问的问题

是否有可能知道我的 Linux 内核需要的设备驱动程序?

是的! 对于刚开始编译自己的内核的用户来说,一个障碍是知道他们正在使用的确切硬件类型。 尽管这似乎是一项艰巨的任务,但您现在可以使用许多程序来简化此过程。

为了 example你可以同时使用 lspcilsusb 查看机器中所有连接的硬件外围设备。 此外,您还可以运行命令 sudo dmesg 检查内核是否正确读取您的设备。

是否可以恢复我从 Linux 内核中删除的功能?

是的! 一旦从 Linux 内核中删除了某个功能,就可以重新安装它。 为此,您需要返回配置菜单并在要重新启用的功能上按 Y 或 M。 这样做会告诉内核将该特定功能作为内置或模块包含在内。

完成后,您需要重新编译内核以创建具有所有新功能的二进制文件。 为此,您需要按六次 Esc 保存并退出配置菜单。 从那里,您现在可以通过运行开始重新编译内核 make.

我应该何时将 Linux 内核功能安装为模块?

将功能安装为模块在很大程度上取决于您对内核的需求。 知道这一点,一个好的经验法则是您应该只为对引导过程不重要的功能创建模块。

这是因为,在其核心,Linux 内核依赖于能够作为单个映像引导。 为了 example,删除关键部分(例如多处理器支持)可能会导致内核无法启动的情况。

因此,通常成为模块的内核组件要么是图形和其他硬件驱动程序,要么是网络接口。

图片来源: 不飞溅

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅