萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

打造最小 Linux 核心:從 188K 到 100K 的極限精簡實戰

極限精簡:核心能有多小?

以 Mandrake 附屬的 Linux 2.2.15 為基礎,完全不修改原始碼,僅調整 make xconfig 組態:

  • 移除 floppy、SMP、MTRR、網路、SCSI
  • 區塊裝置僅保留舊版 IDE
  • 字元裝置全除
  • 檔案系統僅保留 minix
  • 移除音效支援

編譯得 188K 核心(vmlinux)。再將 Makefile 中的 -O2/-O3 改為 -Os(優化體積),再縮減 9K 至 179K。

逐步加入必要功能

加入功能核心大小增長量備註
基礎精簡核心179K—幾乎無實用功能
Network support(TCP/IP stack)189K+10K極高 CP 值
RTL8139 驅動(嵌入式常用)195K+6K
DOS 檔案系統 (FAT)213K+18K
ext2 取代 minix222K+9K

註:大小指核心檔(vmlinux)體積,代表所需 ROM 空間,非執行期記憶體用量。

Linux 執行最低記憶體需求

  • 核心本身約 600–800KB
  • 1MB 可開機,但載入 C library 吃力
  • 2MB 可跑基本指令
  • 完整系統建議 4MB 以上

222K 核心模組體積分析

模組大小
arch/i386/kernel/kernel.o81,946 B
kernel/kernel.o74,660 B
mm/mm.o68,053 B
fs/fs.o123,193 B
fs/filesystems.a106,504 B
net/network.a65,512 B
drivers/char/char.a87,556 B
drivers/block/block.a39,178 B
drivers/net/net.a25,680 B
ipc/ipc.o21,600 B
arch/i386/mm/mm.o10,569 B
其他數 KB
合計~731,233 B

檔案系統佔 ~230K(近 1/3),記憶體管理 80K,TCP/IP 65K,驅動程式 120K,SysV IPC 21K。

如何更進一步縮小?

  • 檔案系統是關鍵:Linux VFS + buffer cache + dcache 設計雖高效,但對全放在 Flash 的嵌入式系統多餘。移除這些機制可省 ~20K。
  • 跳過 VFS,直接寫驅動型檔案系統:230K 可壓至 ~50K,整體核心可達 ~100K。
  • uClinux 對 mm 模組精簡有限,因 memory allocation 無法省略。若兩者兼顧,100K 以下核心並非不可能。

結語

省下那幾十 KB,不如研究壓縮檔案系統(cramfs、squashfs、JFFS2 等)等更實用的技術。若有興趣,可嘗試 Linux 2.0 或 1.0 核心看能做多小——143K 已非挑戰,或許明天就會有人宣稱 120K。

copyright © 萬盛學電腦網 all rights reserved