背景
SDカードはRaspberry Pi用に構成されています。目的は、SDカード(OS、アプリ、データ)の正確なコピーを作成し、コピーが元の\ マスターSDカードとrPiでまったく同じように機能するようにすることです。
アップデート:前提:
- UNIX と同様のオペレーティングシステムで構成されたラップトップでレプリケーションが実行されます。
- rPiでコピーを実行しないでください。
- ターゲットSDカードが同じメーカー/モデルです。
- ソースSDカードは、異なるファイルシステムを使用してパーティションが分割されています。
質問
SDカードスロットとUSB SDカードリーダー/ライターを備えたUbuntu HPノートブックに使用できるUNIXレプリケーションオプションは何ですか?
USB SDカードRWがカードリーダーなのかカードライターなのか違いはありますか?
1つの目標(制約事項)は、追加のハードウェア購入を避けることです。
溶液観察
date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date
2019年6月3日月曜日17:53:18 EDT [sudo]ユーザーパスワード:2019年6月3日月曜日23:42:17 EDT
date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date
2019年6月4日火曜日00:33:50 EDT [sudo]ユーザーパスワード:119GiB 6:06:12 [5.56MiB / s] [================== == = ===========>] 100%
2019年6月4日火曜日06:43:05 EDT
Flash SDカードのgParted分析には、同じパーティションが表示されます。
MacOS\OSX
diskutil list
次の項目に書き込むときは、必ずSDカードをマウント解除してください。
sudo diskutil unmount /dev/disk#
ここで # は 1,2,3...
答え1
あるカードから別のカードにSDカードをコピーする場合は、次のものを使用できます。DDコマンドラインから。
Raspberry Pi独自のオペレーティングシステムではこれを実行しないでください。これは、コピー中にオペレーティングシステムがSDカードに書き込んでコピーを破損する可能性があるためです。
SDカードをコピーするには、両方のカードリーダー(USBであるかどうかにかかわらず)に両方のカードを接続します。その後、内容を確認してください/dev
。カードはで表示されます/dev/sd*
。たとえば/dev/sdb
。 内蔵ハードドライブが開いている可能性があるので注意してください。 /dev/sda
。
SDカードがマウントされていないことを確認し、コマンドプロンプトで次のように入力して出力内容を読みます。
mount | grep /dev/sd
また、出力を確認して、どのカードにどのファイル名があるか(ルートとして)確認してください。
sudo blkid
実際にコピーするには(たとえば、/dev/sdbから/dev/sdcへ)、rootとして次のように入力します。
dd if=/dev/sdb of=/dev/sdc bs=4096 status=progress
答え2
Unixシステムは、次のようにストレージデバイスを提供します。デバイスファイル。デバイスファイルは多くの点で通常のファイルと同じです。特に、ストレージデバイスの正確なコピーを作成するには、ソースデバイスの内容をターゲットデバイスにコピーするだけです。
まず、ソースデバイスファイルとターゲットデバイスファイルを決定する必要があります。名前はUnixのバリアントと設定方法によって異なりますが、デバイスファイルは常に/dev
このディレクトリにあります。 SDカードをマウントすると、デバイスファイルが何であるかを確認できます。
df /media/sdcard1/some/file/on/the/sdcard
デバイスファイルは最初の列にあります。他のツールは、lsblk
SDカードを挿入するときにカーネルログメッセージやLinux上のコマンドなどの同じ情報を提供できます。
カードにパーティションがある可能性があります。その場合、パーティションが1つしかない場合でも、一部のブート時間情報がそのパーティションの外にある可能性があるため、カード全体をコピーしてください。たとえば、Linuxに表示する場合df
。/dev/sdb1
/dev/sdb
/dev/sdb1
SDカードを取り外して再挿入すると、通常は以前と同じデバイスファイル名を持つことになりますが、これは保証されません。
コピーする前に、以下を確認してください。
- ソースデバイスがマウントされていないか、読み取り専用でマウントされています。
- ターゲットデバイスがまったくインストールされていません。
- ターゲットデバイスは少なくともソースデバイスと同じ大きさです。 Linuxでは、
lsblk
デバイスのサイズが表示されます。 - 正しいターゲットデバイスがあります。次のコマンドは確認要求なしで内容を上書きすることに注意してください。
/dev/sdb
ソースデバイスがであり、ターゲットデバイスがであると決定したと仮定します/dev/sdc
。内容をコピーするには、root として次のコマンドを実行します。
cat /dev/sdb >/dev/sdc
sudoを使用している場合は、rootにリダイレクトする必要があるため、>
次のように書く必要があります。
sudo sh -c 'cat /dev/sdb >/dev/sdc'
または、誤ってデバイスを上書きしないように、次の2つの手順を実行できます。
- ユーザー(
gatorback
例)dev/sdb
に、元のデバイス(例)から読み書きできる/dev/sdc
権限を付与します。sudo setfacl -m user:gatorback:r /dev/sdb sudo setfacl -m user:gatorback:w /dev/sdc
- sudoなしでコピーが可能です。
cat /dev/sdb >/dev/sdc
ディスクイメージをファイルにコピーしてから、イメージファイルをターゲットデバイスにコピーできます。この機能は、複数のコピーを作成する必要がある場合、SDカードリーダーのみがある場合、または間違った方向にコピーする危険性を減らすのに役立ちます。
sudo cat /dev/sdb >sdcard.image
- ソースカードを取り外し、ターゲットカードを挿入します。
- (オプション)以下でコンテンツを確認してください。イメージのインストール、例えば
sudo mount -o loop -r sdcard.image /mnt
。 sudo sh -c 'cat sdcard.image >/dev/sdb'
進行状況を簡単に確認したい場合pv
代わりにcat
(pv
デフォルトではほとんどインストールされていませんが、ほとんどのディストリビューションでパッケージとして使用できます)。