내 친구가 USB 플래시 드라이브에 문제가 있어서 로우레벨 포맷을 제안했습니다. 그러다가 나는 Linux에서 이 작업을 수행하는 방법조차 모른다는 생각이 들었습니다. 그렇다면...Linux에서 플래시 메모리를 로우레벨 포맷하는 방법은 무엇입니까? 내 친구가 Windows에서 드라이브의 "전체 포맷"을 시도했지만 실패했습니다.
답변1
"로우 레벨 포맷"은 플로피 디스크에서 수행되며 트랙과 섹터를 다르게 구성하도록 선택하여 다양한 밀도로 쓸 수 있습니다. 그러나 그것은 대부분의 현대 미디어에는 의미가 없습니다. 장치에서 데이터를 구성하는 방법에 대한 개념은 고정되어 있으며 변경할 수 없습니다. 이는 자기 영역이 아닌 개별 비트를 갖는 플래시 메모리에는 적합하지 않습니다. mkfs
UNIX 세계에서는 더 높은 수준의 형식화가 가능합니다 .
답변2
가지다절대대부분의 플래시 장치에는 USB/ATA/SD/등의 추가 변환 레이어가 있으므로 로우 레벨 포맷이 수행됩니다. 도착하다MTD이는 낮은 수준의 MTD 장치(할 수 있는낮은 수준의 서식을 직접 수행하는 경우에는 [할 수 없습니다]).
답변3
낮은 수준의 서식 지정은 사람과 상황에 따라 다양한 의미를 갖습니다.
원래 의미는 디스크 포맷, 즉 디스크 드라이브가 데이터를 저장하기 전에 미디어에 헤더, 동기화 및 기타 패턴을 기록하는 데 필요한 단계였습니다. 이런 방식으로 헤드는 A) 트랙 위에 있을 때와 B) 트랙 위의 위치를 감지할 수 있습니다. 플로피 디스크를 로우레벨 포맷하면 디스크에서 블록을 읽고 쓸 수 있습니다. 초기 MFM 및 RLL PC 하드 드라이브는 일반적으로 하드 드라이브 컨트롤러(ISA 카드) ROM에 내장된 유틸리티를 사용하여 로우레벨 포맷할 수 있습니다. 최신 IDE 및 SATA 하드 드라이브도 로우레벨 포맷되어 있지만 공장에서만 가능합니다.
다양한 다른 의미에는 모든 블록에 0 쓰기, HPA 및 DCO와 같은 "숨겨진" 영역을 비활성화하도록 드라이브 구성, 모든 블록을 0으로 만들기 또는 포맷보다 파티셔닝과 더 관련된 기타 작업이 포함됩니다.
원시 플래시에는 공장에서 다양한 초기 준비 단계가 필요합니다. 각 플래시 "삭제 블록"(디스크의 "블록"과 유사)을 테스트해야 하며 실제로 불량인 경우 불량으로 표시해야 합니다. 각 "삭제 블록"에는 오류 수정 정보를 보유하는 매우 작은 "OOB" 블록이 있습니다. 여기서 불량으로 표시됩니다. 불량 블록에 쓰는 작업으로 인해 해당 특정 비트를 불량 블록으로 식별하기 위해 다시 설정하지 못할 수 있으므로 이 단계를 반복하고 싶지 않습니다.
그러나 원시 플래시 메모리를 다루는 것은 아닙니다. USB 플래시 드라이브를 다루고 있습니다. 모든 플래시 드라이브에는 호스트로부터 USB 명령을 받아들이고 호스트를 대신하여 내부의 원시 플래시 메모리와 통신하는 컨트롤러 칩이 있습니다. 이러한 컨트롤러 칩 중 일부는 플래시 메모리의 일부를 별도의 CD-ROM 파티션으로 보고하거나 두 개의 별도 USB 저장 장치로 작동하도록 구성할 수 있습니다.컨트롤러 칩의 제조업체와 모델에 따라 해당 컨트롤러 칩을 재설정할 수 있는 복구 또는 구성 유틸리티를 찾을 수 있습니다(Windows에만 해당).먼저 플래시 드라이브를 열고 작은 PCB에 있는 두 개의 칩 중 더 작은 칩(아마도)을 찾아 인터넷 검색을 해보세요. 케이스 외부에 찍힌 제조사와 모델은 케이스 내부의 컨트롤러 제조업체를 찾는 데 도움이 되지 않습니다.
답변4
나는 과거에 SCSI FORMAT UNIT 명령을 구현한 장치를 본 적이 있습니다(비록 꽤 시간이 지났지만). Linux에서는 다음을 사용할 수 있습니다.
sg_format --format/dev/sdX
이러한 장치를 공장 상태로 재설정합니다(USB 저장소 사양은 이전 SCSI 표준에서 파생됨).
일부 최신 USB 3 장치도 ATA 보안 명령을 구현한다고 생각합니다.https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase이는 플래시 변환 계층을 공장 상태로 재설정하는 효과가 있을 수 있습니다(일반적으로 SSD에서 수행됨).