SDカードディスクイメージの作成中に問題が発生しました

SDカードディスクイメージの作成中に問題が発生しました

パーティションサイズが3.1GBのArmbianカスタムイメージを作成し、使用が終了しました。現在、GPT(GUIDパーティションテーブル)を使用して起動可能な64 GB SDカードに書き込まれます。

問題は、Ubuntuを使用してカードのイメージを作成しようとしたときに63 GBのサイズのイメージファイルを取得しますが、60 GBの空き容量のあるイメージファイルを望まないことです。

truncateコマンドを使用して画像ファイルを短縮し、 を使用して画像を生成する別の方法を探しましたが、うまくいきませdd count=ん。これにより、ddインストール時に「空き容量」とPMBRの両方を含むイメージファイルが作成され、truncate作業中のイメージファイルが削除されます。

それでは、(私が何か間違っていない場合)、ブート情報を含む3GBのSDカードイメージをどのように生成しますか?

ベストアンサー1

truncate素晴らしいツールです。パーティションテーブルに定義されているすべてのパーティションが含まれるように、イメージを縮小する必要があります。つまり、最後に最も近いパーティションの終了セクタが(必ずしも最も高い番号のパーティションである必要はありません)、画像のセクタが必要ですN(番号付けは最初から始まるため)。N+1+10

ただ使ってみるgdisk -l imageとわかりますN

カードは512バイトセクタを使用する可能性が高く、パーティションテーブルは512バイトセクタとして解釈されると有効です(比較:この仮定が成立しない場合は、何が起こるかを確認してください。)。したがって、(N+1)*512バイトが必要です(またはそれ以上の場合、それ以上は致命的ではありません)。truncateだから。

最初にカードからこのバイト数を直接読み取ると、同じ結果が表示されます。簡単なアプローチ(POSIXではありませんが、これ)はいhead -c number-of-bytes-here /dev/sdx > image

次に、セカンダリ(バックアップ)GPTとして33の追加の論理セクタが必要です。truncateもう一度使用して33*512ファイル(truncate -s +16896 image)にバイトを追加してください。最初のものを使用して画像を目的の最終サイズに縮小することができますがtruncate(または詳細を読むhead)、2つのステップでこれを行うと、追加の33セクタにゼロが含まれ、一時的にRubbishを妨げる可能性があります。

最初の切り捨て(または画像の一部を生成する)では、元のセカンダリGPTが削除されます。それを使っgdisk imageて問題を解決しましょう。それはあなたdisk size is smaller than the main header indicatesinvalid backup GPT header, but valid main header; regenerating backup header from main header。 2番目のおかげで、truncateGPTをバックアップするためのスペースがありました。必要なのは「wディスクへのテーブルの書き込みと終了」だけです。このツールは、バックアップGPTを含むGPTを再構築します。

おすすめ記事