割り当てられていないすべての領域を使用するように最後のパーティションを自動的に拡張し、バッチモードで parted を使用します。

割り当てられていないすべての領域を使用するように最後のパーティションを自動的に拡張し、バッチモードで parted を使用します。

簡単に言えば、ブート時に(組み込みシステム)このタスクを自動的に実行する必要があります。

私たちのエンジニアは画像を生産機器にフラッシュします。これらのイメージには小さなパーティションテーブルが含まれます。起動時にディスクで利用可能なすべての領域を使用するには、最後のパーティション(#3)を自動的に拡張する必要があります。

これがディスクの空き容量を見ればわかるのです。

> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  25.3MB  24.2MB  fat16        primary  legacy_boot
        25.3MB  26.2MB  922kB   Free Space
 2      26.2MB  475MB   449MB   ext4         primary
 3      475MB   1549MB  1074MB  ext4         primary
        1549MB  32.0GB  30.5GB  Free Space

パーティション3をN(30.5 GB)バイトに拡張する必要があります。

メッセージを表示せずにこの手順を自動化するにはどうすればよいですか?これは、3番目のパーティション以降の空き領域の動的サイズと組み合わせて使用​​する必要があります。

答え1

partedスクリプトを正しく書くことができなかったので(パーティションがマウントされたために確認を要求しましたが、理解できなかったか、私が見つけた他の答えとは-1s反対です100%)。成長部分ツールこれがまさにそのことです。

使い方は簡単です(growpart /dev/sda 3thenresize2fs /dev/sda3または使用されているファイルシステムタイプの他の適切なコマンド)。

DebianとUbuntuでは、次のようにパッケージ化されています。クラウドゲストユーティリティ

答え2

現在のバージョンではparted分割resizepartで動作する必要があります(parted理解100%または同様のもの、後者はコマンドラインでオプションの解析を停止する-1sためにも必要です)。正しい値を確認するには、を--使用できますunit s。その後、ファイルシステムが出ます。print freeresize2fs


以前のバージョンには、パーティションとファイルシステムのサイズを一度に調整するコマンドがpartedありました。resizevfat

Kobo e-readerの修正では、これを使用して内部メモリの3番目のパーティションサイズを最大に調整します。 (盲目的に、4番目のパーティションとmsdosテーブルなどがないとします。)

start=$(cat /sys/block/mmcblk0/mmcblk0p3/start)
end=$(($start+$(cat /sys/block/mmcblk0/mmcblk0p3/size)))
newend=$(($(cat /sys/block/mmcblk0/size)-8))

if [ "$newend" -gt "$end" ]
then
    parted -s /dev/mmcblk0 unit s resize 3 $start $newend
fi

/sys/block/.../したがって、カーネルがサポートしている場合は値を取得することもできます。ただし、partedそのコマンドは削除されたため、パーティションを拡張するためにファイルシステムが提供するツール(たとえば)を使用してパーティションを拡張するには、resize2つの手順を実行する必要があります。resizepartresize2fsext*

答え3

正しい方法は、partedにパーセントの概念があるという事実を利用することです。だから

parted /dev/sda resize 3 100%

答え4

または、次のようにして1行を作成できますsfdisk

echo ", +" | sfdisk -N 3 /dev/sda

バラよりKarel Zakさんのブログ投稿詳細については。

関連情報