Linux Minimal 的依赖分类与范围
“Minimal”的构成取决于目标:是“从零构建的最小系统”,还是“发行版的最小安装”。两类的最小依赖如下所述,便于快速对照与落地实施。
从零构建的最小系统依赖
-
核心组件
- Linux 内核:提供进程调度、内存管理与驱动框架。
- 用户态 init 程序:最简可用为 BusyBox init(也可使用轻量 init 如 runit)。
- C 运行库:选择其一——glibc(功能完整)或 musl libc(更轻量);若采用 BusyBox 静态编译,可暂时不依赖外部 C 库。
- 必需设备节点:至少包含 /dev/console 与 /dev/null,否则无法获得控制台与基本 I/O。
- 基础根文件系统目录:至少 /bin、/sbin、/etc、/proc、/sys、/dev(用于挂载 proc/sys 与设备节点)。
- 可选但常见:/lib/、/usr/{bin,sbin,lib} 等,用于放置库与额外工具。
-
构建时依赖(宿主机)
- 内核构建:gcc、make、flex、bison、libelf-dev、openssl/libssl-dev、libncurses-dev、zlib1g-dev、bc 等(用于配置与编译内核镜像,如 bzImage)。
- BusyBox 构建:gcc、make、ncurses-dev(静态编译时无需外部 C 库;动态链接则需准备目标 C 库 sysroot)。
-
引导与镜像(可选)
- BIOS 引导:Syslinux(如 isolinux.bin、ldlinux.c32)。
- ISO 制作:xorriso/mkisofs;UEFI 场景可使用 systemd-boot 等。
发行版的最小安装依赖
- 包组与核心工具
- Base/Minimal 元包(提供核心命令与基础库)。
- glibc(C 库)、coreutils、util-linux、e2fsprogs(文件系统与基础工具)、iproute2(网络栈)、systemd(或替代 init)、openssh-server/cli(远程管理按需)。
- 包管理与其依赖:dnf/yum/rpm(RHEL/CentOS/Fedora)、apt/dpkg(Debian/Ubuntu)、pacman(Arch)。
- 可选但常见:sudo、vim、wget/curl、ca-certificates、chrony/ntp(时间同步)。
极简 initramfs 的最小依赖示例
- 仅保留能启动到 shell 的最小集合
- BusyBox(静态编译) 作为 init 与基础命令集。
- /dev/console、/dev/null 设备节点。
- 初始化脚本挂载 proc、sysfs、devtmpfs,并启动 /bin/sh。
- 示例 init(精简):mount -t proc none /proc;mount -t sysfs none /sys;mount -t devtmpfs none /dev;exec /bin/sh。
快速对照表
| 场景 |
必需组件 |
构建/安装依赖 |
引导与镜像 |
| 从零最小系统 |
内核、BusyBox init、C 库(或静态)、/dev/console、基础目录 |
gcc、make、flex、bison、libelf-dev、openssl/libssl-dev、libncurses-dev、zlib1g-dev、bc |
Syslinux(BIOS)、xorriso/mkisofs(ISO)、UEFI 可选 systemd-boot |
| 发行版最小安装 |
Base/Minimal、glibc、coreutils、util-linux、iproute2、systemd、包管理器 |
包管理器自身与其依赖 |
无需额外引导工具(随安装介质) |