起動可能なUbuntuバージョンを配置する必要がある20個の同一の(サイズの)USBドライブがあります。私が使用しているドライブの容量は4GBです。ドライブを2つのパーティション(GPT、FAT32)に分割したので、OS用に1つのパーティションと、データを配置するための1つのパーティションがあります。
UNetbootinを使用して、起動可能なUbunutuスティックを作成しています。すべてが正常に機能しているように見えますが、非常に低速です(インストール時間は約30分)。
ドライブを手動でパーティション分割したり、すべてのドライブでUNetbootinを実行したりせずに、スティックを残りの19本のスティックにディープクローンできるかどうか疑問に思っています。
そうでない場合は、パーティション化を行うスクリプトを作成し、起動可能なパーティションを作成してから、コンテンツを正しいパーティションにdd
することもできますか?
私はmacOSを実行しているので、Gpartedやその他の凝ったLinuxツールはインストールされていません(おそらく)。
ddは、パーティションテーブルとその他すべて(多かれ少なかれ述べられているiporなど)を含むドライブの完全なコピーを実行しています。
このような何かがトリックを行う必要があります:
dd if=<your reference usb stick> of=<one of the 19 other usb sticks> bs=32M
最初に参照USBスティックのコンテンツをイメージとしてディスクにダンプして、後で使用するために保存することもできます;-)
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