sd_card.img가 512000000바이트(예: 488MB)라고 가정합니다.
$file sd_card.img
sd_card.img: DOS/MBR 부팅 섹터; 파티션 1: ID=0xc, 시작 CHS(0x0,1,1), 끝 CHS(0xdf,15,54), 시작 섹터 63, 999873 섹터, 확장 파티션 테이블(최종)
fdisk
보여주다:
Selected partition 1
Device: sd_card.img1
Start: 63
End: 999935
Sectors: 999873
Cylinders: 1158
Size: 488.2M
Id: c
Type: W95 FAT32 (LBA)
Start-C/H/S: 0/1/1
End-C/H/S: 223/15/54
다음 명령을 사용하여 크기를 조정해 보았습니다.
$cp sd_card.img test.img
$dd if=/dev/zero of=test_zeros bs=1 count=1 seek=2G
$cat test_zeros >> test.img
$sudo parted test.img resizepart 1 2.5GB
$file test.img
test.img: DOS/MBR 부팅 섹터; 파티션 1: ID=0xc, CHS 시작(0x0,1,1), CHS 끝(0x12f,239,61), 시작 섹터 63, 4882750 섹터
fdisk
보여주다:
Selected partition 1
Device: test.img1
Start: 63
End: 4882812
Sectors: 4882750
Cylinders: 334
Size: 2.3G
Id: c
Type: W95 FAT32 (LBA)
Start-C/H/S: 0/1/1
End-C/H/S: 303/239/61
그런 다음 이미지를 32GB SD 카드에 씁니다.
dd if=test.img of=/dev/mmcblk0 conv=fsync status=progress
SD카드를 장착하면...
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.7G 0 disk
`-mmcblk0p1 179:1 0 2.3G 0 part /run/media/mmcblk0p1
이것은 유망해 보였지만 df -h
그렇지 않았습니다. 원본 sd_card.img를 SD 카드에 쓰고 수정한 후 나타나는 내용은 다음과 같습니다.
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 485M 159M 326M 33% /run/media/mmcblk0p1
lsblk
블록 장치 크기와 파일 시스템 크기가 표시 되므로 df
이는 파티션에 문제가 있음을 나타냅니다.
불행히도 더 쉬운 방법은 FAT32 파티션에서는 작동하지 않으므로 이것으로 제한됩니다. 필요한 라이브러리를 설치한 후 시도했지만 sudo gparted sd_card.img
성공하지 못했습니다. 대신 다양한 작업이 표시되었습니다.sd_card.img1파일이 존재하지 않는다고 나옵니다.
내 프로그램에 어떤 문제가 있을 수 있는지 또는 이를 올바르게 수행하는 방법에 대한 제안 사항이 있습니까?
참고: GNU Parted 3.4
고쳐 쓰다
@eyoung100의 제안에 따라 원본 sd_card.img를 SD 카드에 쓴 다음 parted
GParted와 함께 설치된 명령줄 도구를 사용하여 사용 가능한 공간을 확장해 보았습니다.
sudo parted
select /dev/mmcblk0
print free
Number Start End Size Type File system Flags
1 32.3kB 512MB 512MB primary fat32 lba
512MB 31.9GB 31.4GB Free Space
resizepart 1 100%
print free
Number Start End Size Type File system Flags
1 32.3kB 31.9GB 31.9GB primary fat32 lba
quit
GParted는 변경 사항을 적용하라는 지시가 나올 때까지 아무것도 하지 않기 때문에 아무것도 저장하지 않고 종료하고 싶은지 궁금했지만 SD 카드에서 부팅하면 변경 사항이 표시되므로 " parted
The"hands에 더 가깝다고 생각합니다. off" 버전에서는 자신이 무엇을 하고 있는지 알고 있어야 합니다.
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk0p1 485M 172M 313M 36% /run/media/mmcblk0p1
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.7G 0 disk
`-mmcblk0p1 179:1 0 29.7G 0 part /run/media/mmcblk0p1
앞서 언급한 대로 변경한 내용이 parted
구현되었지만 Free Space 또는 df -h
. FAT32 파티션의 실제 크기는 여전히 약 488MB입니다.
# fdisk -x /dev/mmcblk0
Disk /dev/mmcblk0: 29.72 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe847ab93
Device Boot Start End Sectors Id Type Start-C/H/S End-C/H/S Attrs
/dev/mmcblk0p1 63 62333951 62333889 c W95 FAT32 (LBA) 0/1/1 1023/254/63
이 sd_card.img를 다른 장치에 연결하여 부팅하면 해당 장치에 의해 설치됩니다. 아직 어떻게 해야할지 모르겠지만 이걸 봤습니다 >
# cat /run/systemd/transient/run-media-mmcblk0p1.mount
# This is a transient unit file, created programmatically via the systemd API. Do not edit.
[Unit]
After=dev-mmcblk0p1.device
BindsTo=dev-mmcblk0p1.device
[Mount]
What=/dev/mmcblk0p1
Options=umask=007,gid=6
[Unit]
[email protected]
[email protected]
답변1
우리 모두를 혼란으로부터 구하기 위해 이제 답변으로 이 글을 씁니다.
어찌할 바를 모르는
완료한 후에도 원본 이미지가 여전히 탑재되어 있거나 크기가 올바르게 조정되지 않았을 수 있습니다.
새로운 시작
- 모든 SD 카드를 마운트 해제합니다.
- 이것을 따르라명령줄 튜토리얼, 또는 이것을 사용하십시오도구/Etcher이 튜토리얼 링크에서 작은 500MB 이미지 파일을 더 큰 32GB SD 카드 또는 기타 장치에 쓰세요.
노트:위 튜토리얼은 Pi 기반 운영 체제용으로 작성되었지만 이 지침은 모든 SD 카드에 적용됩니다. 또한 포함된 명령을 다시 작성하지 않았으므로 혼란이 최소화되었습니다.
- 이제 추출된 488MB 이미지 파일이 32GB 카드에 기록되어 약 31.5GB가 남습니다.
내가 올바르게 이해했다면 귀하(OP)는 전체 32GB를 채우도록 파티션을 확장하고 싶어합니다.
확장 파티션
- 위의 2단계에서 원본 작은 이미지를 더 큰 SD 카드에 썼으므로 더 이상 두 번째 이미지 생성에 대해 걱정할 필요가 없습니다.
- GParted를 시작합니다.
- GParted가 장치 노드를 다시 검색하고 새로 고칠 수 있도록 32GB SD 카드를 제거했다가 다시 삽입하세요.
- SD 카드에 작은 500GB 파티션이 표시되어야 하며, 막대 왼쪽에는 청록색 상자로 둘러싸여 있고 오른쪽에는 이라고 표시된 큰 회색 덩어리가 있습니다
Free Space
. - 청록색 상자 끝에 있는 화살표를 사용 가능한 공간 끝까지(최대한 오른쪽으로) 드래그합니다.
- 변경 사항을 적용/저장하려면 도구 모음에서 확인 표시를 누르세요.
이것이 당신이 달성하고 싶은 것인지 알려주세요. 그렇지 않은 경우 질문에 더 명확하거나 자세한 내용을 제공해야 합니다.