以 Mandrake 附屬的 Linux 2.2.15 為基礎,完全不修改原始碼,僅調整 make xconfig 組態:
編譯得 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 取代 minix | 222K | +9K |
註:大小指核心檔(vmlinux)體積,代表所需 ROM 空間,非執行期記憶體用量。
| 模組 | 大小 |
|---|---|
| arch/i386/kernel/kernel.o | 81,946 B |
| kernel/kernel.o | 74,660 B |
| mm/mm.o | 68,053 B |
| fs/fs.o | 123,193 B |
| fs/filesystems.a | 106,504 B |
| net/network.a | 65,512 B |
| drivers/char/char.a | 87,556 B |
| drivers/block/block.a | 39,178 B |
| drivers/net/net.a | 25,680 B |
| ipc/ipc.o | 21,600 B |
| arch/i386/mm/mm.o | 10,569 B |
| 其他 | 數 KB |
| 合計 | ~731,233 B |
檔案系統佔 ~230K(近 1/3),記憶體管理 80K,TCP/IP 65K,驅動程式 120K,SysV IPC 21K。
省下那幾十 KB,不如研究壓縮檔案系統(cramfs、squashfs、JFFS2 等)等更實用的技術。若有興趣,可嘗試 Linux 2.0 或 1.0 核心看能做多小——143K 已非挑戰,或許明天就會有人宣稱 120K。