温馨提示×

怎样制作debian overlay

小樊
34
2026-10-19 05:20:35
栏目: 智能运维

在 Debian(以及一般的 Linux 系统)中,overlay 通常指 OverlayFS,一种联合文件系统,常用于:

  • Live CD / 容器
  • 在只读根文件系统上叠加可写层
  • 系统定制、调试、恢复

下面以 Debian 上使用 OverlayFS 为例,介绍常见制作方式。


一、OverlayFS 基本原理

OverlayFS 需要:

  • lowerdir:只读层(如原系统)
  • upperdir:可写层(修改存放这里)
  • workdir:临时工作目录(必须与 upperdir 同文件系统)
  • merged:最终挂载点(看到的组合视图)
merged = lowerdir + upperdir

二、手动创建 Debian Overlay(最简单方式)

1. 准备目录

mkdir -p /mnt/lower /mnt/upper /mnt/work /mnt/merged

2. 挂载 lower(例如原系统或镜像)

mount /dev/sda1 /mnt/lower

或用 squashfs:

mount -t squashfs rootfs.squashfs /mnt/lower

3. 挂载 overlay

mount -t overlay overlay \
  -o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work \
  /mnt/merged

现在 /mnt/merged 就是可写的 Debian 系统视图。


三、制作可启动的 Debian Overlay 系统(Live 风格)

常见组合:

ISO / 磁盘
├── squashfs (lower, 只读)
├── overlay (upper, 可写)
└── initramfs (负责挂载 overlay)

1. 制作 squashfs(lower)

apt install squashfs-tools
mksquashfs / /rootfs.squashfs -e /proc /sys /dev /mnt /tmp

2. 配置 initramfs 使用 overlay

编辑:

/etc/initramfs-tools/modules

添加:

overlay

创建 hook(可选):

/etc/initramfs-tools/scripts/init-bottom/overlay

示例脚本:

#!/bin/sh
mkdir -p /overlay/upper /overlay/work
mount -t overlay overlay \
  -o lowerdir=/root,upperdir=/overlay/upper,workdir=/overlay/work \
  /newroot

然后:

update-initramfs -u

四、在容器中“模拟” Debian Overlay

Docker 本质就是 overlay:

docker run -it debian bash

你也可以手动:

mkdir lower upper work merged
# 放 debian rootfs 到 lower
mount -t overlay overlay -o lowerdir=lower,upperdir=upper,workdir=work merged
chroot merged

五、常见用途总结

场景 用法
系统调试 overlay 原系统
只读系统 squashfs + overlay
多环境隔离 多个 upperdir
恢复模式 overlay 不破坏原系统

六、注意事项

  • workdir 和 upperdir 必须在同一文件系统
  • overlay 不支持所有 inode 操作
  • 删除文件在 upper 中是“白障文件”(whiteout)

如果你是指:

  • Debian Live 官方 overlay
  • initramfs 自动 overlay
  • Docker / podman overlay
  • PXE + overlay

可以告诉我具体场景,我可以给更针对性的步骤。

0 踩