고쳐 쓰다

고쳐 쓰다

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 카드에 쓴 다음 partedGParted와 함께 설치된 명령줄 도구를 사용하여 사용 가능한 공간을 확장해 보았습니다.

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 카드에서 부팅하면 변경 사항이 표시되므로 " partedThe"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

우리 모두를 혼란으로부터 구하기 위해 이제 답변으로 이 글을 씁니다.

어찌할 바를 모르는

완료한 후에도 원본 이미지가 여전히 탑재되어 있거나 크기가 올바르게 조정되지 않았을 수 있습니다.

새로운 시작

  1. 모든 SD 카드를 마운트 해제합니다.
  2. 이것을 따르라명령줄 튜토리얼, 또는 이것을 사용하십시오도구/Etcher이 튜토리얼 링크에서 작은 500MB 이미지 파일을 더 큰 32GB SD 카드 또는 기타 장치에 쓰세요.

노트:위 튜토리얼은 Pi 기반 운영 체제용으로 작성되었지만 이 지침은 모든 SD 카드에 적용됩니다. 또한 포함된 명령을 다시 작성하지 않았으므로 혼란이 최소화되었습니다.

  1. 이제 추출된 488MB 이미지 파일이 32GB 카드에 기록되어 약 31.5GB가 남습니다.

내가 올바르게 이해했다면 귀하(OP)는 전체 32GB를 채우도록 파티션을 확장하고 싶어합니다.

확장 파티션

  1. 위의 2단계에서 원본 작은 이미지를 더 큰 SD 카드에 썼으므로 더 이상 두 번째 이미지 생성에 대해 걱정할 필요가 없습니다.
  2. GParted를 시작합니다.
  3. GParted가 장치 노드를 다시 검색하고 새로 고칠 수 있도록 32GB SD 카드를 제거했다가 다시 삽입하세요.
  4. SD 카드에 작은 500GB 파티션이 표시되어야 하며, 막대 왼쪽에는 청록색 상자로 둘러싸여 있고 오른쪽에는 이라고 표시된 큰 회색 덩어리가 있습니다 Free Space.
  5. 청록색 상자 끝에 있는 화살표를 사용 가능한 공간 끝까지(최대한 오른쪽으로) 드래그합니다.
  6. 변경 사항을 적용/저장하려면 도구 모음에서 확인 표시를 누르세요.

이것이 당신이 달성하고 싶은 것인지 알려주세요. 그렇지 않은 경우 질문에 더 명확하거나 자세한 내용을 제공해야 합니다.

관련 정보