파티션 크기가 3.1GB인 Armbian 사용자 정의 이미지를 만들었고 이제 사용이 끝났습니다. 현재 GPT(GUID 파티션 테이블)를 사용하여 부팅 가능한 64GB SD 카드에 기록됩니다.
문제는 우분투를 사용하여 카드의 이미지를 만들려고 할 때 63GB 크기의 이미지 파일을 얻는데 60GB의 빈 공간이 있는 이미지 파일을 원하지 않는다는 것입니다.
truncate
명령어를 이용하여 이미지 파일을 단축하고, 를 이용하여 이미지를 생성하는 다른 방법을 찾아보았지만 dd count=
잘 되지 않습니다. 사용하면 dd
설치 시 "여유 공간"과 PMBR이 모두 포함된 이미지 파일을 생성하고 truncate
작업 중인 이미지 파일을 삭제합니다.
그렇다면 (내가 뭔가 잘못한 것이 아니라면) 부팅 정보가 포함된 3GB SD 카드 이미지를 어떻게 생성합니까?
답변1
truncate
훌륭한 도구입니다. 파티션 테이블에 정의된 모든 파티션이 포함되도록 이미지를 축소해야 합니다. 즉, 끝에 가장 가까운 파티션의 끝 섹터가(반드시 가장 높은 번호의 파티션일 필요는 없음)인 경우 이미지의 섹터를 N
원합니다 ( 번호 지정은 처음부터 시작되므로 ).N+1
+1
0
그냥 사용해 gdisk -l image
보면 알게 될 것입니다 N
.
카드는 512바이트 섹터를 사용할 가능성이 높으며 파티션 테이블은 512바이트 섹터로 해석할 때 유효합니다(비교:이 가정이 성립하지 않으면 어떤 일이 발생하는지 확인하세요.). 따라서 (N+1)*512
바이트가 필요합니다(또는 그 이상이면 더 많은 것이 치명적이지 않습니다). truncate
그러므로.
먼저 카드에서 직접 이 바이트 수를 읽으면 동일한 결과가 나타납니다. 간단한 접근 방식(POSIX는 아니지만,이것) 예 head -c number-of-bytes-here /dev/sdx > image
.
그런 다음 보조(백업) GPT로 33개의 추가 논리 섹터가 필요합니다. truncate
다시 사용하여 33*512
파일( truncate -s +16896 image
)에 바이트를 추가하십시오. 첫 번째 것을 사용하여 이미지를 원하는 최종 크기로 축소할 수 있지만 truncate
(또는 자세히 읽기 사용 head
) 두 단계로 이 작업을 수행하면 추가 33개 섹터에 0이 포함되어 일시적으로 Rubbish를 방해할 수 있습니다.
첫 번째 잘림(또는 이미지 일부 생성)에서는 원래 보조 GPT가 삭제됩니다. 그것을 사용 gdisk image
하고 문제를 해결하자. 그것은 당신 disk size is smaller than the main header indicates
과 invalid backup GPT header, but valid main header; regenerating backup header from main header
. 두 번째 덕분에 truncate
GPT를 백업할 수 있는 공간이 생겼습니다. 필요한 것은 " w
디스크에 테이블 쓰기 및 종료"뿐입니다. 이 도구는 백업 GPT를 포함하여 GPT를 다시 작성합니다.