セクター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

最終結果は、レガシーMBRヘッダー(一部のシステムに必要)にブートフラグが設定され、最初の1MiBの前にgrubパーティションが圧縮されたGPTパーティションテーブルです。

(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

もちろん、まったく新しいパーティションテーブルにはこれは必要ありません。グラップパーティションのMiBアライメントに固執することもできます。どちらにしても害はありません。

関連情報