8GB USB 플래시 드라이브는 명목상 512B인가요, 아니면 10MB인가요?

8GB USB 플래시 드라이브는 명목상 512B인가요, 아니면 10MB인가요?

Arch Linux ISO USB 드라이브를 만들어서 사용하려고 합니다.방향아치 리눅스 위키에서. 실행 후:

$ sudo dd count=1 bs=512 if=/dev/zero of=/dev/sde && sync

parted512바이트 섹터 하나만 인식됩니다.

$ sudo parted /dev/sde -s print
Error: /dev/sde: unrecognised disk label
Model:  (file)
Disk /dev/sde: 512B
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

새 파티션을 만들 수 없습니다.

$ sudo parted /dev/sde -s mklabel msdos
$ sudo parted /dev/sde -s mkpart primary fat32 0% 100%
Error: Can't have the end before the start! (start sector=1 length=0)
Error: Unable to satisfy all constraints on the partition.

countbs플래그를 생략하면 dd전체 디스크가 아닌 10MB만 기록됩니다.

$ sudo dd if=/dev/zero of=/dev/sde && sync
dd: writing to ‘/dev/sde’: No space left on device
20481+0 records in
20480+0 records out
10485760 bytes (10 MB) copied, 0.0177212 s, 592 MB/s
$ sudo parted /dev/sde -s print
Error: /dev/sde: unrecognised disk label
Model:  (file)
Disk /dev/sde: 10.5MB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

답변1

(Gilles가 암시했듯이) USB 장치에서 작업하고 있지 않습니다.

첫 번째 단서는 Model출력 입니다.

$ sudo parted /dev/sde -s print
Error: /dev/sde: unrecognised disk label
Model:  (file)                                     <= file!
...
  • 당신의 명령:

    sudo dd count=1 bs=512 if=/dev/zero of=/dev/sde && sync
    

/dev/sde512바이트의 0으로 채워진 파일을 생성합니다.

  • 다음을 통해 전체 디스크에 쓰려고 할 때:

    sudo dd if=/dev/zero of=/dev/sde && sync
    

/dev/sde파티션에 남은 공간이 없을 때까지 파일에 씁니다 /dev.

    dd: writing to ‘/dev/sde’: No space left on device

/dev, (아마도) 실제로는 RAM 디스크이기 때문 입니다. (우데브), 해당 파티션에 설정된 한도를 모두 초과했습니다...

이렇게 하면 dd올바른 디스크에서 작업하는 것이극도로중요한. 해당 이름의 다른 디스크가 있으면 /dev/sde삭제됩니다. 완전히. 당신이 링크한 Arch Wiki에 명시된 바와 같이:

경고하다:이렇게 하면 /dev/sd의 모든 데이터가 복구 불가능하게 삭제됩니다.엑스.


USB 장치를 연결한 후 다음 예를 확인하세요.

lsblk

예를 들어, 더 자세히 알아보려면 다음을 참조하세요.남성또는 -h:

lsblk -o NAME,STATE,RM,HOTPLUG,TYPE,TRAN,SIZE,PHY-SEC,LOG-SEC,FSTYPE,MODEL,VENDOR,LABEL,PARTLABEL

그리고:장치는 않습니다아니요같은 것을 얻다dev/xxx들어갈 때마다. 무작위입니다.

기타 참고사항:

이 작업을 수행할 때:

sudo parted /dev/sde -s mklabel msdos

msdos파티션을 나눈 테이블을 생성합니다 .문서 /dev/sde. 이것은 훌륭하게 작동합니다. 그러나 다음 작업을 진행하면:

sudo parted /dev/sde -s mkpart primary fat32 0% 100%

파일에 기본 파티션을 생성하려고 하면 다음 오류가 발생합니다.

Error: Can't have the end before the start! (start sector=1 length=0)

파티션 테이블이 있는 섹터 0에서 파티션 부팅을 거부하기 때문입니다.MSDOS, 거주하다. 그래서 테스트한다시작섹터 1 또는 오프셋 512. 하지만 파일이 512바이트에 불과하기 때문에해당 섹터도 512에 있으며 다음과 같은 정보를 얻을 수 있습니다."시작하기 전에 끝나라".

그럼에도 불구하고 FAT32 파티션의 최소 크기는 65,527개 클러스터, 즉 약 32MB입니다.

답변2

나는 매우 비슷한 문제를 해결했습니다.

rm /dev/sdb

USB 드라이브(/dev/sdb에 연결됨)를 연결합니다.

그런 다음 전체 드라이브에 대한 새 파티션 테이블을 만들 수 있습니다.

관련 정보