배경

배경

배경

Raspberry Pi용 SD 카드가 구성되었습니다. 목표는 SD 카드를 정확하게(OS, 앱, 데이터) 복제하여 복제본이 원본 \ 마스터 SD 카드와 똑같이 rPi에서 작동하도록 하는 것입니다.

업데이트: 다음을 가정합니다.

  • 복제는 UNIX와 유사한 운영 체제로 구성된 랩탑에서 수행됩니다.
  • 복제는 rPi에서 수행되지 않습니다.
  • 대상 SD 카드의 제조업체/모델이 동일합니다.
  • 소스 SD 카드는 다른 파일 시스템으로 분할되어 있습니다.

여기에 이미지 설명을 입력하세요

질문

SD 카드 슬롯과 USB SD 카드 리더/라이터가 있는 Ubuntu HP 노트북에 사용할 수 있는 UNIX 복제 옵션은 무엇입니까?

USB SD 카드 RW가 리더인지 라이터인지에 따라 차이가 있나요?

목표(제약조건)는 추가 하드웨어 구매를 방지하는 것입니다.

솔루션 관찰

date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date

6월 3일 월요일 17:53:18 EDT 2019 [sudo] 사용자 비밀번호: 2019년 6월 3일 월요일 23:42:17 EDT

date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date

6월 4일 화요일 00:33:50 EDT 2019 [sudo] 사용자 비밀번호: 119GiB 6:06:12 [5.56MiB/s] [==================== ============>] 100%
2019년 6월 4일 화요일 06:43:05 EDT

플래시된 SD 카드의 gParted 분석은 동일한 파티셔닝을 보여줍니다.

여기에 이미지 설명을 입력하세요

맥OS \ OSX

SD 카드의 위치를 ​​찾으려면:

diskutil list

SD 카드에 쓸 때는 반드시 마운트를 해제하세요.

sudo diskutil unmount /dev/disk#

여기서 #은 1,2,3...입니다.

답변1

SD 카드를 한 카드에서 다른 카드로 정확하게 복사하려는 경우 다음을 사용하여 그렇게 할 수 있습니다.dd명령줄에서.

자체 OS의 라즈베리 파이에서 이 작업을 수행하면 안 됩니다. 복사하는 동안 OS가 SD 카드에 쓸 수 있고 복사본이 손상될 수 있기 때문입니다.

SD 카드를 복사하려면 두 리더를 모두 연결하세요(USB인지 여부는 중요하지 않음). 그런 다음 의 내용을 확인하십시오 /dev. 카드는 로 표시되어야 합니다 /dev/sd*. 예 /dev/sdb. 내장 하드 드라이브가 이미 켜져 있을 수 있으므로 주의하세요. /dev/sda.

SD 카드가 모두 마운트되어 있지 않은지 확인하고 명령 프롬프트에 다음을 입력하여 출력을 읽어보세요.

mount | grep /dev/sd

또한 어떤 카드에 어떤 파일 이름이 있는지(루트로서) 알 수 있도록 출력을 확인하십시오.

sudo blkid

실제로 복사하려면(예: /dev/sdb에서 /dev/sdc로) 다음을 입력하십시오(루트로):

dd if=/dev/sdb of=/dev/sdc bs=4096 status=progress

답변2

Unix 시스템에서는 다음을 통해 저장 장치를 사용할 수 있습니다.장치 파일. 장치 파일은 여러 면에서 일반 파일처럼 작동합니다. 특히 저장 장치의 정확한 복사본을 만들려면 소스 장치의 콘텐츠를 대상 장치에 복사하면 됩니다.

먼저 소스 장치 파일과 대상 장치 파일을 결정해야 합니다. 이름은 Unix 변형과 구성 방법에 따라 다르지만 실제로 장치 파일은 항상 디렉터리 아래에 있습니다 /dev. SD 카드가 마운트되어 있으면 장치 파일이 무엇인지 찾을 수 있습니다

df /media/sdcard1/some/file/on/the/sdcard

장치 파일은 첫 번째 열에 있습니다. 다른 도구도 동일한 정보(예: SD 카드 삽입 시 커널 로그 메시지 또는 lsblkLinux의 명령)를 제공할 수 있습니다.

카드에 파티션이 있을 수 있습니다. 그렇다면 단일 파티션이 있더라도 전체 카드를 복사하십시오. 일부 부팅 시간 정보가 파티션 외부에 있을 수 있기 때문입니다. 예를 들어 Linux에서 df표시되는 경우 ./dev/sdb1/dev/sdb/dev/sdb1

SD 카드를 꺼냈다가 다시 삽입하면 일반적으로 이전과 동일한 장치 파일 이름을 갖게 되지만 이는 보장되지 않습니다.

복사하기 전에 다음을 확인하세요.

  • 소스 장치가 마운트되지 않았거나 읽기 전용으로만 마운트되었습니다.
  • 대상 장치가 전혀 마운트되지 않았습니다.
  • 대상 장치의 크기는 최소한 소스 크기 이상입니다. Linux에서는 lsblk장치 크기를 표시합니다.
  • 올바른 대상 장치가 있습니다. 아래 명령은 확인 요청 없이 내용을 덮어씁니다.

/dev/sdb소스 장치는 이고 대상 장치는 이라고 식별했다고 가정해 보겠습니다 /dev/sdc. 내용을 복사하려면 루트로 다음 명령을 실행하십시오.

cat /dev/sdb >/dev/sdc

sudo를 사용하는 경우 리디렉션은 >루트로 수행되어야 하므로 다음과 같이 작성해야 합니다.

sudo sh -c 'cat /dev/sdb >/dev/sdc'

또는 실수로 잘못된 장치를 덮어쓰지 않도록 다음 두 단계를 진행할 수 있습니다.

  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대신 cat( pv기본적으로 거의 설치되지 않지만 대부분의 배포판에서 패키지로 사용 가능합니다).

관련 정보