普通稳定的3 *内核现在约为70 mb。 但是有很少的Linux发行版30-10 MB,软件和其他东西开箱即用。
Linux内核如何在这些发行版中如此之小? 只拆卸不需要的模块和驱动程序可以大大减小尺寸吗? 还有什么办法来减少内核大小?
普通稳定的3 *内核现在约为70 mb。 但是有很少的Linux发行版30-10 MB,软件和其他东西开箱即用。
Linux内核如何在这些发行版中如此之小? 只拆卸不需要的模块和驱动程序可以大大减小尺寸吗? 还有什么办法来减少内核大小?
Answers:
是。如果你将它们剥离(编译/制作模块只需要你需要的东西),压缩内核(优化大小)......它会导致这么小的内核。对于目标系统,您可以制作更小的那些。就像我认识我的电脑一样,我知道我的东西。所以我只是编译我需要的东西。就像我自己的SATA驱动程序,USB驱动程序等等。没有摄像头,没有旧的IDE驱动器,没有。
另外:你遇到的更大的是整个内核(永远不需要使用)。即使是桌面版也包含(大多数情况下,作为模块)很多不需要的东西。但新手们希望他们插入的各种硬件都能正常工作。
(注意,模块在需要之前不会加载。有3种状态:
[ ]
- 不会编译,不会成为你内核的一部分。
[M]
- 将编译为模块。
(您可以对其进行modprobe,或者您的系统会在需要时自动加载它。
取决于系统,userland。)
[X]
- 它将被编译到内核中并且将一直存在。
小内核发行版:
早期的Linux发行版如 汤姆的根引导 , MuLinux , 饮食路由器 ,(现已解散) LOAF 现在许多其他人都离开了,所有的Linux系统都配备了一个或两个1.44 MB磁盘。
Linux内核已经发展,但不要忘记它是模块化的,内核模块是根据需要加载的。因此,仍然可以生成占用空间非常小的Linux发行版。
如果你读 Linux_tiny.pdf 你会看到这个
默认内核配置配置为支持尽可能多的硬件。具有默认配置的非剥离内核导致大小为1897996 kB(包括内核+模块)。当剥离许多不必要的驱动程序和选项时(如果我拥有Clevo笔记本,为什么我需要HP模块),它的大小为892892 kB,与库存内核相比,尺寸减少了53%。
安装内核模块时,请附加 INSTALL_MOD_STRIP=1
选项。这将剥离所有调试符号,并为我减小92%的大小(从892892 kB到69356 kB)。请注意,这只会影响要安装的模块而不影响内核(vmlinuz)本身:
make INSTALL_MOD_STRIP=1 modules_install
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.
大多数主要的发行版配置他们的内核具有最大的硬件支持,因此它可以与大多数计算机和您稍后插入的任何东西一起开箱即用。它们还使用在大多数情况下不需要的initrd系统。内核配置中还有一些选项可以使构建过程针对大小进行优化,并且还可以选择更好(但速度更慢)的压缩方法。最后,如果您正在查看内核源代码的大小,请记住它还包括对x86 / amd64之外的多种体系结构的支持,网络协议,文件系统以及您可能永远不会使用的其他功能。被禁用
这很简单,一个最小的系统只需要bootloader + kernel,尽管它几乎没用。每天使用的大多数命令都是系统的可选二进制文件,如sh,ls等。如果你对内部感兴趣, Linux From Scratch! 是一个很好的起点。