Debian镜像个性化定制全指南
一、场景与工具选择
二、Docker 镜像定制
FROM debian:bookworm-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl wget vim less sudo bash-completion \
iproute2 iputils-ping dnsutils net-tools && \
rm -rf /var/lib/apt/lists/*
COPY my-script.sh /usr/local/bin/my-script.sh
RUN chmod +x /usr/local/bin/my-script.sh
WORKDIR /app
EXPOSE 8080
CMD ["/usr/local/bin/my-script.sh"]
构建与运行:docker build -t my-custom-debian .
docker run -it --rm my-custom-debian
三、Live 系统镜像定制(live-build)
sudo apt-get update
sudo apt-get install -y live-build
mkdir live-system && cd live-system
lb config
echo "task-lxde-desktop firefox-esr" > config/package-lists/desktop.list.chroot
lb config \
--bootappend-live "boot=live components locales=zh_CN.UTF-8 keyboard-layouts=us" \
--debian-installer live
lb config \
--mirror-bootstrap https://mirrors.tuna.tsinghua.edu.cn/debian/ \
--mirror-chroot-security https://mirrors.tuna.tsinghua.edu.cn/debian-security/ \
--debootstrap-options "--variant=minbase"
mkdir -p config/includes.chroot/etc/live/config
echo 'LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"' \
>> config/includes.chroot/etc/live/config/user-setup.conf
cat > config/hooks/auto_ssh.hook.chroot << 'EOF'
#!/bin/sh
update-rc.d ssh defaults
echo "root:admin" | chpasswd
EOF
chmod +x config/hooks/auto_ssh.hook.chroot
lb build 2>&1 | tee build.log
# 测试 ISO
sudo apt-get install -y qemu-system-x86
qemu-system-x86_64 -cdrom live-image-amd64.hybrid.iso -m 2048
# 生成 HDD/USB 镜像
lb clean --binary
lb config -b hdd
lb build
四、云镜像定制(PVE/云平台通用)
sudo apt-get update
sudo apt-get install -y libguestfs-tools wget
wget -c https://cdimage.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2
virt-customize -a debian-13-generic-amd64.qcow2 \
--smp 2 --verbose \
--timezone "Asia/Shanghai" \
--run-command "sed -i 's|Types: deb deb-src|Types: deb|g' /etc/apt/sources.list.d/debian.sources" \
--run-command "sed -i 's|generate_mirrorlists: true|generate_mirrorlists: false|g' /etc/cloud/cloud.cfg.d/01_debian_cloud.cfg" \
--update --install "wget curl nano vim sudo unzip mtr-tiny iputils-ping dnsutils net-tools \
lsb-release ca-certificates bash-completion fail2ban dialog netbase \
iproute2 whois ssh dbus systemd systemd-sysv locales apt-utils \
gnupg2 apt-transport-https rsyslog logrotate less rsync \
qemu-guest-agent haveged systemd-timesyncd" \
--run-command "apt-get -y autoremove --purge && apt-get -y clean" \
--run-command "sed -i 's/^#\\?\\s*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config" \
--run-command "sed -i 's/^#\\?\\s*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config" \
--append-line "/etc/systemd/timesyncd.conf:NTP=ntp.aliyun.com" \
--delete "/var/log/*.log" \
--delete "/var/lib/apt/lists/*" \
--delete "/var/cache/apt/*" \
--truncate "/etc/apt/mirrors/debian.list" \
--append-line "/etc/apt/mirrors/debian.list:https://mirrors.tuna.tsinghua.edu.cn/debian" \
--truncate "/etc/apt/mirrors/debian-security.list" \
--append-line "/etc/apt/mirrors/debian-security.list:https://mirrors.tuna.tsinghua.edu.cn/debian-security" \
--delete "/var/lib/cloud/seed/nocloud-net/var/lib/cloud/instance" \
--write /var/lib/cloud/seed/nocloud-net/user-data:"#cloud-config
users:
导入 PVE 后首次启动将由 Cloud-Init 完成用户、SSH、时区与网络的自动配置。
- 注意事项
- 避免与 **ifupdown** 和 **systemd-networkd** 混用导致网络异常;按需选择一种网络管理方式。
- 若需要 **USB 直通**等完整内核模块,优先选择 **generic** 镜像;**genericcloud** 更精简。
- 定制过程建议在内存 **≥4GB** 的主机上执行,减少因内存不足导致的失败。