十分に活用されていないメモリカード内のデータ(ブートレコードやシステムパーティションを含む)を、(システムディスクの機能を維持しながら)容量の小さいメモリカードに移行します。

十分に活用されていないメモリカード内のデータ(ブートレコードやシステムパーティションを含む)を、(システムディスクの機能を維持しながら)容量の小さいメモリカードに移行します。

最近、タイトルのような要望に遭遇しました。NVIDIA Jetson Nano の 64 GB システム microSD カード (TF カード) には 14 個の GPT パーティションが含まれており、そのうち 13 個は非常に小さく、すべて 1 MB 未満であり、1 つのパーティションは大容量で、合計容量は約32GB。Linux で dd コマンドを使用して、上記の TF カードで取得したイメージ ファイルをバックアップし、新しい TF カード システム ディスクを作成すると、次のことがわかります。

1. イメージ ファイルの容量は 64 GB ですが、後半にパーティションはありませんが、GPT バックアップ パーティション テーブル (セカンダリ ヘッダー) が最後のセクタに存在するため、新しい TF カードを 32 GB にすることは不可能です。元の 64 GB TF カード (最後のセクター) がイメージ ファイルの終わりである場合、GPT バックアップ パーティション テーブルが失われるため、新しいシステム ディスクの作成は失敗します。

2. 新しい 64 GB TF カードを使用した場合でも、新しいカードの容量が元のカードの容量よりわずかに小さいため、上記と同じ問題が発生することがあります。

3. バックアップ イメージに基づいて新しいシステム ディスクを作成するには、新しい 128 GB TF カードを使用する必要がありました。

64 GB TF カードを使用して新しいシステム ディスクを作成できるようにするために、私の方法は大まかに言うと、元の 64 GB TF カードと同じパーティション テーブルを 32 GB TF カード上に作成し、元の 64 GB カード パーティションをパーティション分割することです。 32 GB カードの内容を 32 GB カードにコピーし、32 GB カードから取得したバックアップ イメージをソースとして使用して、新しいシステム ディスクを作成します。プロセス全体は 5 つのステップに分かれており、以下で詳しく説明します。

1. fdisk を使用して、32 GB カードと元の 64 GB カードの情報を表示します。

両方のTFカードをLinux PCに接続し、ターミナルで実行します

sudo fdisk -l

システムに接続されているすべてのディスクの情報を一覧表示し、容量に応じて両方のディスクのデバイス記述ファイルを決定できます。この例では、32 GB TF カードのデバイス記述ファイルは /dev/sdb で、64 GB TF カードのデバイス記述ファイルは /dev/sdc です。埋め込む

sudo fdisk -l /dev/sdb

以下の図に示すように、32 GB TF カードの情報のみを表示します。

1これは空のカードであることがわかります。埋め込む

sudo fdisk -l /dev/sdc

以下の図に示すように、64 GB TF カードの情報のみを確認してください。

214 個の GPT パーティションが含まれており、そのうち /dev/sdc1 のみが大容量パーティションであることがわかります。

2. gparted を使用して、元の 64 GB カードの最大のパーティションを縮小します。

前のステップで、/dev/sdc1 の容量が 29.7 GiB であることがわかりました。これは、一部の 32 GB TF カードの合計容量を超えています。ただし、この例の 32 GB TF カードの容量は 29.8 GiB で十分な大きさですが、リーダーの場合、容量不足の 32 GB TF カードまたは元の 64 GB カード上の /dev/sdc1 パーティションは大きくなります (たとえば、48 GiB で、その中のすべてのファイルが占めるスペースはまだ 29 GiB 未満です)。 gparted は、/dev /sdc1 パーティションを 29 GiB に縮小します。埋め込む

sudo apt install gparted
sudo umount /dev/sdc1
sudo gparted

gparted をインストールし、/dev/sdc1 パーティションをアンマウントし (そうしないと拡張のみ可能で縮小はできません)、gparted を起動します。gparted は直感的な操作が可能な GUI プログラムで、結果は次のようになります。

3
gparted は主に 2 つのステップを実行します:
1.size2fs を呼び出してファイル システムのサイズを 29.71 GiB から 29.00 GiB に調整します;
2. パーティション容量を 29.00 GiB に調整します。最初のステップは、ファイル アロケーション テーブルを変更することです。これにより、パーティション上の一部のファイルの分散が調整されます。つまり、コンテンツが 29.00 GiB から 29.71 GiB の間で前方に移動されます。2 番目のステップは、パーティション テーブルを操作して、/dev/sdc1 の容量を 29.00 GiB に設定することです。このステップは、fdisk または gdisk で手動で実行できます (次のステップで説明します)。

4
上図は、fdisk を使用して、パーティション容量を削減した後の 64 GB カードのパーティションを一覧表示したもので、図 2 と比較すると、実際に /dev/sdc1 のサイズが変化していることがわかります。

3. gdisk を使用して、元の 64 GB カードと同じパーティション テーブルを 32 GB カードに作成します。

gdiskをインストールする

sudo apt-get install gdisk

gdiskインストール後に実行

sudo gdisk /dev/sdc

/dev/sdc で gdisk を対話的に実行します。操作プロセスは次のとおりです (注意! セカンダリ ヘッダーがディスクの制限を超えて配置されています! ヘッダーを移動すると、他の問題が発生する可能性があります! 図では、GPT バックアップ パーティションの場所を示しています)表は、元のカードの末尾の 64 GB が、新しいカードの末尾の 32 GB に調整されています) から変更されました。

5
上記の処理後に再起動を実行します

sudo reboot

オペレーティング システムに新しいパーティション テーブルを認識させます。次に、fdisk を使用して /dev/sdb を再度表示し、図 4 と比較します。その後、64 GB カード /dev/sdc 上と同じ GPT パーティション テーブルが 32 GB カード /dev/sdb 上に確立されていることがわかります。以下の図に示すように、パーティション容量が減少します。

6

4. dd を使用して、元の 64 GB カードの内容をパーティションごとに 32 GB カードにコピーします。

次の 14 のコマンドを実行して、元の 64 GB カード上のすべてのパーティションをパーティションごとにファイルにバックアップします。

sudo dd if=/dev/sdc1 status=progress | gzip -c > 1.img.gz
…
sudo dd if=/dev/sdc14 status=progress | gzip -c > 14.img.gz

操作プロセスは次のとおりです

7次に、次の 14 のコマンドを実行して、バックアップ ファイルから 32 GB カードの対応するパーティションにデータを復元します。

gunzip -c 1.img.gz | sudo dd of=/dev/sdb1 status=progress
…
gunzip -c 1.img.gz | sudo dd of=/dev/sdb1 status=progress

操作プロセスは次のとおりです

8次に、partprobe を実行するか、再起動します。そこで、新しい 32 GB Jetson Nano システム ディスクを作成しました。

5. 32 GB カードに基づいてバックアップ イメージを取得し、それを使用して新しいシステム ディスクを作成します

次に実行できます

sudo dd if=/dev/sdb status=progress | gzip -c > nano_backup.img.gz

32 GB のシステム ディスクをファイル nano_backup.img.gz にバックアップし、実行します。

gunzip -c nano_backup.img.gz | sudo dd of=/dev/sdd status=progress

バックアップ ファイルから将来の TF カードに復元して、より多くのシステム ディスクを作成します。この時点で、128 GB TF カードを使用する代わりに、64 GB TF カードを使用できるようになります。

おすすめ

転載: blog.csdn.net/weixin_44355653/article/details/131847187
おすすめ