나는 총 6GB의 두 개의 파티션이 있는 16GB SD 카드(구체적으로 PinePhone용 부팅 가능한 Mobian SD 카드)를 가지고 있습니다. 남은 공간은 할당되지 않았습니다. SD 카드의 6GB 이미지를 어떻게 얻을 수 있나요?
답변1
약간 취약한 명령을 사용하여 요청에 따라 드라이브의 첫 번째 섹션을 이미지 파일에 복사하는 것이 가능합니다. 그러나 알아야 할 몇 가지 사항이 있습니다.
- 명령줄에서 장치 파일에 직접 액세스해야 하므로 전체 명령을 다음과 같이 실행해야 합니다.
root
(sudo su
솔루션 사용 전 명령) - 백업 파티션 테이블(GPT 파티션 테이블인 경우)~ 할 것이다아니다복사되다.
- "트릭"은 완성된 파티션 테이블에 따라 다릅니다. 즉, 할당되지 않은 공간이 언급되어 있습니다.정말로복사하고 싶지 않은 파티션이 아니라 할당되지 않았습니다.
- 파티션 또는 파티션은 전면에 수집됩니다. 공백이 있으면 해당 공백이 복사됩니다.
fdisk
이는 명령(아마도)과 명령(가능한)이 모두 설치된 시스템에 따라 다릅니다bc
. 둘 다 표준이며 필요한 경우 기본 저장소에서 설치할 수 있습니다.- 이미지 파일은 루트가 소유하므로
chown
사용자에게 전체 액세스 권한이 필요한 경우 루트가 있어야 합니다.
다음은 읽기 쉽도록 줄로 구분된 전체 명령입니다.
dd if=/dev/sdx of=Mobian.img\
bs="$(fdisk -l /dev/sdx | grep sectors | tail -1 | cut -d' ' -f6)"\
count="$(echo "$(fdisk -o end -l /dev/sdx | tail -1) + 1"|bc)"\
status=progress
분석:
먼저, /dev/sdx
이전에 연결된 23개의 다른 디스크가 없는 한 올바른 장치 이름을 반영하도록 변경해야 합니다.
첫 번째 줄은 예상되는 dd
명령이며 장치 이름과 파일 이름은 현재 요구 사항에 맞게 설정됩니다.
두 번째 줄은 블록 크기를 dd
SD 카드의 섹터 크기로 설정합니다. 거의 확실하게 512바이트입니다. 512라고 100% 확신한다면 줄을 bs=512
. 안전을 유지하고 향후 모든 장치에서 명령을 사용할 수 있도록 하려면 추가 항목을 거기에 보관하세요. 작업은 다음과 같습니다.
fdisk -l /dev/sdx
장치에 대한 데이터 보고grep sector
출력에 '섹터'가 두 번 나타납니다.tail -1
'섹터'가 포함된 마지막 줄만 가져옵니다.cut -d' ' -f6
필드 사이에 공백을 사용하면 6번째 필드만 가져옵니다(섹터 크기(바이트))
세 번째 줄은 복사할 dd
크기의 '블록' 수를 나타냅니다. bs=
다시 말하지만, 해당 숫자가 무엇인지 정확히 아는 경우 명령 대신 해당 숫자를 사용하십시오. '미래 보장'을 위해 다시 한 번 전체 명령을 유지했습니다.
- `fdisk -o end -l /dev/sdx` list the partition information about the device, and only output the ending sector ID of each `-o end`
- `tail -1` it don't matter how many there are, we only need the last sector of the last partion.
- `echo "... + 1" | bc` add one to the last sector ID. Uses the `bc` command, which is in integers unless told otherwise. Sectors are numbered from zero, to to copy sector #10 we have to copy 10 + 1 sectors (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
네 번째 줄은 엔터테인먼트 가치를 위한 것입니다. 좋은 카드인 속도 클래스 10은 6GB의 데이터를 읽는 데 거의 4분이 걸립니다. 옵션 status=progress
을 사용하면 dd
터미널이 "진행"됨에 따라 업데이트됩니다. 그렇지 않으면 명령이 완료되기를 기다리는 터미널을 갖게 되며, 영원히 느껴질 것입니다.
최종: 복사하는 항목이 적절하게 정렬된 파티션과 정확히 6GiB를 갖춘 표준 표준임을 확실히 알고 있는 경우 다음과 같은 간단한 명령을 사용할 수 있습니다.
dd if=/dev/sdx of=Mobian.img bs=1048576 count=6145 status=progress
물론 일단 새 이미지를 만들고 그 이미지로 전환하면 짧은 버전에 대한 모든 베팅은 취소됩니다. 원래 위쪽 상단은 계속 작동합니다. 나중에 복사해야 할 다른 '이미지'에도 작동합니다.
보너스:
어떤 이유로 든 마음에 들지 않으면 dd
동일한 숫자 수집 단계를 사용하고 head
대신 명령을 적용할 수 있습니다.
head -c $(\echo "\
"$(fdisk -l /dev/sdx | grep sectors | tail -1 | cut -d' ' -f6)" *\
("$(fdisk -o end -l /dev/sdx | tail -1)" + 1)" | bc)\
/dev/sdx > Mobian.img
한 줄로 말하면:
head -c $(\echo " "$(fdisk -l /dev/sdx | grep sectors | tail -1 | cut -d' ' -f6)" * ("$(fdisk -o end -l /dev/sdx | tail -1)" + 1)" | bc) /dev/sdx > Mobian.img'
답변2
linux dd 명령을 사용할 수 있습니다. 두 파티션을 개별적으로 읽고 나중에 연결하거나 몇 가지 계산을 수행하여 두 번째 파티션의 마지막 섹터를 결정하도록 선택할 수 있습니다. 그런 다음 bs(블록 크기) 및 count(블록 수) 매개변수를 사용하여 dd 명령을 실행하여 두 번째 파티션 끝에서 복사를 종료합니다.