logo
0
0
Login
docs: add --tencent option to regional presets table

Debian 网络重装脚本

这是什么?

一个通过网络启动(network boot)方式,将任何 VPS 或物理机重装为最小化 Debian 系统的脚本。其工作原理是将 Debian 安装程序注入到 GRUB 中,并自动完成安装过程的配置。

非常适合以下场景:

  • 将 Oracle Cloud 的 Ubuntu 镜像更换为 Debian
  • 移除云服务商内置的监控代理
  • 创建最小、纯净的 Debian 环境
  • 使用 preseed 或 cloud-init 实现自动化安装
  • 拯救或恢复损坏的系统

快速上手

# 下载脚本 curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh chmod +x debi.sh # 基础安装 (会创建一个拥有 sudo 权限的 'debian' 用户) sudo ./debi.sh # 或者,直接以 root 用户安装 sudo ./debi.sh --user root # 准备就绪后重启 sudo reboot

默认设置: Debian 13 (trixie),DHCP 网络,创建一个名为 debian 并拥有 sudo 权限的用户,脚本会提示你为该用户设置密码。

平台支持

平台状态备注
KVM/物理机完全支持所有功能均可正常工作
大多数 VPS完全支持DigitalOcean, Vultr, Linode 等
⚠️ Google Cloud需要手动配置网络必须使用 --ip--gateway (DHCP 工作不正常)
⚠️ AWS EC2仅支持 BIOS尚不支持 UEFI 启动模式
容器不支持需要 GRUB 引导加载程序

环境要求:

  • KVM 虚拟化或物理机 (不支持容器)
  • GRUB 2 引导加载程序
  • Root 权限

区域预设

预设镜像源DNSNTP适用场景
默认deb.debian.orgGoogle DNStime.google.com全球通用
--cloudflaredeb.debian.orgCloudflaretime.cloudflare.com全球通用 (注重隐私)
--awscdn-aws.deb.debian.orgGoogle DNStime.aws.comAWS 实例
--aliyunmirrors.aliyun.comAliDNStime.amazonaws.cn中国大陆
--tencentmirrors.tencentyun.comDNSPodtime1.tencentyun.com腾讯云
--ustcmirrors.ustc.edu.cnDNSPodtime.amazonaws.cn中国大陆
--tunamirrors.tuna.tsinghua.edu.cnDNSPodtime.amazonaws.cn中国大陆

完整选项参考

系统和用户配置

选项默认值描述
--version 1313Debian 版本:10, 11, 12, 13, 14
--suite trixietrixieDebian 发行代号:stable, testing, sid
--user debiandebian用户名 (使用 root 则只创建 root 用户)
--password PASSWORD交互式提示用户密码 (如果未指定,则会提示输入)
--authorized-keys-url URL密码认证从 URL 加载 SSH 公钥 (例如 https://github.com/user.keys)
--no-account-setup创建用户跳过用户创建步骤 (需要通过控制台手动设置)
--sudo-with-password无需密码执行 sudo 命令时需要输入密码
--timezone UTCUTC系统时区 (例如 Asia/Shanghai)
--hostname NAME当前主机名系统主机名

网络配置

选项默认值描述
--interface autoauto网络接口 (例如 eth0, eth1)
--ip ADDRESSDHCP静态 IP:10.0.0.100, 1.2.3.4/24, 2001:db8::1/64
--static-ipv4DHCP自动使用当前系统的 IPv4 设置
--netmask MASK自动子网掩码:255.255.255.0, ffff:ffff:ffff:ffff::
--gateway ADDRESS自动网关 IP (使用 none 表示无网关)
--dns '8.8.8.8 8.8.4.4'1.1.1.1 1.0.0.1IPv4 的 DNS 服务器
--dns6 '2001:4860:4860::8888'2606:4700:4700::1111IPv6 的 DNS 服务器
--ethx一致性命名使用 eth0/eth1 风格的网卡名,而不是 enp0s3
--ntp time.google.comtime.google.comNTP 时间服务器

网络控制台 (远程安装)

选项默认值描述
--network-console禁用在安装过程中启用 SSH 访问

网络控制台用法:

  1. 使用 --network-console 参数并重启
  2. 等待 2-3 分钟,让 Debian 安装程序加载组件
  3. 通过 SSH 连接到你的服务器:ssh installer@YOUR_IP
  4. 使用多个终端窗口进行操作:
    • Alt+F1: 主安装界面
    • Alt+F2: Shell 终端
    • Alt+F3: 另一个 Shell 终端
    • Alt+F4: 系统日志 (可监控自动化安装进度)
    • 使用 Alt+Left/Alt+Right 切换

⚠️ 注意事项

如果使用了 --authorized-keys-url,SSH 的密码认证将被禁用 (必须使用 SSH 密钥登录),但你仍然需要设置一个用户密码,用于 VNC 控制台登录和执行 sudo 命令。

存储和分区

选项默认值描述
--disk /dev/sda自动检测目标磁盘 (如果有多块磁盘,此项为必填)
--no-disk-partitioning自动分区通过控制台手动分区
--filesystem ext4ext4根文件系统类型
--force-gpt启用创建 GPT 分区表
--no-force-gpt使用 GPT使用 MBR 分区表代替 GPT
--bios自动检测强制使用 BIOS 启动 (会创建 BIOS boot 分区)
--efi自动检测强制使用 EFI 启动 (会创建 EFI 系统分区)
--esp 106106EFI 系统分区 (ESP) 大小 (106=100MB, 538=512MB, 1075=1GB)

镜像源和仓库配置

选项默认值描述
--mirror-protocol httpshttps镜像源协议:http, https, ftp
--https启用--mirror-protocol https 的别名
--mirror-host deb.debian.orgdeb.debian.org镜像源主机名
--mirror-directory /debian/debian镜像源目录路径
--mirror-proxy URL用于下载和 APT 的 HTTP 代理
--reuse-proxy使用当前环境中的 http_proxy 变量
--security-repository URL自动安全更新仓库地址 (使用 mirror 表示与主镜像源一致)

APT 仓库组件

选项默认值描述
--apt-non-free-firmware启用包含 non-free-firmware (Debian 12+)
--apt-non-free禁用启用 non-free 仓库
--apt-contrib禁用启用 contrib 仓库
--apt-src启用启用源码仓库
--apt-backports启用启用 backports 仓库
--no-apt-non-free-firmware使用默认值禁用 non-free-firmware
--no-apt-non-free使用默认值禁用 non-free
--no-apt-contrib使用默认值禁用 contrib
--no-apt-src使用默认值禁用源码仓库
--no-apt-backports使用默认值禁用 backports

软件包安装

选项默认值描述
--install 'pkg1 pkg2'最小化额外安装的软件包 (用空格分隔,并用引号括起来)
--install-recommends启用安装推荐的软件包
--no-install-recommends安装推荐包跳过推荐的软件包
--upgrade safe-upgradesafe-upgrade软件包升级模式
--safe-upgrade默认在安装过程中执行安全的软件包升级
--full-upgrade安全升级执行完整的系统升级 (dist-upgrade)
--no-upgrade安全升级完全跳过软件包升级

内核选项

选项默认值描述
--kernel PACKAGElinux-image-ARCH内核软件包名称
--cloud-kernel标准内核使用为云环境优化的内核
--bpo-kernel稳定版内核使用来自 backports 的较新内核
--firmware自动检测为硬件安装 non-free 固件

高级选项

选项默认值描述
--ssh-port 222222自定义 SSH 端口
--bbr禁用启用 TCP BBR 拥塞控制算法
--architecture amd64自动检测目标系统架构:amd64, arm64, i386
--force-lowmem 1自动强制开启低内存模式:0, 1, 2 (适用于内存 <512MB 的机器)
--no-force-efi-extra-removable启用禁用 EFI 的 extra removable media 路径
--grub-timeout 55GRUB 菜单等待超时时间 (秒)

Debian 安装程序选项

选项默认值描述
--release-d-i自动使用发布版的 debian-installer
--daily-d-i自动使用每日构建版的 debian-installer

Cloud-Init 集成

选项默认值描述
--cidata /path/to/dir自定义 cloud-init 数据目录

Cloud-Init 用法:

# 创建 cloud-init 配置文件 mkdir my-cloud-config echo "instance-id: my-server" > my-cloud-config/meta-data cat > my-cloud-config/user-data << 'EOF' #cloud-config hostname: my-server packages: - htop - git EOF # 在安装时使用 sudo ./debi.sh --cidata my-cloud-config

开发与测试

选项默认值描述
--dry-run执行只生成配置文件,不执行安装
--hold重启安装后不重启
--power-off重启安装后关机而不是重启

使用示例

Oracle Cloud (Ubuntu → Debian)

sudo ./debi.sh --cloudflare --user debian

Google Cloud Platform

# GCP 需要手动配置网络 (请替换为你的 VPC 设置) sudo ./debi.sh --ip 10.128.0.100/24 --gateway 10.128.0.1

最小化安装

sudo ./debi.sh --no-install-recommends --install 'curl git vim' --no-upgrade

中国大陆部署

sudo ./debi.sh --ustc --timezone Asia/Shanghai --dns '119.29.29.29'

使用网络控制台安装

# 在安装过程中启用远程访问 (SSH 密钥用于网络登录,密码仍需用于 VNC/sudo) sudo ./debi.sh --network-console --authorized-keys-url https://github.com/yourusername.keys # 重启后,通过 SSH 连接: ssh installer@YOUR_IP

静态网络与 Cloud-Init

sudo ./debi.sh --ip 192.168.1.100/24 --gateway 192.168.1.1 --cidata ./cloud-config/

高级自定义配置

sudo ./debi.sh \ --version 13 \ --user admin \ --timezone Europe/London \ --disk /dev/nvme0n1 \ --filesystem btrfs \ --cloud-kernel \ --bbr \ --ssh-port 2222 \ --install 'htop iotop ncdu'

故障排查

撤销所有更改

# 移除所有修改并恢复原始的 GRUB 配置 sudo rm -rf /etc/default/grub.d/zz-debi.cfg /boot/debian-* sudo update-grub || sudo grub2-mkconfig -o /boot/grub2/grub.cfg

常见问题

检测到多块磁盘:

# 列出可用磁盘 lsblk # 指定目标磁盘 sudo ./debi.sh --disk /dev/sda

低内存 VPS (<512MB):

sudo ./debi.sh --force-lowmem 1

网络配置失败:

# 使用当前系统的网络设置 sudo ./debi.sh --static-ipv4 # 或者手动配置 sudo ./debi.sh --ip YOUR_IP/CIDR --gateway YOUR_GATEWAY

网卡需要固件 (firmware):

sudo ./debi.sh --firmware

安装过程调试:

# 只生成 preseed 文件 sudo ./debi.sh --dry-run # 启用网络控制台进行远程访问 (SSH 密钥用于远程登录,密码用于 VNC/sudo) sudo ./debi.sh --network-console --authorized-keys-url YOUR_KEYS_URL

工作原理

  1. 下载 Debian 安装程序/boot/debian-$VERSION/ 目录
  2. 根据你的配置生成 preseed 应答文件
  3. 修改 GRUB 配置 (添加一个新的安装程序菜单项)
  4. 将配置文件注入到安装程序的 initramfs
  5. 更新 GRUB 以加载新的启动选项

对你系统所做的更改:

  • /boot/debian-*/ 目录中添加文件
  • /etc/default/grub.d/zz-debi.cfg 创建 GRUB 配置文件
  • 更新 GRUB 菜单

在重启之前,所有这些更改都是安全且可逆的,可以使用上面的撤销命令来恢复。


作者 @bohanyang问题反馈GitHub 仓库