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

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

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

私はUNetbootinを使用して起動可能なUbunutuスティックを作成しています。すべてがうまく機能しているようですが、非常に遅いです(インストールに約30分かかります)。

これで、ドライブを手動で分割し、各ドライブでUNeTbootinを実行せずに、このスティックを残りの19個のスティックに完全に複製できるかどうか疑問に思います。

ddそうでない場合は、分割を実行してブート可能なパーティションを作成し、内容を正しいパーティションにコピーするスクリプトを作成することが別のオプションになる可能性があります。

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

答え1

ddは、パーティションテーブルと他のすべてを含むドライブの完全なコピーを実行します(iporの説明によると)。

次のことがトリックを実行する必要があります。

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

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

答え2

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

非マップツール

これで、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プロジェクトのツールを使用して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/

関連情報