簡単に言えば、ブート時に(組み込みシステム)このタスクを自動的に実行する必要があります。
私たちのエンジニアは画像を生産機器にフラッシュします。これらのイメージには小さなパーティションテーブルが含まれます。起動時にディスクで利用可能なすべての領域を使用するには、最後のパーティション(#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 3
thenresize2fs /dev/sda3
または使用されているファイルシステムタイプの他の適切なコマンド)。
DebianとUbuntuでは、次のようにパッケージ化されています。クラウドゲストユーティリティ。
答え2
現在のバージョンではparted
分割resizepart
で動作する必要があります(parted
理解100%
または同様のもの、後者はコマンドラインでオプションの解析を停止する-1s
ためにも必要です)。正しい値を確認するには、を--
使用できますunit s
。その後、ファイルシステムが出ます。print free
resize2fs
以前のバージョンには、パーティションとファイルシステムのサイズを一度に調整するコマンドがparted
ありました。resize
vfat
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
そのコマンドは削除されたため、パーティションを拡張するためにファイルシステムが提供するツール(たとえば)を使用してパーティションを拡張するには、resize
2つの手順を実行する必要があります。resizepart
resize2fs
ext*
答え3
正しい方法は、partedにパーセントの概念があるという事実を利用することです。だから
parted /dev/sda resize 3 100%