方案:官方 Debian Netboot (跳过 netboot.xyz)
不使用 netboot.xyz,因为它带有一个复杂的图形菜单。(家人云的LA地区居然不支持vga=788--“窄黑框”彻底卡死)
选择直接加载 Debian 官方的安装内核。官方内核支持直接在启动参数里强制开启“纯文本模式”和“串口输出”,这能 100% 解决黑屏/窄框问题。
iPXE (netboot.xyz) 的图形化菜单与你服务商的 VNC 渲染分辨率不匹配。这种情况在某些 KVM 虚拟化环境中非常顽固。官方内核不带复杂的菜单。
第一步:下载官方安装文件:
# 进入引导目录
cd /boot
# 下载 Debian 13 (Trixie) 官方网络安装内核和 initrd
wget https://deb.debian.org/debian/dists/trixie/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux
wget https://deb.debian.org/debian/dists/trixie/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
第二步:修改 GRUB 强制进入“纯文本串口模式”
1. 修正以下内容 寻找正确的磁盘对grub很重要。用uuid或自己找到正确的set root位置。(如:set root='(hd0,1)')
# 1. 获取 vda1 的 UUID
UUID=$(blkid -s UUID -o value /dev/sda3) //按下图要选sda3--不是efi/esp分区。
大多数时候显示这样,选vda3 (标准boot分区)|-vda1 254:1 0 1M 0 part
|-vda2 254:2 0 191M 0 part /boot/efi
|-vda3 254:3 0 763M 0 part /boot
//用lsblk看下boot分区位置
比如⬇️
2. 将配置写入 /etc/grub.d/40_custom(加入这个绝不黑屏的启动项;并注意修改网卡为eth0)
cat << EOF >> /etc/grub.d/40_custom
menuentry 'Debian Official Network Install (Text Mode)' {
insmod part_gpt
insmod ext2
# 使用 UUID 自动查找并设置根分区,比 (hd0,1) 更可靠
search --no-floppy --fs-uuid --set=root $UUID
linux /boot/linux console=tty0 console=ttyS0,115200n8 DEBIAN_FRONTEND=text
initrd /boot/initrd.gz
}
EOF3. 更新 GRUB 配置文件
update-grub
*注:`console=ttyS0` 是为了让你在面板的 **Serial Console** 里也能看到输出。* `DEBIAN_FRONTEND=text` 使用字符界面,这在任何 VNC 或串口下都能完美显示。
---
### 第三步:装完后的“灵魂”恢复 (只适合家人云/bitsflow和sda存储了配置的情况)
系统安装完成后重启,你会发现它又变回了纯净版。**此时务必执行最后一步,否则你的 Cloud-init 就彻底丢了:**
1. 登录系统后:`apt update && apt install -y cloud-init`。
2. **写入补丁**:强制认领商家的配置
echo -e "datasource_list: [ NoCloud ]\ndatasource:\n NoCloud:\n seed_device: /dev/sda" > /etc/cloud/cloud.cfg.d/99_virtfusion.cfg
附录:尝试复原商家cloud-init:
把你备份的 `05_logging.cfg` 丢进 `/etc/cloud/cloud.cfg.d/`。
执行 `cloud-init clean && cloud-init init`。
---
其他收尾:
修改这个文件末尾的ens3为eth0 `/etc/udev/rules.d/70-persistent-net.rules`
之后建议重启。
或者
sudo udevadm control --reload-rules && sudo udevadm trigger
sudo update-initramfs -u
这会重新触发规则,但不一定能在线改名成功,最稳妥的还是重启
看下`/etc/network/interfaces.d/50-cloud-init` 里面有你全部的ip信息包括v6(面板设过的地址都在,说明从cloud-init获得ip正常。
那之前安装时手动设置过的IP都是多余的了。可以清理掉。sudo mv /etc/network/interfaces /etc/network/interfaces.bak
sudo bash -c 'cat <
本文件由手动创建,基础回环接口
auto lo
iface lo inet loopback
包含 cloud-init 生成的配置
source /etc/network/interfaces.d/*
EOF'
---
适合ultravps的特殊vnc(freebsd的虚拟化/SYSbhve)
编辑/etc/default/grubGRUB_DEFAULT=0
GRUB_TIMEOUT=30
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="efi=runtime console=tty0 console=ttyS0,115200n8 verbose tsc=reliable"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
#lsblk ⬇️|-vda1 254:1 0 1M 0 part
|-vda2 254:2 0 191M 0 part /boot/efi
|-vda3 254:3 0 763M 0 part /boot
选择vda3
cat << EOF >> /etc/grub.d/40_custom
menuentry 'Debian Official Network Install (Text Mode)' {
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root $BOOT_UUID
linux /linux console=tty0 console=ttyS0,115200n8 DEBIAN_FRONTEND=text
initrd /initrd.gz}
EOF