在 Debian 下“用脚本建 overlay”通常指 用 shell 脚本创建 overlayfs(常用于 Live 系统、容器、只读根文件系统等)。下面给你可直接用的脚本示例 + 原理说明。
OverlayFS 需要:
/)挂载命令:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
/ 做成 overlay(常用于 Live Debian)#!/bin/bash
set -e
LOWER=/
UPPER=/overlay/upper
WORK=/overlay/work
MERGED=/overlay/root
# 创建目录
mkdir -p $UPPER $WORK $MERGED
# 挂载 overlay
mount -t overlay overlay \
-o lowerdir=$LOWER,upperdir=$UPPER,workdir=$WORK \
$MERGED
echo "Overlay mounted at $MERGED"
⚠️ 注意:
- 不能直接把
/再挂载回/- 通常是 initramfs 阶段 或 chroot 环境 使用
#!/bin/bash
set -e
ROOT_DEV=/dev/sda1
OVERLAY_DEV=/dev/sda2
mkdir -p /mnt/root /mnt/overlay /mnt/merged
mkdir -p /mnt/overlay/upper /mnt/overlay/work
mount $ROOT_DEV /mnt/root
mount $OVERLAY_DEV /mnt/overlay
mount -t overlay overlay \
-o lowerdir=/mnt/root,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work \
/mnt/merged
echo "Overlay root ready at /mnt/merged"
/etc/systemd/system/overlay-root.mount
[Unit]
Description=Overlay Root
[Mount]
What=overlay
Where=/merged
Type=overlay
Options=lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work
systemctl enable overlay-root.mount
docker run -it --rm \
--privileged \
debian bash
mount -t overlay overlay -o lowerdir=/a,upperdir=/b,workdir=/c /mnt
❌ workdir 和 upperdir 必须在同一文件系统
❌ overlay 不支持某些 syscall(如 rename 某些场景)
❌ 不能 overlay /proc、/sys 单独
❌ Debian 老内核(<4.0)不支持 overlayfs
如果你是指:
请告诉我具体场景,我可以给 apt / debootstrap 专用脚本。
如果你愿意,可以告诉我:
✅ 是 系统根 overlay 还是 目录 overlay
✅ 是否用于 Live / 容器 / 嵌入式
✅ Debian 版本(10 / 11 / 12)
我可以直接给你可投产的脚本。