Bashスクリプトでsgdiskを使用してパーティションサイズを確認する方法

Bashスクリプトでsgdiskを使用してパーティションサイズを確認する方法

次のようなbashスクリプトでsgdiskを使用します。

sgdisk --clear /dev/vda --set-alignment=1 --new 1:34:2047 --typecode 1:EF02 -c 1:"grub"  -g /dev/vda
sgdisk --new 2:2048:16779263 --typecode 2:8300 -g /dev/vda
sgdisk --new 3:16779264:20971486 --typecode 3:8200 -g /dev/vda

この方法は、デバイスが事前によく知られていてセクタがハードコーディングされている場合にのみ機能します。

セクタ値のハードコーディングを削除したいです。代わりに、スクリプトが実行される前にディスクのサイズを知らせずにスクリプトを実行したいと思います。パーティション1を作成したら、パーティション3の既知の固定金額をスワップ用に予約し、残りはパーティション2用に予約します。

最も簡単な方法は、スワップパーティションを#2に設定することです。私は何をすべきかを知っています。しかし、私ができるかどうかを知りたかったパーティション3のスワップスペースを保存しながら、これを実行してください。。これは、sgdiskが次のステップでパーティション3に割り当てられたサイズを考慮して、パーティション2のサイズまたは終了セクター値を計算する必要があることを意味します。

sgdiskのマニュアルページを読んでも、これを行う方法についての手がかりは提供されません(または実行できる場合でも)。

答え1

以下が機能します。

sgdisk --clear /dev/vda --set-alignment=1 --new 1:34:2047 --typecode 1:EF02 -c 1:"grub"  -g /dev/vda
sgdisk --new 2:0:-2G --typecode 2:8300 -g /dev/vda
sgdisk --new 3:0:0 --typecode 3:8200 -g /dev/vda

思ったよりずっと簡単です。sgdiskすべての計算を実行します。キーは、マンページに記載されているマイナス記号です(以前は見逃しました)。

デフォルトの開始セクタの後に2GiBポイントを指定する+ 2Gなど、数字の前に「+」または「-」記号を追加して、指定されたデフォルト範囲の開始または終了に基づいて位置を指定できます。または、-200M は、使用可能な最後のセクタより前の 200MiB ポイントを指定します。。開始値または終了値0はデフォルト値を指定し、

関連情報