Linux内核配置Linux内核配置Linux内核配置Linux内核配置
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux内核配置

发表 admin at 2025年2月28日
类别
  • 未分类
标签
コアサーバーV2プランご契約でドメイン更新費用が永久無料

虽然我们之前讨论了内核编译和配置,但我们重点关注的是总体思路。这次我们想更深入地研究配置部分,为您提供在定制内核以完美匹配您的硬件时所需的有用建议。

这背后的主要思想是,您需要非常了解您的硬件,才能为其构建专门的内核。首先,我们将介绍编译内核所需的内容,然后我们将介绍 Linux 内核配置、编译和安装。

请注意,这次如果您编译的是普通内核还是发行版内核,这并不是很重要。然而,我们会推荐一种“操作方式”,这当然并不意味着您必须遵循。阅读本指南后,您将能够决定什么最适合您。我们期望对 Linux 系统内部结构和开发工具有一定的了解。

在本教程中您将学习:

  • 如何下载Linux内核源代码

  • 如何确定您拥有什么硬件

  • 如何编译配置好的Linux内核

  • 如何安装和使用新内核

下载Linux内核源代码

首先,我们将从 GitHub 下载 Linux 源代码。这可以通过以下 git 命令来完成。


$ git clone https://github.com/torvalds/linux.git

尽管我们将在教程中缩小内核,但它仍然需要一些马力才能在适当的时间内进行编译。因此,在现代的多核系统上,大约需要 15 分钟,而在较旧的、较慢的系统上,甚至可能需要一天左右的时间。编译大型项目会给机器带来很大的压力,尤其是内存。

了解您的硬件

如果您已经确信自己知道计算机底层的内容,则可以跳过这一部分。如果没有,或者有一些疑问,请继续阅读。请花点时间完成这部分,因为这对于获得专门为您的机器制作的内核至关重要。

要获取有关系统上硬件的一些信息,您可以使用lspci命令。


$ sudo lspci -vv > lspcioutput

这将创建一个名为 lspcioutput 的文件(当然,如果您愿意,可以更改名称),并用命令 lspci 中的信息填充该文件,详细运行以获取更多详细信息。使用您喜欢的编辑器打开创建的文件并将其放在方便的地方。阅读全文以大致了解您的硬件组件。

继续我们的示例,以下是以太网控制器部分的 lspci 输出中出现的内容:


00:06.0 Ethernet controller: nVidia Corporation MCP65 Ethernet (rev a3)
        Subsystem: Giga-byte Technology Device e000
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- 
SERR- FastB2B- DisINTx+
         Status: Cap+ 66MHz+ UDF- 
FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0 (250ns min, 5000ns max)
        Interrupt: pin A routed to IRQ 42
        Region 0: Memory at f6007000 (32-bit, non-prefetchable) [size=4K]
        Region 1: I/O ports at c800 [size=8]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable+ DSel=0 DScale=0 PME-
        Capabilities: [50] MSI: Enable+ Count=1/8 Maskable+ 64bit+
                Address: 00000000fee0300c  Data: 4171
                Masking: 000000fe  Pending: 00000000
        Capabilities: [6c] HyperTransport: MSI Mapping Enable- Fixed+
        Kernel driver in use: forcedeth

正如您所看到的,您获得了大量有关硬件的信息,我们可能需要对这些信息进行排序才能获得我们需要的信息。在这种情况下,我们需要的是名称(nVidia以太网MCP65)和正在使用的驱动程序,即forceeth。

如果您想了解需要在内核配置中启用哪个选项才能获取forcedeth模块,请Google搜索“forcedeth kernel config”,您会发现我们正在寻找的是CONFIG_FORCEDETH。简单的。

顾名思义,lspci 不是一站式服务。作为一般规则,/proc 和 /sys 将为您提供有关硬件的大量信息。例如,您在 lspci 输出中找不到 CPU 信息。 /proc/cpuinfo 可准确帮助您提供所需的信息。

如果您想要支持外部 USB 连接设备,lsusb 就是您的好伙伴。如果您不确定特定硬件需要哪些驱动程序,并且 Google 也无法提供帮助,请尝试保留所有看似相关的选项。开销将是微不足道的,在您获得一些经验后,您将更好地知道要启用什么以及要禁用什么。不要期望从一开始就获得完美的内核,熟能生巧。

注意
请查看我们的“了解 Linux 系统硬件”教程,以查看一系列命令和提示,这些命令和提示将揭示有关系统中硬件的信息。

当你认为你已经涵盖了所有基础之后,坐下来再思考一下:你将来可能需要什么?外接读卡器?一个iPod?启用驱动程序,您将避免将来因缺少硬件支持而出现问题。

我们建议您使用经典的笔和纸写下您的硬件配置列表,详细说明所使用的内核模块等。文件来来去去,硬盘也是如此,但在机箱的某个地方粘一张纸会有所帮助你,或许还有其他人。

你用电脑做什么?你使用虚拟化吗?启用 Xen 和/或 KVM 支持。您的发行版是否强制执行 SELinux 或 Tomoyo 或其他安全框架?你需要它吗?启用相应部分。

现在我们已经设置完毕,让我们进入配置部分。

如何配置Linux内核

我们之前说过我们将描述我们的方法:好吧,就是这样。我们使用发行版的配置,当然,如果我们看到它适用于我们的硬件,这通常会发生,因为我们没有什么奇特的东西。

在您的 /boot 目录中应该有一个文件 config-5.13.0-27-generic,尽管确切的文件名可能会有所不同,因为它会随着每个新文件的变化而变化。 Linux 内核版本。我们可以简单地将其复制到克隆的 Linux 内核目录的 .config 文件中,在我们的例子中是 ~/linux/.config。

  1. 调整以下命令以使用您自己的路径和文件名。

    
    $ cp /boot/config-5.13.0-27-generic ~/linux/.config/.config 
    

    使用与您要编译的内核版本尽可能接近的版本。因此,您将确保不会遇到兼容性问题。

  2. 如果您只想按原样使用配置文件,只需发出:

    
    $ make oldconfig 
    

    然后,继续编译。然而,我们不希望这样,所以我们只执行这个命令:

    
    $ make menuconfig 
    
  3. 您将看到一个基于诅咒的、易于使用的菜单。转到“加载备用配置文件”并输入配置文件的名称(在我们的示例中,推荐使用 .config)。您现在可以继续更改选项并最后保存配置文件。

  4. 在“常规设置”中,我们通常保持原样,但您当然可以自由更改任何您喜欢的内容。通常的警告适用:不要改变你不知道的东西。请记住,这种类型的配置是基于依赖关系的:如果禁用/启用某个项目,则依赖于该项目的那些项目也会受到影响。因此,例如,如果您禁用网络,所有与网络相关的选项也将自动禁用。

  5. 必须更改“处理器类型和功能”以反映您的目标处理器:我们有基于 AMD K8 的 CPU,因此我们选择“处理器系列 -> Opteron/Athlon64/Hammer/K8”。

  6. 在“网络支持”中,由于这是一个具有简单以太网连接的台式机/工作站,因此我们禁用了业余无线电、红外、蓝牙、无线和其他不适用的选项。当然,您的里程可能会有所不同。请记住,每个项目都有一个关联的“帮助”菜单,可通过屏幕底部的“帮助”按钮访问,您将了解驱动程序的功能、其硬件覆盖范围等。

  7. 进一步讨论“设备驱动程序”,这里您可能需要禁用很多东西,因为这里是 Linux 支持的大部分硬件驱动程序。将硬件配置表放在手边并做出明智的选择。如果一开始您的新内核无法启动,请启动一个工作内核(将启动加载程序的超时设置为 10 秒左右,以便您有时间进行选择)并查看出了什么问题。使用树内文档和互联网。

  8. 进一步讨论“内核黑客”,如果您想成为一名内核开发人员,在这里您将找到帮助您隔离和记录错误的选项。否则,请保持原样,因为调试选项往往会导致系统膨胀并减慢系统速度。

  9. 完成后,选择“保存备用配置文件”并输入 .config (再次推荐),然后退出。现在您已准备好编译内核了。不过,最后的建议是:首先要谨慎行事,然后逐渐消除不需要的驱动程序,直到获得一个苗条的、可以工作的内核。从大到小比从大到小更容易。

构建和安装 Linux 内核

现在我们已经为内核配置了正确的选项,我们可以继续编译它。如前所述,编译过程可能需要相当长的时间,具体取决于系统的硬件。

  1. 在任何系统上构建 Linux 内核实际上都是相同的:

    
    # make
    

    这将构建您稍后将安装的内核映像。您可以使用 -jn 作为 make 参数,其中 n 是系统中 CPU 核心的数量 + 1,以启用并行当然,建设这将加快这一进程。

  2. 下一步也是通用的:

    
    # make modules_install
    
  3. 在大多数发行版上,下一步也将是相同的。在其他一些平台上,例如 Arch,您将需要使用 cp 而不是 make。您会找到每个发行版在线安装自定义内核的方法,或者您需要创建一个内核包并使用常用的包管理工具简单地安装它。不管怎样,请记住,发行版的文档在这里优先。

    
    # make install
    
  4. 现在......您已经安装了新的内核,让我们测试一下!重新启动并选择新内核进行启动。

排除内核中的错误

如果您构建了一个普通内核并发现了一个错误,例如一些错误或恐慌,请阅读文档(内核树根目录中的REPORTING-BUGS)并尽可能完整地记录您的错误。如果它是发行版修补的内核,当然,请使用该发行版的错误报告工具,维护人员将与上游联系以解决问题。

结束语

始终随身携带一个良好工作的内核和配置文件,以节省自己的时间和精力。一个好的自定义内核通常会给您一个响应更快的系统,特别是如果您使用包含几乎所有可以想象的内核驱动程序的通用发行版。祝你好运。

©2015-2025 Norria support@alaica.com