如何使用 GPT (33) 和第一个对齐分区 (2048) 之间的可用扇区为 GPT 磁盘的 GRUB 旧引导创建分区?
如果我已经分区了所有其他扇区、fdisk
、gdisk
并parted
会抱怨没有可用的自由扇区。
我最终做的是:
- 使用以下命令将 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 对齐,无论哪种方式都没有坏处。