debugfs を使用して ext3/ext4 ファイルシステムを拡張するにはどうすればよいですか?

debugfs を使用して ext3/ext4 ファイルシステムを拡張するにはどうすればよいですか?

ファームウェアで使用される ext4 ファイルシステムのデフォルト サイズを拡大したい状況にあります。

問題は、resize2fs一部のファイルシステム機能をクリアしたり、ジャーナルをデバイスのパーティションの先頭に再配置したりするなどの余分な作業を実行することです (その結果、デバイスは何かをマウントする前にクラッシュし続け、adb起動する前にカーネル コンソールにアクセスする方法がわからないため、コンソールをデバイスのディスプレイに印刷するためのアクセス方法やカーネル パラメータの調整方法がわかりませんconsole=)。

debugfsこれは拡張用なので、通常は再配置は必要ありません。では、空き inode の数 (必要な場合) とともにサイズを変更するにはどうすればよいのでしょうか。つまり、どのフィールドset_super_valueを設定し、どの数値を選択すればよいのでしょうか。

さらに重要なことには、グループ記述子のチェックサムを設定するにはどうすればいいですか?

答え1

ファイルシステムが非常に小さい場合(128MB未満)を除き、スーパーブロック内の整数を変更するだけでファイルシステムのサイズを変更することはできません。ファイルシステムを有効活用するには、他のメタデータ構造を更新する必要があります。かもしれないdebugfs の「set_super_value」(ssv) コマンドを使用してスーパーブロックの s_blocks_count フィールドを更新し、e2fsck を実行して、不足しているメタデータ自体を再構築できるようにします。

これを実行できるかどうかは、ファイルシステムのサイズをどの程度変更するか、およびファイルシステムのフォーマット時に「resize_inode」機能が有効になっているかどうかに大きく依存します。そうでない場合、e2fsck が再構築する欠落したメタデータが他の重要なファイルシステムの内容と重複し、他の問題が発生する可能性があります。

これが機能するかどうかを確認する最良の方法は、ファイルシステム全体のイメージを作成し、それをテストすることです。

関連情報