web-dev-qa-db-ja.com

SDカードの画像を縮小するにはどうすればよいですか?

Ddコマンドを使用して16GBSDカードをイメージしました。ただし、カードには2つのパーティション(FAT32およびext3)で4GBを超えるデータがありません。

この画像を8GBのSDカードに転送したいと思います。画像を縮小するにはどうすればよいですか?

5
Lord Loh.

Linuxを想定すると、次のようなことができます。

  1. losetupを使用して画像をループデバイスに添付します。パーティションをマウントしないでください。

    0 GB                              8 GB                             16 GB
    |--------fat32--------|--------------------ext3--------------------|
    
  2. gpartedを使用して、最初のパーティションを元のサイズの50%未満に縮小します。

    0 GB                              8 GB                             16 GB
    |--fat32---|          |--------------------ext3--------------------|
    
  3. 2番目のパーティションを新しく作成した空き領域に移動し、50%未満に縮小します。

    0 GB                              8 GB                             16 GB
    |--fat32---|---------ext3---------|                                |
    
  4. 2番目のパーティションが8GBの前に終了していることを確認してください。

  5. ループデバイスを取り外します。

  6. イメージファイルを8GBに切り捨てます。

注:通常、最初にfilesystemを縮小してから、ファイルシステムに一致するようにパーティションサイズを調整する必要があります。 Gpartedはこれを1つの「サイズ変更」ステップで実行しますが、他のツールでは実行できない場合があります。

6
user1686

まず、ディスクイメージを縮小することはできません。内部で起こっている複雑なことが多すぎます。

Ddイメージをマウントしてから、ファイルを新しいファイルシステムにコピーするか、ディスクではなく特定のファイルシステムを縮小する方法をさらに検討することをお勧めします。

まず、元のパーティションテーブルのコピーはありますか?

そうでない場合は、次を試してください:fdisk -l -u /path/to/image

次に、上記の値を使用して次のようなことを実行できることを願っています。

dd if=/path/to/image of=/path/to/output bs=BLOCKSIZE skip=STARTBLOCK count=TOTALBLOCKS

(必要に応じて上記の大文字を置き換えます)

そこから、イメージをマウントします。

mount -o loop /path/to/output /path/to/mountlocation

データをコピーするか、特定のファイルシステムの標準的な縮小とさらに追加する方法について学びます。

0
Pricey