背景

背景

背景

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

SDカードの場所を探す:

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

デバイスファイルは最初の列にあります。他のツールは、lsblkSDカードを挿入するときにカーネルログメッセージや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つの手順を実行できます。

  1. ユーザー(gatorback例)dev/sdbに、元のデバイス(例)から読み書きできる/dev/sdc権限を付与します。
    sudo setfacl -m user:gatorback:r /dev/sdb
    sudo setfacl -m user:gatorback:w /dev/sdc
    
  2. sudoなしでコピーが可能です。
    cat /dev/sdb >/dev/sdc
    

ディスクイメージをファイルにコピーしてから、イメージファイルをターゲットデバイスにコピーできます。この機能は、複数のコピーを作成する必要がある場合、SDカードリーダーのみがある場合、または間違った方向にコピーする危険性を減らすのに役立ちます。

  1. sudo cat /dev/sdb >sdcard.image
  2. ソースカードを取り外し、ターゲットカードを挿入します。
  3. (オプション)以下でコンテンツを確認してください。イメージのインストール、例えばsudo mount -o loop -r sdcard.image /mnt
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

進行状況を簡単に確認したい場合pv代わりにcatpvデフォルトではほとんどインストールされていませんが、ほとんどのディストリビューションでパッケージとして使用できます)。

関連情報