linux内核怎么可以这么小?

puz*_*tux 62 linux kernel

一个普通的稳定 3* 内核现在大约 70 mb。但是很少有 30-10 mb 的 linux 发行版带有开箱即用的软件和其他东西。

在这些发行版中,Linux 内核怎么会这么小?仅剥离不需要的模块和驱动程序是否可以显着减小尺寸?还做了什么来减小内核大小?

Apa*_*che 40

是的。如果你将它们剥离(编译/制作模块只编译你需要的东西),压缩内核(优化大小)......它会导致一个如此小的内核。您可以为目标系统制作更小的系统。就像我了解我的电脑一样,我了解我的东西。所以我会编译我需要的东西。就像我自己的 SATA 驱动程序、USB 驱动程序等。没有别的。没有网络摄像头,没有旧的 IDE 驱动器,什么都没有。

另外:您遇到的较大的是整个内核(永远不需要使用)。即使是台式机也包含(大多数情况下,作为模块)很多不需要的东西。但是新手希望他们插入的每种硬件都能正常工作。

(请注意,模块在需要之前不会被加载。有 3 种状态:
[ ]- 不会被编译,不会成为你内核的一部分。
[M]- 将被编译为一个模块。
(你可以 modprobe 它, 或者您的系统将在需要时自动加载它。
取决于系统和用户空间。)
[X]- 它会被编译到内核中并且会一直存在。

具有小内核的发行版:

  • “新手期望”作为一名 20 年的专业计算机技术和 Linux 老手发言......我希望事情也能正常工作。 (4认同)

Red*_*ick 21

早期的 Linux 发行版,例如Tom 的 Root-BootMuLinuxDiet-router、(现已不复存在的)LOAF和许多其他发行版,都适合在一个或两个 1.44 MB 软盘上运行的 Linux 系统。

Linux 内核已经增长,但它是模块化的:内核模块根据需要加载。因此,仍然可以生成占用空间非常小的 Linux 发行版。

请参阅:内核大小调整指南 - eLinux.org

如果你阅读Linux_tiny.pdf 你会看到这个

  • 历史性的 0.99pl15 内核:Slackware 1.1.2,1994301K
  • Fedora Core 2: 1.2M
  • SuSE 9.1: 1.5M
  • 2.6.5-tiny1 测试配置:IDE、ext2、TCP、网卡: 363K


Lek*_*eyn 11

默认内核配置被配置为支持尽可能多的硬件。具有默认配置的非剥离内核导致大小为 1897996 kB(包括内核 + 模块)。当剥离许多不必要的驱动程序和选项时(如果我拥有 Clevo 笔记本,为什么我需要 HP 模块),它导致大小为 892892 kB,与库存内核相比,大小减少了 53%。

安装内核模块时,附加INSTALL_MOD_STRIP=1选项。这将去除所有调试符号并将我的大小减少 92%(从 892892 kB 到 69356 kB)。请注意,这只会影响要安装的模块,而不影响内核 (vmlinuz) 本身:

make INSTALL_MOD_STRIP=1 modules_install
Run Code Online (Sandbox Code Playgroud)

Documentation/kbuild/kbuild.txt

INSTALL_MOD_STRIP
--------------------------------------------------
INSTALL_MOD_STRIP, if defined, will cause modules to be
stripped after they are installed.  If INSTALL_MOD_STRIP is '1', then
the default option --strip-debug will be used.  Otherwise,
INSTALL_MOD_STRIP value will be used as the options to the strip command.
Run Code Online (Sandbox Code Playgroud)

  • 哇,1897996 kB 几乎是 2GB! (5认同)