Boot/Root 磁碟將核心與完整根檔案系統壓縮置入 1.44MB 軟碟,是獨立微型 Linux 系統的經典實作。核心在 RAMDISK 中解壓根檔案系統並掛載為真實根目錄,實現無硬碟開機。本文聚焦根檔案系統壓縮包的生成流程與關鍵組件裁剪技巧。
CONFIG_BLK_DEV_RAM:RAMDISK 支援CONFIG_BLK_DEV_RAM_SIZE=4096:預設 4MB RAMDISK(/dev/ram0)CONFIG_EXT2_FS:ext2 檔案系統支援(不可為模組)| 目錄/檔案 | 必要內容 | 說明 |
|---|---|---|
| /bin | sh, ls, cp, mv, mount, umount, insmod, rmmod | 基本維護指令,優先選用 busybox 縮減體積 |
| /sbin | init, fdisk, mke2fs, fsck, route, ifconfig | 系統管理工具 |
| /etc | inittab, fstab, rc.sysinit, passwd, group | 最小啟動設定檔 |
| /lib | ld-linux.so.*, libc.so.*, libm.so.* | 動態連結器與 C 函式庫,用 ldd 檢查相依 |
| /dev | console, tty*, null, zero, ram0, hd*, fd0 | 關鍵裝置節點,用 mknod 或 MAKEDEV 建立 |
| /proc, /sys, /tmp, /mnt | 掛載點目錄 | 空目錄即可 |
mkdir -p /tmp/rootfs/{bin,sbin,etc,lib,dev,proc,sys,tmp,mnt}cp -a 保留屬性,strip 去除二進位符號表cd /tmp/rootfs/dev && MAKEDEV console tty0 tty1 null zero ram0 hda1 hda2 fd0cd /tmp/rootfs
find . | cpio -o -H newc | gzip -9 > /tmp/rootfs.gz
# 或使用 ext2 映像檔
dd if=/dev/zero of=/tmp/rootfs.ext2 bs=1k count=4096
mke2fs -F /tmp/rootfs.ext2
mount -o loop /tmp/rootfs.ext2 /mnt
cp -a /tmp/rootfs/* /mnt/
umount /mnt
gzip -9 /tmp/rootfs.ext2
dd if=/boot/vmlinuz of=/dev/fd0 bs=1k seek=0
dd if=/tmp/rootfs.gz of=/dev/fd0 bs=1k seek=KERNEL_BLOCKS
rdev -r /dev/fd0 4096(設定 RAMDISK 大小),rdev /dev/fd0 /dev/fd0(設定根裝置)uClibc 或 musl libc 替代 glibc,大幅減小 /lib 體積root=/dev/ram0 initrd=rootfs.gz 可由 LILO/GRUB 傳遞