在 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 选项
在专家模式下,安装程序会询问每一个细节,包括分区表类型。
- 退回主菜单: 在当前分区界面点
<Go Back>,一直退到安装程序的主菜单。 - 降低优先级: 找到 “Change debconf priority”(更改 debconf 优先级),将其设置为
low。 - 重新进入分区: 再次选择 “Partition disks”。
关键时刻: 当你选中磁盘并确认创建新分区表时,由于优先级为
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 1 | 1 MB | Reserved BIOS boot area | (无) | Legacy + GPT 必须有这个! |
| Partition 2 | 1 GB | Ext4 journaling file system | /boot | 存内核和 GRUB |
| Partition 3 | 剩余 | physical volume for encryption | (无) | 你的加密 LVM 容器 |
继续安装,GRUB自动识别那1M分区并写入。【注意设置为:Reserved BIOS boot area】
还有最硬核的方式是进 Shell 用二进制方式“手写”一个 GPT 签名进去。但一般上面的流程就能解决问题了。
- 后面的步骤--GRUB的安装位置:选择物理磁盘 /dev/vda
当安装程序问你“将 GRUB 安装到哪个设备”时,请直接选择整块磁盘 /dev/vda,而不是某个分区(如 vda1 或 vda2)。
原因: GRUB 需要把它的第一阶段代码(Boot Image)写进磁盘最开头的 MBR 主引导记录(512 字节),然后它会自动识别你之前分好的那个 1MB BIOS Boot 分区,并将核心代码(core.img)嵌入进去。
底层逻辑(为什么这么做?)
Stage 1 (MBR): 位于磁盘第 0 扇区。由于 BIOS 只能读到这里,所以必须装在磁盘头上。
Stage 2 (BIOS Boot 分区): 也就是你刚才分的那个 1MB 空间。在 GPT 磁盘上,没有传统 MBR 磁盘那种“中间间隙”来藏 GRUB 的代码,所以 GRUB 会把原本应该放在间隙里的重型代码存进这个 1MB 的分区。
Stage 3 (/boot 分区): 也就是你分的那个 1GB 空间。GRUB 成功启动后,会去这里加载内核和菜单配置。