一个普通的稳定 3* 内核现在大约 70 mb。但是很少有 30-10 mb 的 linux 发行版带有开箱即用的软件和其他东西。
在这些发行版中,Linux 内核怎么会这么小?仅剥离不需要的模块和驱动程序是否可以显着减小尺寸?还做了什么来减小内核大小?
Apa*_*che 40
是的。如果你将它们剥离(编译/制作模块只编译你需要的东西),压缩内核(优化大小)......它会导致一个如此小的内核。您可以为目标系统制作更小的系统。就像我了解我的电脑一样,我了解我的东西。所以我会编译我需要的东西。就像我自己的 SATA 驱动程序、USB 驱动程序等。没有别的。没有网络摄像头,没有旧的 IDE 驱动器,什么都没有。
另外:您遇到的较大的是整个内核(永远不需要使用)。即使是台式机也包含(大多数情况下,作为模块)很多不需要的东西。但是新手希望他们插入的每种硬件都能正常工作。
(请注意,模块在需要之前不会被加载。有 3 种状态:
[ ]- 不会被编译,不会成为你内核的一部分。
[M]- 将被编译为一个模块。
(你可以 modprobe 它, 或者您的系统将在需要时自动加载它。
取决于系统和用户空间。)
[X]- 它会被编译到内核中并且会一直存在。
具有小内核的发行版:
Red*_*ick 21
早期的 Linux 发行版,例如Tom 的 Root-Boot、MuLinux、Diet-router、(现已不复存在的)LOAF和许多其他发行版,都适合在一个或两个 1.44 MB 软盘上运行的 Linux 系统。
Linux 内核已经增长,但它是模块化的:内核模块根据需要加载。因此,仍然可以生成占用空间非常小的 Linux 发行版。
如果你阅读Linux_tiny.pdf 你会看到这个
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)
| 归档时间: |
|
| 查看次数: |
52701 次 |
| 最近记录: |