web-dev-qa-db-ja.com

起動可能なUSBドライブを同じサイズの別のスティックに複製する

起動可能なUbuntuバージョンを配置する必要がある20個の同一の(サイズの)USBドライブがあります。私が使用しているドライブの容量は4GBです。ドライブを2つのパーティション(GPT、FAT32)に分割したので、OS用に1つのパーティションと、データを配置するための1つのパーティションがあります。

UNetbootinを使用して、起動可能なUbunutuスティックを作成しています。すべてが正常に機能しているように見えますが、非常に低速です(インストール時間は約30分)。

ドライブを手動でパーティション分割したり、すべてのドライブでUNetbootinを実行したりせずに、スティックを残りの19本のスティックにディープクローンできるかどうか疑問に思っています。

そうでない場合は、パーティション化を行うスクリプトを作成し、起動可能なパーティションを作成してから、コンテンツを正しいパーティションにddすることもできますか?

私はmacOSを実行しているので、Gpartedやその他の凝ったLinuxツールはインストールされていません(おそらく)。

1
Soift

ddは、パーティションテーブルとその他すべて(多かれ少なかれ述べられているiporなど)を含むドライブの完全なコピーを実行しています。

このような何かがトリックを行う必要があります:

dd if=<your reference usb stick> of=<one of the 19 other usb sticks> bs=32M

最初に参照USBスティックのコンテンツをイメージとしてディスクにダンプして、後で使用するために保存することもできます;-)

2
keocra

USBスティックの大きさによっては、コピーしてから大量の空き領域を書き出すため、時間がかかる場合があります。

使用済みのブロックのみをディスクイメージに書き込むbmapツールを使用してこれを行うためのより良い方法があります。

ここで使用するツールはUbuntu/Debian用にパッケージ化されていますが、デフォルトでインストールされていないものがいくつかあります。

Sudo apt-get install bmap-tools libguestfs-tools pigz

まず、ソースイメージを作成する必要があります。

Sudo dd if=/dev/source of=/path/to/source.img bs=1M

画像のスパース化

次に、スパースファイルを作成するために、画像からすべてのゼロを削除する必要があります。

cp --sparse=always /path/to/source.img /path/to/source.img.sparse

これにより画像のコピーが作成され、より多くのスペースが必要になることに気付いたかもしれません。幸い、パイプでcpを使用できます。

Sudo dd if=/dev/source bs=1M | cp --sparse=always /dev/stdin /path/to/source.img.sparse

bmap-tools

次に、bmaptoolを使用して画像ファイルがどのようにレイアウトされているかに関するメタデータを作成する必要があります。

bmaptool create -o /path/to/source.img.bmap /path/to/source.img.sparse

画像ファイルを圧縮できるようになりたい場合は、bmaptoolが画像ファイルを自動的に解凍します。 pigzは並列gzip圧縮ツールです。

pigz /path/to/source.img.sparse

空のUSBスティックにファイルを書き出すには、次の操作を実行できます。

Sudo bmaptool copy --bmap /path/to/source.img.bmap /path/to/source.img.sparse.gz /dev/sdX

https://source.tizen.org/documentation/reference/bmaptool

Guestfish

非常に賢いと感じている場合は、guestfishプロジェクトのツールを使用して、クローンを作成する前にLinuxイメージをクリーンアップすることもできます。これにより、ログファイル、サーバーのsshキーなどが削除されます。

イメージを圧縮してイメージをクリーンアップする前に、これらのコマンドを実行してください。

このコマンドはイメージをクリーンアップし、ログ、履歴ファイル、sshサーバーキーなどを削除します

virt-sysprep -a /path/to/source.img.sparse

このコマンドは、最初の起動時に新しいサーバーキーを使用してsshをセットアップします。

virt-customize --firstboot-command "dpkg-reconfigure openssh-server" /path/to/source.img.sparse

このコマンドは、SSDをトリミングするのと同じように、ファイルシステムから未使用のブロックをすべて削除するfstrimをイメージに対して実行します。

virt-sparsify --inplace /path/to/source.img.sparse

http://libguestfs.org/

2
Tim Fletcher