安装驱动程序会增加 Linux 内核的内存占用吗?

安装驱动程序会增加 Linux 内核的内存占用吗?

我读到过,Linux 内核是单内核,它在一个文件中包含驱动程序。

例如,我有两个 Linux 内核 3.16.0.40 和 3.16.0.50,当前启动的系统是 3.16.0.40,并且安装了 nvidia 驱动程序

驱动程序是否被推入内核?

如果是这样,如果我从 grub 中选择 3.16.0.50 并启动系统

它可以从以前的内核访问当前安装的驱动程序吗?

在 Linux 内核之间切换会影响需要该驱动程序的软件吗?

答案1

这取决于。

Linux 内核有一个特性叫做可加载内核模块 (LKM)

由于驱动程序通常以内核模块的形式构建,因此我交替使用“驱动程序”和“模块”这两个术语。模块是以*.ko(内核对象) 结尾的文件。它们通常位于下面的子文件夹中/lib/modules

  • 回答你的标题问题:(内核占用空间增加)

    内置了所有模块/驱动程序的内核不会在运行时增加内存占用。所有内容都在启动时加载。如果驱动程序是内核模块,则它们可能会在稍后加载,从而在稍后阶段增加内核占用空间。

    当您比较内置所有驱动程序的内核和带有模块的内核的文件大小时,带有模块的内核更小。模块的大小就是差异所在。

  • 文本问题:(访问以前内核的驱动程序)

    不,这是不可能的。每个驱动程序/模块都需要为其运行的确切内核构建。因此,您将在模块根路径下看到一个带有内核名称的目录/lib/modules

更多信息请参阅Linux 可加载内核模块指南。了解内核和模块的一个好方法是自己构建一个内核。这并不像听起来那么难。有教程对于 Ubuntu以及原料仁.(如果你用谷歌搜索,你可能会找到更多教程)。

答案2

内核在安装到系统之前进行编译,因此其大小是固定的。驱动程序和任何其他模块或程序都不会影响内核的大小。只有重新编译内核才会改变其大小。

这就是为什么 Linux 有这么多版本的原因。从小型到大型。有些版本在编译时就完全没有 GUI 界面,以便对只需要终端连接(如物联网)的项目来说小而精简。有些版本有自定义 GUI,如 Ubuntu 和 RedHat 等。

您可能可以选择 GUI、Gnome 或 KDE。但这就像汽车上的选项一样。您可以更换油漆并添加真皮座椅,但引擎盖下仍然是 4 缸。

相关内容