本文翻譯自 Bootdisk-HOWTO v4.0 (Tom Fawcett, Graham Chapman),說明如何從零建構自訂的 Linux 開機磁片 (boot/root diskset),用於系統救援、核心測試、嵌入式部署。預設讀者具備系統管理基礎 (掛載、檔案系統、/etc/passwd、fstab、root 權限操作)。
| 類型 | 組成 | 用途 |
|---|---|---|
| Boot Disk | 核心 + 最小根檔案系統 (通常壓縮在同一磁片) | 啟動核心、載入初始根檔案系統 |
| Root Disk | 完整根檔案系統 (bin, sbin, etc, lib, dev, modules...) | 提供救援環境、執行 fsck、修復系統 |
| Boot+Root 單磁片 | 核心 + 根檔案系統壓縮映像 (initrd/initramfs 前身) | 單片軟碟完整啟動 (空間極度受限) |
| 模組化 (Boot + 模組磁片) | 核心 + 獨立模組磁片 | 支援多種硬體,核心精簡 |
bootsect (LILO/GRUB/核心直接啟動)。root= 參數或 initrd 指定)。/sbin/init (PID 1),進入用戶空間。自製開機磁片必須包含:核心映像、最小根檔案系統 (含 init, sh, mount, fsck, insmod, 必要模組、裝置節點)。
bzImage。dd if=/dev/zero of=rootfs.img bs=1k count=1440 # 1.44MB 映像檔
mke2fs -F rootfs.img
mount -o loop rootfs.img /mnt/root
# 複製最小系統...
umount /mnt/root
gzip -9 rootfs.img
# 單片法 (核心 + 壓縮根fs)
dd if=bzImage of=/dev/fd0 bs=512
dd if=rootfs.img.gz of=/dev/fd0 bs=512 seek=... # 計算 offset
# 或使用 LILO/GRUB 安裝到磁片 MBR,再複製核心與 initrd
MAKEDEV 或 mknod 建立 /dev/console, /dev/null, /dev/ram*, /dev/tty*, 磁碟裝置等。insmod / modprobe 需在根檔案系統包含模組檔 (/lib/modules/$(uname -r)/) 與 /etc/modules.conf。busybox (單一執行檔提供 sh, mount, ls, cp...)、sash (stand-alone shell) 或精簡 glibc + 靜態連結工具。gzip、lzma、xz;核心參數 initrd= 載入,支援 root=/dev/ram0 rdinit=/sbin/init。| 方案 | 優點 | 適用場景 |
|---|---|---|
| Live USB (SystemRescue, Finnix, GRML) | 開箱即用、支援現代硬體、含大量救援工具 | 系統救援、磁碟修復、密碼重設 |
| initramfs / dracut / mkinitcpio | 核心整合、模組化、開機參數靈活、支援加密/LVM/RAID | 現代發行版標準開機流程 |
| PXE 網路開機 | 無實體媒體、集中管理、大量部署 | 資料中心、無碟工作站 |
| Ventoy / Rufus / balenaEtcher | 多 ISO 共存、持久化儲存、UEFI/BIOS 雙支援 | 安裝媒體製作、多系統測試 |
原文授權:GNU GPL v2 / LDP License | 譯者:朱漢農 | 翻譯日期:2000-07-27