..

基于 gpt 分区的 iscsi 引导踩坑

Model: ATA Example Disk (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system  Name  Flags
 1      1049kB 1000MB  999MB   fat32              boot, esp
 2      1000MB  537GB  536GB   ext4

上面这个分区表看起来非常正常。
boot 分区也拥有 /EFI/BOOT/bootx64.efi 文件来进行引导。但是这个磁盘却无法通过 ipxesanboot 命令成功引导。具体报错类似这样:

Boot from SAN device 0x80 failed: Error 0x7f22208e (http://ipxe.org/7f22208e)

磁盘里面是一个基于 chroot 安装的 alpine 系统。使用的 grub 引导。但是目前错误看起来根本没有走到 grub 的阶段。反复检查了很多地方都没有找到问题所在。最后无意间留意到这个 pmbr_boot 的 flag。之前没有怎么见过它,查询了一下发现它的描述是 this flag enables the boot flag on the GPT’s protective MBR partition. 看着好像也没有什么问题。但是还是尝试将其删除看看。运行命令:

(parted) disk_set pmbr_boot on

最后再次尝试 ipxe 引导,终于看到了 grub 的菜单。