在 Debian(以及一般的 Linux)里,“制作 overlay”通常指 OverlayFS(overlay filesystem) 的使用:把多个目录“叠加”成一个统一视图,常用于 Live CD、容器、系统定制、只读根文件系统 + 可写层等场景。
下面从 原理 → 手动制作 → 实际示例 → 启动集成 逐步说明。
OverlayFS 需要 4 个目录:
lowerdir : 只读层(基础系统)
upperdir : 可写层(修改内容)
workdir : 工作目录(内部使用,必须为空)
merged : 最终挂载点(你看到的结果)
关系:
merged = lowerdir + upperdir(upperdir 优先)
mkdir -p /mnt/lower /mnt/upper /mnt/work /mnt/merged
假设:
/mnt/lower 是 Debian 根文件系统(可以是真实系统或解压的 rootfs)/mnt/upper 是你以后修改的内容debootstrap bookworm /mnt/lower
或复制已有系统:
rsync -aH / /mnt/lower --exclude=/mnt --exclude=/proc --exclude=/sys
mount -t overlay overlay \
-o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work \
/mnt/merged
查看:
ls /mnt/merged
此时:
/mnt/merged 的文件 → 实际写入 /mnt/upper/mnt/lower 永远不变mount -t proc proc /mnt/merged/proc
mount -t sysfs sys /mnt/merged/sys
mount -o bind /dev /mnt/merged/dev
chroot /mnt/merged
完成后退出并卸载:
umount /mnt/merged/proc
umount /mnt/merged/sys
umount /mnt/merged/dev
umount /mnt/merged
常用于:
Debian 自带支持(需要 overlayroot 或手写 initramfs hook)
apt install overlayroot
编辑:
nano /etc/overlayroot.conf
示例:
overlayroot="tmpfs"
更新 initramfs:
update-initramfs -u
重启后:
GRUB 内核参数示例:
root=/dev/sda1
overlayroot=tmpfs
或自定义 init script 中:
mount -t overlay overlay \
-o lowerdir=/rootfs,upperdir=/rw/upper,workdir=/rw/work \
/merged
| 场景 | 说明 |
|---|---|
| Live CD | ISO 只读 + 内存可写 |
| 容器 | overlay 是 Docker 默认存储驱动 |
| 系统保护 | 防止误操作破坏系统 |
| 系统定制 | 基础系统 + 不同配置层 |
whiteout如果你指的是:
可以告诉我具体场景,我可以给你更针对性的方案。
如果你愿意,可以告诉我:
✅ 是想做 Live 系统 / 容器 / 根目录保护 / 定制镜像 哪一种?
我可以直接给你 完整可运行脚本。