Linux Fedora의 설치 미디어로 사용한 USB 플래시 드라이브가 있습니다.
스틱에는 여전히 "Fedora Live USB" 설치 파일이 있습니다. 이전 노트북에 연결했을 때 KDE Dolphin에 "Fedora-Live-KDE-x86_64-22-3"이라는 디스크로 표시되었습니다. 그럴 수 있지.
그래서 나는 그 위에 있는 모든 파티션을 파괴하고 fdisk
, 새로운 파티션을 생성하고, 해당 파티션에 ext4 파일 시스템을 설정했습니다.
플래시 드라이브를 삽입했습니다. 광산은 KDE 돌고래에서 "Fedora-Live-KDE-x86_64-22-3"으로 표시됩니다.
언데드 플래시 드라이브 시간!
이름은 어디에서 왔습니까? USB 플래시 드라이브에서 나오는 것처럼 느껴지지 않지만 아래의 사실(3)은 실제로 USB 플래시 드라이브에서 나오는 것임을 보여줍니다.
이름은 어디에서 왔으며 어떻게 변경합니까?
다음은 이름의 유래에 대한 조사 결과, 디스크에 남아 있는 ISO-9660 데이터에서 나온 것으로 결론지었습니다. 그러나 Linux의 이러한 동작은 정상입니까?
▶ e2label /dev/sdd1
표시 없음: 파일 시스템에 태그가 없습니다.
▶ blkid /dev/sdd1
성과
/dev/sdd1: UUID="10aab422-4212-45c8-9f99-35e5eb719154" TYPE="ext4" PARTUUID="5c4a815c-01"
▶ 다른 컴퓨터에서 플래시 드라이브를 사용하면 표시 이름이 "Fedora-Live-KDE-x86_64-22-3"이 됩니다.
▶ "태그"(무엇이든)는 파일 시스템을 확인하여 덤프할 수 있습니다 /dev
.
ls -l /dev/disk/by-label/
이것은 심볼릭 링크를 보여줍니다
Fedora-Live-KDE-x86_64-22-3 -> ../../sdb
심볼릭 링크는 파티션이 아닌 장치를 가리킨다는 점에 유의하세요. 따라서 이것은 파일 시스템 레이블이 아니라 "디스크 레이블"과 같은 것입니다.
▶ 원래 "파일 시스템 레이블"은 e2label
비어 있습니다. 설정하고 어떤 일이 일어나는지 살펴보겠습니다.
# e2label /dev/sdb1 "Scooby Doo"
# ls -l /dev/disk/by-label/
lrwxrwxrwx. 1 root root 9 Feb 4 23:43 Fedora-Live-KDE-x86_64-22-3 -> ../../sdb
lrwxrwxrwx. 1 root root 10 Feb 4 23:43 Scooby\x20Doo -> ../../sdb1
이제 디스크와 파일 시스템/파티션에 레이블이 있습니다. 그러나 삭제/재삽입 후에는 Dolphin(또는 Linux)이 이제 파일 시스템의 "Scooby Doo" 이름을 결정합니다. 그래서 왜 안돼! 그런 다음 다음을 사용하여 레이블을 다시 지울 수 있습니다. e2label /dev/sdb1 ""
이름은 부분적으로만 표시됩니다: "Fedora-Live-KDE-"(왜 부분적입니까? 0x9000에서 시작하여 전체 레이블이 0x8000에 있기 때문에 참조하십시오. 아래에)
▶ 또한 시도해 보고 어떤 parted
결과가 나오는지 확인해 보세요. 매우 혼란스러워 보입니다. 512바이트 블록이 있는 8GiB 스틱이 실제로는 2048바이트 블록이 있는 32GiB 스틱이라고 생각하고 Apple 파티션을 감지하는 동시에 fdisk
8GiB Linux 파티션을 찾는 데 완전히 만족합니다. 호기심이 많고 호기심이 많습니다.
(parted) print
Warning: The driver descriptor says the physical block size is 2048
bytes, but Linux says it is 512 bytes.
Ignore/Cancel? i
Model: Generic USB Flash Disk (scsi)
Disk /dev/sdb: 32.2GB
Sector size (logical/physical): 2048B/512B
Partition Table: mac
Disk Flags:
Number Start End Size File system Name Flags
1 2048B 10.2kB 8192B Apple
2 88.1kB 5278kB 5190kB EFI
3 5319kB 26.1MB 20.8MB EFI
스틱에서 다음을 발견했기 때문에 완전히 혼란스럽지 않을 수도 있습니다.
▶ 기타 이상한 점: 재포맷된 USB 스틱은 쓸 수 없는 것처럼 보이지만 루트가 아닌 사용자는 탐색할 수 있습니다. 그러나 루트로 쓰는 것은 가능합니다. 그러나 이것은 단지 여담일 뿐입니다.
▶ 디스크 덤프를 수행하면 okteta
디스크 이름 문자열이 블록 64(블록 크기는 512바이트)에 있는 0x8000 바로 뒤에 위치함을 알 수 있습니다.
이는 분명히 LiveCD 구조에서 비롯됩니다.
더 자세히 살펴보면 이름이 0x9000 뒤에 다시 나타납니다. 아마도 UTF-16 형식일 가능성이 높으며 버전 접미사가 제거되었습니다. 아마도 필드의 크기가 일정하기 때문일 것입니다.
▶ 찔러보고 무슨 일이 일어나는지 지켜볼 시간이다. 0x8000 표시에서 문자열을 수정합니다.
또한 0x9000 표시에서 문자열을 수정했습니다.
그런 다음 청크를 스틱에 다시 쓰고(를 사용하여 얻은 파일을 수정했기 때문에 dd
) 동기화, 동기화 및 팝합니다.
그런 다음 스틱을 다시 삽입하십시오. 이 경우 Linux는 문자열을 0x9000에서 수정합니다.
[root@elf ~]# ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx. 1 root root 10 Feb 9 22:09 DellUtility -> ../../sda1
lrwxrwxrwx. 1 root root 10 Feb 9 23:20 MOTHRA-Dead-KDE- -> ../../sdb1
lrwxrwxrwx. 1 root root 10 Feb 9 22:09 OS -> ../../sda2
lrwxrwxrwx. 1 root root 10 Feb 9 22:09 RECOVERY -> ../../sda4
돌고래가 보여주는 것 /dev/disk/by-label
:
그래서 우리는 문자열이 어디서 왔는지 압니다. 변경할 수 있다는 것은 CD-ROM 구조에서 비롯되고 표준 파티션 구성표를 USB 디스크에 넣었기 때문에 유용하지 않은 것 같습니다. Linux가 이 두 구조를 혼합하는 이유는 무엇입니까?
답변1
이것이 볼륨 레이블입니다. -L
mkfs.vfat 등에 있는 플래그 인 것 같아요 .mkfs.ext4
-n
를 사용하여 새 태그를 전달하여 변경 e2label
하거나 를 사용하여 완전히 종료할 수 있습니다 dd
.
답변2
최종 답변은 다음과 같습니다.
- 이름은 CD-ROM 데이터의 나머지 부분에서 따왔습니다(돌이켜보면 매우 분명합니다).
- 전혀 사용되어서는 안 되고 심지어 존재해서도 안 되기 때문에 변경할 수 없습니다. 결국 USB 플래시 드라이브를 CD-ROM이 아닌 디스크로 사용하고 싶기 때문입니다. 이 두 가지는 서로 다른 형식을 가지고 있습니다. 일반적으로 0x8000이나 0x9000에는 사용할 수 있는 문자열이 없습니다.
- 스틱을 삽입할 때 이 이름이 사용된 이유는 불분명합니다. 블록 장치 형식 식별을 담당하는 Linux 부분의 소스 코드를 살펴봐야 합니다.
강의:
USB 플래시 드라이브에 하드 디스크 파티션 구성표를 설정하기 전에 이를 지워 재설정하십시오. 그렇지 않으면 결과는 "정의되지 않음"이 되며 플래시 드라이브를 읽는 시스템에서 사용하는 경험적 방법에 따라 달라집니다. 보시다시피 parted
, Mac 파일 시스템을 감지합니다.
폴리스티렌
USB 플래시 드라이브를 128K 단위로 "제로 제로"화하는 방법(128K는 1개 이상의 플래시 셀 크기이므로 모든 플래시 셀은 한 번만 기록됩니다):
dd if=/dev/zero of=/dev/sdXXX bs=128K
"USB 플래시 드라이브 제로화"는 실제로 예상치 못한 합병증으로 가득 차 있습니다. count=1024
쓰기 블록을 낮게 유지하려면 추가해야 할 수도 있습니다 .