在 Debian 安装程序(d-i)的简化 Shell 中找不到fdisk和parted(/usr/bin/fdisk /usr/bin/parted)。Debian 13 的安装程序主要依靠一个叫 partman 的内部组件进行分区,它并不一定把 fdisk 或 parted 这些标准二进制文件放在系统的临时 PATH 路径里。
服务商的后台默认从legacy BIOS启动,默认不给GPT分区表的选项。需要开启 “专家模式 (Expert Mode)”


1. 开启“专家模式 (Expert Mode)”——强制调出 GPT 选项

在专家模式下,安装程序会询问每一个细节,包括分区表类型。

  1. 退回主菜单: 在当前分区界面点 <Go Back>,一直退到安装程序的主菜单。
  2. 降低优先级: 找到 “Change debconf priority”(更改 debconf 优先级),将其设置为 low。
  3. 重新进入分区: 再次选择 “Partition disks”。
  4. 关键时刻: 当你选中磁盘并确认创建新分区表时,由于优先级为 low,它不再自动默认 MBR,而是会弹出一个列表让你选择:

    • msdos (即 MBR)
    • gpt (选这个!)

再进入安装菜单里的分区,新建分区表应该就可以选多种格式了,会有丰富的选项,包括mac和openbsd的分区表。

2. 如果还是不给选 GPT (最后的硬核手段)

如果专家模式依然固执地认为 Legacy BIOS 只能用 MBR,我们可以利用安装程序自带的 disk-label 工具(如果存在)或者通过 dd 彻底破坏旧签名。

在 Alt + F2 中输入:

# 1. 尝试使用 busybox 自带的 fdisk (有些版本包含)
busybox fdisk /dev/vda

# 2. 如果没有 busybox fdisk,用 dd 抹除磁盘头尾,迫使安装程序认为这是块新盘
dd if=/dev/zero of=/dev/vda bs=1M count=20
# 抹除末尾(假设 200GB 硬盘)
dd if=/dev/zero of=/dev/vda bs=1M seek=204700

完成后回到 UI,按刚才的“专家模式”再试一遍。


4. 成功切换到 GPT 后按以下分区

一旦你看到了 GPT 分区表,请务必手动创建以下结构,否则 GRUB 引导绝对会失败:

分区编号大小用途 (Use as)挂载点备注
Partition 11 MBReserved BIOS boot area(无)Legacy + GPT 必须有这个!
Partition 21 GBExt4 journaling file system/boot存内核和 GRUB
Partition 3剩余physical volume for encryption(无)你的加密 LVM 容器

继续安装,GRUB自动识别那1M分区并写入。【注意设置为:Reserved BIOS boot area】


还有最硬核的方式是进 Shell 用二进制方式“手写”一个 GPT 签名进去。但一般上面的流程就能解决问题了。

  1. 后面的步骤--GRUB的安装位置:选择物理磁盘 /dev/vda

当安装程序问你“将 GRUB 安装到哪个设备”时,请直接选择整块磁盘 /dev/vda,而不是某个分区(如 vda1 或 vda2)。

原因: GRUB 需要把它的第一阶段代码(Boot Image)写进磁盘最开头的 MBR 主引导记录(512 字节),然后它会自动识别你之前分好的那个 1MB BIOS Boot 分区,并将核心代码(core.img)嵌入进去。
  1. 底层逻辑(为什么这么做?)

    Stage 1 (MBR): 位于磁盘第 0 扇区。由于 BIOS 只能读到这里,所以必须装在磁盘头上。

    Stage 2 (BIOS Boot 分区): 也就是你刚才分的那个 1MB 空间。在 GPT 磁盘上,没有传统 MBR 磁盘那种“中间间隙”来藏 GRUB 的代码,所以 GRUB 会把原本应该放在间隙里的重型代码存进这个 1MB 的分区。

    Stage 3 (/boot 分区): 也就是你分的那个 1GB 空间。GRUB 成功启动后,会去这里加载内核和菜单配置。

为什么需要用GPT替代MBR?因为MBR(主引导记录)已经有几十年的历史了,它在处理“超过 4 个分区”时使用了一种叫 “链表” 的机制(即扩展分区里套着逻辑分区)。而MBR的逻辑分区表(EBR)非常脆弱,一旦分区时因为跨区块带来偏移,MBR就会报错。导致LVM或ZFS崩溃(尤其是复杂的的设置下)。所以高级应用几乎必须选GPT分区表。

另外MBR 没有备份。一旦这个只有 512 字节的扇区坏了,它就真的坏了。相比之下,GPT 分区表在磁盘末尾有一个备份,能自动修复这种尴尬。