web-dev-qa-db-ja.com

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

ハードウェア:2つの8GB USBフラッシュドライブ
DISTRO:Mint 9 Xfce永続的ライブCD

1つのUSBフラッシュドライブには2つのパーティションがあります。
1)FAT32 700MB Mint 9パーティション
2)ext3 7.3GB casper-rwパーティション

ゴール:
そのUSBフラッシュドライブの複製を作成したいのは、インストールと構成を最初からやり直す必要がないためです。

経験:
1)このジョブではddが機能しないことがわかりました。これは、フラッシュドライブの1つが1 MBでも異なる場合があるため、コピーが破損するためです。

2)gpartedを使用して、最初のように2番目のドライブを事前フォーマットしてから、各パーティションを個別にrsync '処理しても、何らかの理由で一部のファイルがコピーされず、ドライブが機能しないことがわかりました起動できません。

私は自分の作業スティックを保持し、そのコピーを作成して、友​​人のためにスティックを構成したいだけです。このようにして別のスティックを間違えた場合、ベーススティックは常に待機しているだけです。

11
Joshua Robison

前書き

PCパーティションのあるドライブ(ほとんどのUSBスティックにあります)の場合、ブートローダーはドライブの最初の小さな部分(ステージ1ブートローダー、ドライブのブートセクター内)と他の部分(ファイル内のステージ2ブートローダー)の大部分。ステージ1のデータには、ステージ2の物理的な場所が含まれています。デバイス全体(ddで試したもの)をコピーすると、ステージ1のパーツは同じ物理的な場所にあり、スティックは機能しますが、新しいスティックは少なくともオリジナルと同じ大きさでなければなりません。パーティションを再作成してファイルをコピーすると、ステージ1はファイルではないため、失われます。

ステージ2は最初の(FAT32)パーティションにあると思います(ただし、チェックしていません)。その場合は、そのパーティションを完全にコピーし、ブートセクターもコピーしてから、パーティションテーブルを編集して、2番目のパーティションが残りの領域を完全に占めるようにし、2番目のパーティションにファイルをコピーします。ブートセクタと最初のパーティションのrawイメージをハードディスク上のファイルに保存することもできます(ただし、USBスティックからクローンを作成することもできます)。

異なるサイズのクローンを作る

以下では、元のスティックを含むデバイスを/dev/sdbと呼び、クローンを含むデバイスを/dev/sdcと呼びます。必要に応じて名前を置き換えます。必要に応じてマウントポイントを作成します。 FAT32パーティション(ディスクの先頭)の番号は1で、ext3パーティションの番号は2だと思います。必要に応じて、別の番号に置き換えてください。

最初の部分、スティックからクローンする場合:

head -c 512 </dev/sdb >/dev/sdc
partprobe /dev/sdc
cat </dev/sdb1 >/dev/sdc1

最初の部分、イメージファイルからクローンを作成する場合:

cat boot_sector.img >/dev/sdc
partprobe /dev/sdc
cat first_partition.img >/dev/sdc1

partprobeの呼び出しは、カーネルがパーティションテーブルをディスクから再読み込みするために必要です(ブートセクターにあり、上記のシナリオの最初のコマンドでブートセクターを変更します)。省略した場合、エラーが発生するか、カーネルが警告を表示してスティックにゴミを書き込みます。

画像ファイルを作成するには:

head -c 512 </dev/sdb >boot_sector.img 
cat /dev/sdb1 >first_partition.img

ブートセクターと最初のパーティションを取得したら、パーティションテーブルをもう一度編集して、2番目のパーティションのサイズを変更する必要があります。これは、正しい入力をfdiskに送ることで自動的に行うことができます。警告、これは非常にエラーが発生しやすく、テストしていません。この部分に完全に満足できない場合は、手作業で行ってください。

sed -e 's/ *#.*//' <<EOF | tr -s ' ' '\n' | tr -d _ | fdisk /dev/sdc
d 2         # delete partition 2
n p 2       # new primary partition 2...
_ _         # ... using all available space
w q         # write and quit
EOF

最後に、パーティションテーブルを再度リロードし、ext3ファイルシステムを作成して、そこにファイルをコピーします。

partprobe /dev/sdc
mke2fs -j /dev/sdc2
mount /dev/sdc2 /media/sdc2
cp -a /media/sdb2/ /media/sdc2/
umount /media/sdc2

より大きなクローンを作成するための簡略化された方法

必要に応じて、スティック全体の画像を保存できます。少なくとも同じ大きさのスティックでそのイメージを直接使用できます。そのイメージをcat <whole.img >/dev/sdcを使用して新しいスティックにコピーし、次にpartprobe /dev/sdcを実行します(またはスティックを取り外して元に戻します) in)パーティションテーブルを再度読み取ります。

その後、必要に応じてクローンを拡大できます。この順序で:

  1. パーティションを拡大します。残念ながら、私はこれを簡単な方法で行う方法を知りません。 partedmoveコマンドで実行できます(ファイルシステムのサイズを変更するresizeではありません)。ただし、正しい引数を理解する必要があります—セクターに切り替えます(unit s)丸めエラーを回避します。
  2. ファイルシステムを拡大します。その部分は簡単です:resize2fs /dev/sdc2を実行して、ファイルシステムにパーティション全体のサイズを使用させるだけです。

必要以上に大きいスティックから開始する場合は、上記の手順を逆の順序で実行して縮小できます(最初にresize2fsでファイルシステムを縮小し、次にpartedでパーティションを縮小します)。

または、最初にスティックをイメージファイルにコピーしてから、そのイメージファイルで作業することもできます。パーティションにアクセスするには、 ループデバイス 、具体的には ファイルの一部をディスクに関連付ける を使用します。画像を縮小する場合の手順の概要を以下に示します(警告、テストされていない、慎重に続行して計算を再確認してください)。

fdisk -lu whole.img  # note starting sector of partition 2: $S
losetup -fs -o $(($S * 512)) whole.img
# Let $D be the desired size of partition 2, in kB
resize2fs /dev/loop0 $  # replace /dev/loop0 by whatever losetup prints
losetup -d /dev/loop0
parted whole.img
# Use parted to resize the second partition
dd if=/dev/null of=/file/to/truncate seek=1 bs=$(($S/2+$D+1))k

〜$:Sudo apt-get install gddrescue ddrescue

〜$:ddrescue/dev/sda/dev/sdb -v

;

構文:utility/source/drive/destination/drive --verbose

コメント:進行状況とエラーチェックを表示するので、それが受け入れ可能か、どこかでハングアップしているかどうかを確認できます。 b =を追加して、ブロックのサイズを変更することもできます。 「gddrescue」は「ddrescue」のGUIベースバージョンですが、問題なく動作するため、上記のddrescueのみを使用しています。

3
SierraJuliet

私は最近、Kaliライブ暗号化永続性を16GBから64GB 3.0 USBに複製しました。私のホストOSはwindows 10 proです。 Linuxディストリビューションを使用してクローン作成を試みたことはありませんでした。上記の答えはあなたが必要とするものであると確信していますが、すべてのWindowsユーザーにとって必要です。 AOMEIディスクパーティションアシスタントを使っていました。使い方は非常にシンプルで、Ubuntuに合うようにSSDをパーティション分割するのに使用しましたが、余談です。

クローン先のUSBがライブブート用に既にフォーマットされていることを確認する必要がありました。 USBの両方に接続し、8GBドライブを右クリックするだけ。 copyをクリックして64 GBドライブを選択すると、「これが正しいドライブであるかどうか、すべて消去されます」などの一連のジャズが表示されます。それを読んで、すべてが適切であることを確認してください。実際に多くを行う必要はありません。

プロセスが完了するのを待つだけで、準備は完了です。テスト済みはUSBと言ったすべてがうまくいった!

私は、これが少なくとも私にとって最も簡単な方法であるとわかりました。USBからUSBにライブディストリビューションをクローンします。

0
ImNewHere