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

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

ハードウェア:2 x 8GB USBフラッシュドライブ
ディストリビューション:Mint 9 Xfce永久ライブCD

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

目的:
インストールと設定を最初からやり直したくないので、このUSBフラッシュドライブをコピーしたいと思います。

経験:1)私のフラッシュドライブの1つのサイズが1 MBであっても異なる場合(時にはそうだった)、コピーが破損する可能性があるため、これはうまくいきませんでした
dd

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

私は仕事用のスティックを維持し、それらをコピーして友達のためにスティックを整理したいと思います。これにより、他のスティックを台無しにしても、ベーススティックが常にそこに座って待っているはずです。

答え1

紹介する

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

2番目のステップは最初の(FAT32)パーティションにあると考えられています(ただし確認していません)。その場合は、パーティションを一括コピーし、ブートセクタをコピーしてから、2番目のパーティションが残りの領域を正確に占めるようにパーティションテーブルを編集してから、2番目のパーティションにファイルをコピーできます。ブートセクタと最初のパーティションの元のイメージをハードドライブファイルに保存することもできます(ただし、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(またはスティックを抜いて再接続)してパーティションテーブルをもう一度読みます。

その後、必要に応じてレプリカを拡大できます。この順序で:

  1. ゾーニングを拡張します。残念ながら私はこの簡単な方法を知りません。これはコマンドを使用して実行できますが(いいえ、ファイルシステムのサイズを変更します)、parted正しいパラメータを見つける必要があります。丸めエラーを防ぐには、セクタ()に切り替えます。moveresizeunit 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

答え2

~$: sudo apt-get install gddrescue ddrescue

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

;

構文: ユーティリティ /source/drive /destination/drive --verbose

説明:進捗状況とエラー検査を表示するので、許可されているかどうかを確認できます。追加することもできます。雨=希望のサイズの塊。 「gddrescue」は「ddrescue」のGUIベースのバージョンですが、問題なく動作するため、上記のようにddrescueのみを使用します。

答え3

最近、Kaliライブ暗号永続性を16GBから64GB 3.0 USBに複製し、ホストOSはWindows 10 proです。私はどのLinuxディストリビューションでも複製しようとしませんでした。上記の答えがあなたに必要なものであると確信しています。しかし、すべてのWindowsユーザーにはAOMEIディスクパーティションヘルパーを使用しました。私は非常に使いやすく、SSDをUbuntuに合わせて分割するために使用しましたが、別の方法で外れました。

複製したUSBがライブブート用にフォーマットされていることを確認する必要がありました。両方のUSBを接続し、8GBドライブを右クリックしてcopy64GBドライブを選択すると、「このドライブは正しいですか?すべてのコンテンツが削除されます」という質問が表示されます。ただ読んで、すべてが正しいことを確認してください。実際に多くのことを行う必要はありません。

プロセスが完了するまで待ちます。テスト後、USBはうまく動作します!

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

関連情報