现在,一个普通的稳定 3* 内核大约有 70 mb。但是,很少有 Linux 发行版的大小为 30-10 mb,并且附带可直接运行的软件和其他内容。
这些发行版中的 Linux 内核怎么会这么小? 只删除不需要的模块和驱动程序就能显著减小大小吗? 还有什么方法可以减小内核大小?
答案1
是的。
- 如果您将它们剥离(只编译您实际需要的模块。)
- 优化内核大小(即:-Os)
- 压缩内核(例如XZ)
这些“选项”在标准内核中都可用,您可以在配置步骤中执行此操作。您不需要任何特殊工具。
使用这三个东西将产生一个很小的内核。您可以为目标系统制作更小的内核。就像我了解我的电脑一样,我了解我的东西。所以我只编译我需要的东西。比如我自己的 SATA 驱动程序、USB 驱动程序等。没有其他的。没有网络摄像头,没有旧的 IDE 驱动器,什么都没有。
您遇到的较大的是整个内核。它们使用最通用的选项进行编译,能够在大多数硬件上无问题地运行,并且它们包含几乎所有可用作模块的驱动程序。这些模块不会降低内核的速度,因为模块是按需加载的。
(在配置阶段,模块有 3 种状态:
[ ]
- 不会被编译,不会成为内核的一部分。
[M]
- 将被编译为模块。
(您可以对它进行 modprobe,或者您的系统会在需要时自动加载它。
取决于系统、用户空间。)
[X]
- 它将被编译到内核中并且将始终存在。
具有较小但仍然通用的内核的发行版:
答案2
早期的 Linux 发行版,例如汤姆的根靴,穆Linux,饮食路由器,(现已解散)面包以及许多现已离世的人,都在一张或两张 1.44 MB 的软盘上安装了可运行的 Linux 系统。
Linux 内核虽然不断增大,但仍然是模块化的:内核模块根据需要加载。因此,仍然可以生成占用空间很小的 Linux 发行版。
如果你读Linux_tiny.pdf 你会看到这个
- 历史性的 0.99pl15 内核:Slackware 1.1.2,1994 年:301千
- Fedora Core 2: 1.2米
- SuSE 9.1: 1.5米
- 2.6.5-tiny1 测试配置:IDE、ext2、TCP、NIC: 36.3万
答案3
默认内核配置支持尽可能多的硬件。未精简的默认配置内核大小为 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.
答案4
它非常简单,一个最小的系统只需要 bootloader + kernel,尽管它几乎没什么用。大多数日常使用的命令都是系统的可选二进制文件,比如 sh、ls 等。如果你对内部机制感兴趣,从头开始学习 Linux!是一个很好的起点。