如何使用扇区 34 到 2047 创建 GRUB BIOS 引导分区?

如何使用扇区 34 到 2047 创建 GRUB BIOS 引导分区?

如何使用 GPT (33) 和第一个对齐分区 (2048) 之间的可用扇区为 GPT 磁盘的 GRUB 旧引导创建分区?

如果我已经分区了所有其他扇区fdiskgdiskparted会抱怨没有可用的自由扇区。

我最终做的是:

  • 使用以下命令将 GPT 导出到文本文件sfdisk
  • 通过手动指定添加另一个分区
    • 第一个 LBA(2048 年起 34 个)
    • 分区号
    • 起始扇区 (34)
    • 规模(2014 年行业)
    • GUID (21686148-6449-6E6F-744E-656564454649)
  • 将修改后的版本恢复到磁盘
  • 运行partprobe刷新可用分区数
  • 使用更改分区类型(BIOS 引导)fdisk

我知道这是一个棘手的解决方法,但我找不到一种方法可以在不首先破坏其他分区的情况下使用普通工具来完成此操作。

答案1

parted通常工作得很好。它会警告您有关对齐问题的信息,但在这种情况下您可以忽略它。

# truncate -s 1G foobar.img
# parted foobar.img
GNU Parted 3.4
Using /dev/shm/foobar.img
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) unit s
(parted) mklabel gpt
(parted) disk_set pmbr_boot on

(parted) print free
Model:  (file)
Disk /dev/shm/foobar.img: 2097152s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start  End       Size      File system  Name  Flags
        34s    2097118s  2097085s  Free Space

(parted) mkpart linux 2048s 2097118s
(parted) set 1 lvm on

在第 34 扇区创建 grub 分区:

(parted) mkpart grub 34s 2047s
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? Ignore
(parted) set 2 bios_grub on

最终结果是一个 GPT 分区表,在旧版 MBR 标头中设置了引导标志(某些机器需要),并且 grub 分区挤在第一个 1MiB 之前。

(parted) print free
Model:  (file)
Disk /dev/shm/foobar.img: 2097152s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start  End       Size      File system  Name   Flags
 2      34s    2047s     2014s                  grub   bios_grub
 1      2048s  2097118s  2095071s               linux  lvm

当然,对于全新的分区表来说,没有必要这样做。您也可以坚持 grub 分区的 MiB 对齐,无论哪种方式都没有坏处。

相关内容