linux内核怎么这么小?


50

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

Linux内核如何在这些发行版中如此之小? 只拆卸不需要的模块和驱动程序可以大大减小尺寸吗? 还有什么办法来减少内核大小?


3
另一种选择是在编译时使用大小优化,但我不确定它会产生多大的影响。
AndrejaKo


1
@AndrejaKo - 很多。 (如果你去小的话。)
Shiki

18
70 MB是源的大小。标准的编译和压缩内核大约2 MB,模块大小为10 MB。
ott--

1
是的,确实,它的3.6 MB,而initramfs在我的发行版中是21mb。
puzzled tux

Answers:


35

是。如果你将它们剥离(编译/制作模块只需要你需要的东西),压缩内核(优化大小)......它会导致这么小的内核。对于目标系统,您可以制作更小的那些。就像我认识我的电脑一样,我知道我的东西。所以我只是编译我需要的东西。就像我自己的SATA驱动程序,USB驱动程序等等。没有摄像头,没有旧的IDE驱动器,没有。

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

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

小内核发行版:


只是一个小小的补充 - [X]意味着它将被编译 内核,因此它总是被加载的原因。
Lawrence

20

早期的Linux发行版如 汤姆的根引导 MuLinux 饮食路由器 ,(现已解散) LOAF 现在许多其他人都离开了,所有的Linux系统都配备了一个或两个1.44 MB磁盘。

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

看到: 内核大小调整指南 - eLinux.org

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

  • 历史悠久的0.99pl15内核:Slackware 1.1.2,1994 301K
  • Fedora Core 2 1.2M
  • SuSE 9.1 1.5M
  • 2.6.5-tiny1测试配置:IDE,ext2,TCP,NIC 363K

9

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

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

make INSTALL_MOD_STRIP=1 modules_install

文档/ 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.

3
哇,1897996 kB差不多2GB!
netvope

3

大多数主要的发行版配置他们的内核具有最大的硬件支持,因此它可以与大多数计算机和您稍后插入的任何东西一起开箱即用。它们还使用在大多数情况下不需要的initrd系统。内核配置中还有一些选项可以使构建过程针对大小进行优化,并且还可以选择更好(但速度更慢)的压缩方法。最后,如果您正在查看内核源代码的大小,请记住它还包括对x86 / amd64之外的多种体系结构的支持,网络协议,文件系统以及您可能永远不会使用的其他功能。被禁用


1

这很简单,一个最小的系统只需要bootloader + kernel,尽管它几乎没用。每天使用的大多数命令都是系统的可选二进制文件,如sh,ls等。如果你对内部感兴趣, Linux From Scratch! 是一个很好的起点。


请注意,Busybox会处理大多数“日常”内容。
new123456

不,busybox只是将它们组合在一起。它在小型嵌入式系统中很流行,但对于桌面系统则不然。
pinxue
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.