Schnellste Möglichkeit, eine Diskette mit Linux zu formatieren?

2279
tjt263

Es ist für ein Bash / Shell-Skript. Grundsätzlich möchte ich ein USB- (oder SD-) Speichergerät formatieren oder löschen. mit einer einzigen Befehlszeile.

Ich wollte es verwenden fdisk, aber es scheint, dass eine Benutzerinteraktion erforderlich ist, wenn ich Automatisierung will.

Also entschied ich mich, es mit: zu nullen
dd if=/dev/zero of=/dev/<target disk>;
Es scheint jedoch, dass nur 2,0 GB freier Speicherplatz frei werden.


root@linux:~# dd if=/dev/zero of=/dev/mmcblk0 dd: writing to '/dev/mmcblk0': No space left on device 3842249+0 records in 3842249+0 records out 1967230976 bytes (2.0 GB, 1.8 GiB) copied, 2.9054 s, 677 MB/s

Im Idealfall spreche ich davon, dass alle Wechseldatenträger neu formatiert und / oder mit einer Imagedatei .iso(via dd) versehen werden.

Eine Neuformatierung ist nicht immer erforderlich, löscht aber auch Daten. und das Löschen aller gespeicherten Daten auf dem Gerät sollte wahrscheinlich das Standardverhalten / Standardverfahren für diese Art von Sache sein.

0
Möchten Sie das Format wie in "Zero Out jeden Sektor" oder als "Leeres Dateisystem erstellen" formatieren? Nicht, dass _either_ überhaupt notwendig ist, da das Schreiben eines Bildes über dd bereits alles überschreibt. grawity vor 7 Jahren 1
@Grawity Tut es wirklich? Das wusste ich nicht Ich dachte, es sei notwendig, die Festplatte vor dem Imaging sauber zu machen. Aber um deine Frage zu beantworten; Ich hätte die Option dem Benutzer gerne zur Verfügung gestellt und von Fall zu Fall entscheiden lassen. Mit anderen Worten, ich denke, die Antwort lautet: * beide *. Ich würde es wirklich schätzen, Prost. tjt263 vor 7 Jahren 0
Ja, das ist zwar nicht das _ Whole_-Laufwerk, aber nur so viele Daten, wie das ISO selbst beansprucht. Unabhängig davon, dass Sie ein Image in `/ dev / sdb` ablegen, um die Partitionstabelle, den Bootloader, die Partitionen und Dateisysteme usw. Auf Ihrem 8-GB-Flash-Laufwerk befinden sich z. B. eine 700-MB-Partition (oder was auch immer das ISO selbst war) und 7,3 GB "unpartitionierter Speicherplatz", den das Betriebssystem nicht einmal betrachtet. grawity vor 7 Jahren 0
@grawity Ich weiß nicht genau, wie oder warum, aber meine SD-Karte wurde buchstäblich geschmolzen. tjt263 vor 7 Jahren 0
Klingt nach einem Fehler. grawity vor 7 Jahren 0

1 Antwort auf die Frage

1
grawity

Das hängt also davon ab

  1. Ihre Definition der Formatierung eines Laufwerks;
  2. die Art dieses Laufwerks.

"Format" könnte wirklich einer der verwirrendsten Begriffe in der Consumer-Technologie sein. Selbst dein Posting verwirrt bereits zwei oder drei verschiedene Aktionen ...

Normalerweise umfasst es drei Ebenen:

  1. Vorbereitung der Medien selbst (z. B. Schreiben von Sektormarkern auf eine Festplatte) - heutzutage normalerweise vom Werk aus, aber zumindest in IBM PC-Tagen kann dies vom PC selbst durchgeführt werden. Dies wird oft als "Low-Level-Formatierung" bezeichnet.

  2. Eine Partitionstabelle (entweder leer oder mit einigen Partitionen) in die ersten Sektoren der Festplatte schreiben - das fdisktut es.

  3. Ein leeres Dateisystem in jede Partition schreiben - das ist format c:oder, was mkfsgetan wird. Dies wurde früher als "High-Level-Formatierung" bezeichnet.

Abgesehen von einigen Leuten wird Schritt 2 als "Low-Level-Format" bezeichnet, da es jetzt keine Nummer 1 mehr gibt. Und manchmal wird das Löschen der gesamten Festplatte als "Formatierung" bezeichnet, auch wenn dort mit einem tatsächlichen Format nichts geschrieben wird . Manchmal wird die Neuinstallation von Windows als "Formatierung" bezeichnet, auch wenn alle Dateien unberührt bleiben.


Wie auch immer, der Rest der Antwort hängt von dem gewünschten Ergebnis ab :

  • Wenn Sie möchten, dass der Datenträger vollständig leer ist (z. B. nichts, was eine Datenwiederherstellungs-App möglicherweise finden könnte), haben Sie zwei Möglichkeiten: Verwerfen oder manuelles Löschen.

    Die "Discard" -Funktion wird in SSDs als TRIM bezeichnet und auch von SD-Karten unterstützt - sie weist den Datenträger selbst an, alle Daten wegzuwerfen. Unter Linux kann das blkdiscardTool für diesen Zweck verwendet werden - geben Sie ein Gerät an und innerhalb von Sekunden ist es leer. (Werkzeuge wie mkfs.ext4werden auch automatisch den Inhalt der Partition verwerfen, bevor das neue Dateisystem darin geschrieben wird.)

    Wenn der Datenträger kein Verwerfen unterstützt (z. B. eine magnetische Festplatte oder ein USB-Flashlaufwerk, dessen Massenspeicher-Schnittstelle diesen Befehl nicht versteht), besteht die einzige andere Möglichkeit darin, jeden Sektor manuell auszublenden, dh zu füllen es mit /dev/zerowie du schon gemacht hast.

    Während Verwerfungs in der Regel nur wenige Sekunden dauert, manuelle Nullfüllung schneller als die Scheibe nicht gehen kann, selbst schreibt annehmen kann (immerhin Sie sind eine Menge Daten zu schreiben).

  • Wenn Sie sich nicht für Restdaten interessieren, sondern lediglich möchten, dass das Betriebssystem eine leere Festplatte anzeigt, können Sie einfach den Bereich löschen, in dem sich die Partitionstabelle befindet. Für MBR ist dies immer Sektor 0, aber vergessen Sie nicht, dass viele Festplatten eine GPT-Partitionstabelle verwenden.

    Dies ist eine sehr schnelle Methode, da Sie höchstens einige Kilobyte löschen müssen. Unter Linux macht der wipefsBefehl den Inhalt der Disk operativ für das Betriebssystem nicht mehr erkennbar. (Standardmäßig nur das Werkzeug druckt, was es würde löschen - verwenden Sie die Option --all. Es tun, es zu machen tatsächlich)

Wie auch immer, jetzt haben Sie eine Platte, die das Betriebssystem als leer ansieht.

  • Wenn Sie möchten, dass der gelöschte Datenträger Partitionen enthält, verwenden Sie Partitionierungswerkzeuge wie fdisk oder parted. Während regelmäßiger fdisk interaktiv ist, gibt es viele Werkzeuge, die leicht scripted werden können - sfdisk, sgdisk, partedsind ein paar Beispiele. Windows hat diskpart.

  • Wenn Sie möchten, dass die Partitionen auch Dateisysteme haben, verwenden Sie Tools wie mkfs.ext4oder mkfs.vfat(äquivalent zu Windows format).


Schließlich, wie in den Kommentaren oben erwähnt: Wenn Sie planen, ein Image (eine .iso-Datei) auf die Festplatte zu schreiben, brauchen Sie dies nicht Sie keine Vorbereitungen treffen.

Das Schreiben von Bildern beginnt bei Sektor 0, so dass alles, was sich zuvor auf der Festplatte befand (bis zur Größe des Bildes), in den Papierkorb verschoben wird. Ob Partitionen und Dateien vorhanden waren oder ob sie leer waren, spielt keine Rolle - sie wird einfach mit dem eigenen Bild überschrieben Partitionen und allen anderen .

Alles, was über die Größe des Images hinausgeht, bleibt erhalten, aber das Betriebssystem kümmert sich nicht darum - da in der Partitionstabelle des Images angegeben ist, dass dort keine Partition vorhanden ist. Natürlich ist das Löschen oder Ausblenden der Diskette immer noch eine gute Idee, wenn Sie sie jemand anderem geben wollen.

Ja, ich denke, ich würde lieber alle alten Daten löschen, nur für den Fall. Ich füge eine Funktion mit "read" & "if", "then", "else"; oder "case" -Anweisung. Auf diese Weise kann der Benutzer entscheiden. tjt263 vor 7 Jahren 0