Linuxでフラッシュメモリをローレベルフォーマットするには?

Linuxでフラッシュメモリをローレベルフォーマットするには?

私の友人がUSBフラッシュドライブに問題があったので、低レベルフォーマットを提案しました。それから私はLinuxでこれを行う方法さえ知らないと思いました。それでは…Linuxでフラッシュメモリを低レベルにフォーマットする方法は?私の友人はWindows上でドライブの「フルフォーマット」を試しましたが、失敗しました。

答え1

「ローレベルフォーマット」はフロッピーディスク上で行われ、トラックとセクタの異なる構成を選択することで、さまざまな密度で書き込むことができます。しかし、それはほとんどの現代メディアには意味がありません。デバイスでデータを構成する方法の概念は固定されており、変更することはできません。これは、磁気領域ではなく個々のビットを有するフラッシュメモリには適していない。mkfsUNIXの世界では、より高いレベルのフォーマットが可能です。

答え2

持つ絶対ほとんどのフラッシュデバイスにはUSB / ATA / SD /などの追加の変換レイヤーがあるため、低レベルのフォーマットが行われます。到着MTDこれは低レベルのMTDデバイスです(できる低レベルの書式を直接実行する場合は[できません])。

答え3

低レベルの書式設定は、人や状況に応じてさまざまな意味を持ちます。

元の意味は、ディスクフォーマット、つまりディスクドライブがデータを保存する前に、メディアにヘッダ、同期、その他のパタ​​ーンを書き込むために必要なステップでした。このようにして、ヘッドはA)トラック上にあるときとB)トラック上の位置を検出できます。フロッピーディスクをローレベルフォーマットすると、ディスクからブロックを読み書きできます。初期のMFMおよびRLL PCハードドライブは、通常、ハードドライブコントローラ(ISAカード)ROMに組み込まれているユーティリティを使用して低レベルフォーマットできます。最新のIDEおよびSATAハードドライブも低レベルフォーマットされていますが、工場でのみ利用可能です。

他のさまざまな意味には、すべてのブロックにゼロを書き込む、HPAやDCOなどの「隠し」領域を無効にするようにドライブを構成する、すべてのブロックをゼロにする、またはフォーマットよりもパーティション化に関連するその他の操作が含まれます。

生のフラッシュには、工場でさまざまな初期準備段階が必要です。各フラッシュ「削除ブロック」(ディスクの「ブロック」と同様)をテストし、実際に不良の場合は不良としてマークする必要があります。各「削除ブロック」には、エラー訂正情報を保持する非常に小さい「OOB」ブロックがあります。ここでは不良として表示されます。不良ブロックへの書き込み操作により、特定のビットを不良ブロックとして識別するためにリセットできない可能性があるため、この手順を繰り返すことはありません。

しかし、生のフラッシュメモリを扱うわけではありません。 USBフラッシュドライブを扱っています。すべてのフラッシュドライブには、ホストからUSBコマンドを受け入れ、ホストの代わりに内部のネイティブフラッシュメモリと通信するコントローラチップがあります。これらのコントローラチップの一部は、フラッシュメモリの一部を別々のCD-ROMパーティションとして報告するか、2つの別々のUSBストレージデバイスとして機能するように構成することができます。コントローラチップの製造元とモデルによっては、コントローラチップをリセットするための回復または設定ユーティリティがあります(Windowsのみ)。まず、フラッシュドライブを開き、小さなPCBにある2つのチップのうち、より小さなチップ(おそらく)を見つけて、インターネットで検索してみてください。ケースの外側に撮影されたメーカーとモデルは、ケース内のコントローラの製造元を見つけるのに役立ちません。

答え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で行われます)。

関連情報