Terminalmethode zum Formatieren eines Speicherlaufwerks

Terminalmethode zum Formatieren eines Speicherlaufwerks

Ich möchte wissen, wie man ein Speicherlaufwerk über das Terminal formatiert. Hilfreich in der Antwort wären häufig verwendete Optionen für Befehle und Grundkenntnisse, die man für zukünftige Verwendungen nutzen kann. Insbesondere möchte ich wissen, wie man in den verschiedenen Dateisystemen wie NTFS, FAT32, EXT4 usw. formatiert. Außerdem sind Informationen zum Partitionieren des Laufwerks über das Terminal erwünscht.

Ich versuche, eine externe Festplatte mit hoher Kapazität (EHDD) vom Terminal aus in NTFS zu formatieren.

Ich weiß, dass ich hierfür gparted und andere GUI-Programme verwenden kann, möchte aber trotzdem wissen, wie das vom Terminal aus geht.

Antwort1

Es stehen einige Optionen zur Verfügung:

  1. fdisk.
  2. parted(der CLI-Bruder von GParted).
  3. Die verschiedenenmkfsProgramme, wenn Sie bereits Partitionen haben und formatieren möchten.

fdiskund partedsind interaktiv und verfügen über Hilfebefehle, sodass Sie im Programm jederzeit nach Hilfe suchen können. Beide sind auch skriptfähig. Die mkfsBefehle sind nicht interaktiv.


fdisk

fdisk/dev/sdaerwartet als Argument ein Gerät (z. B. ). Es verfügt über die folgenden Befehle:

Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the DOS compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Ich benutze nicht fdiskso viel. Ich konzentriere mich nur auf:


parted

partednichtbrauchenein Argument (es versucht zu „raten“), aber Sie sollten immer die Festplatte angeben. Wenn Sie die Wahl haben, partedist dies das Programm, das Sie bevorzugen sollten. Es hat die folgenden Befehle:

  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  resizepart NUMBER END                    resize partition NUMBER
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resize NUMBER START END                  resize partition NUMBER and its file system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted

Die Befehle können zu einem eindeutigen Präfix zusammengefasst werden (z. B. hist die Abkürzung für help).

Ich werde eine temporäre Datei ( /tmp/part) verwenden, die ich erstellt habe, um Ihnen die Befehle anzuzeigen. Die Größen sind also etwas klein. Sie sollten diese durch das Gerät ersetzen, das Sie benötigen ( /dev/sdaz. B. ).

Wenn Ihre Festplatte keine Partitionstabelle hat, müssen wir zunächst eine erstellen:

parted /tmp/part mklabel gpt

oder mklabel msdos, wenn Sie die altmodische 4-Primärpartition-Sache wollen (genanntMBR- oder MSDOS-Partitionstabelle). Dann erstellen wir beispielsweise eine ext4-Partition, die bei 3 GB beginnt (d. h. die anfänglichen 3 GB bleiben frei) und 2 GB groß ist (d. h. bei 5 GB endet). partederwartet Speicherorte in MB für mkpartfs, aber wir können das Suffix angeben:

parted /tmp/part mkpart primary ext4 3G 5G

Und noch eine, jetzt eine NTFS-Partition von 1 GB:

parted /tmp/part mkpart primary ntfs 5G 6G

Ergebnis:

# parted /tmp/part print
Model:  (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      3000MB  5000MB  2000MB               primary
 2      5000MB  6000MB  1000MB               primary  msftdata

Beachten Sie, wie es SI-Präfixe verwendet, während GParted konsequent verwendetBinäre Präfixe(und lasse dabei das alberne i) weg. Ich werde die Partitionen beschriften:

# parted /tmp/part name 1 hello
# parted /tmp/part name 2 world
# parted /tmp/part print
Model:  (file)
Disk /tmp/blah: 10.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name   Flags
 1      3000MB  5000MB  2000MB               hello
 2      5000MB  6000MB  1000MB               world  msftdata

Während es problemlos partedPartitionen des Dateisystems erstellen kann , kann es eine vorhandene Partition (!) nicht in NTFS formatieren:ntfs

mkfs partition fs-type
         Make a filesystem fs-type on partition. fs-type can be one 
         of "fat16", "fat32", "ext2", "linux-swap", or "reiserfs".

Parted wird Ihnen sagen, dass Sie es zur Manipulation von Partitionen verwenden sollten,keine Dateisysteme, was mich zu folgendem bringt:


mkfs

mkfs, wie , ist im Wesentlichen ein fsckFrontend für verschiedene dateisystemspezifische Befehle. Auf meinem System sind beispielsweise , mkfs.bfs, mkfs.cramfs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, mkfs.fat, mkfs.minix, mkfs.msdos, verfügbar.mkfs.ntfsmkfs.vfat

Leider funktioniert while partedbei einer Datei wie der, die ich oben verwendet habe, einwandfrei, mkfskann aber in solchen Dateien nicht nach Partitionen suchen. Tatsächlich erwartet es Blockgeräte, also muss ich es dazu zwingen, wenn ich eine neue Datei /tmp/filefür verwenden möchte mkfs. Sie verwenden das Blockgerät, das der Partition entspricht, die Sie formatieren möchten, z. B. /dev/sda2. Die allgemeine Syntax für mkfslautet:

# mkfs --help
Usage: mkfs [options] [-t type fs-options] device [size]

Options:
 -t, --type=TYPE  file system type, when undefined ext2 is used
     fs-options   parameters to real file system builder
     device       path to a device
     size         number of blocks on the device
 -V, --verbose    explain what is done
                  defining -V more than once will cause a dry-run
 -V, --version    output version information and exit
                  -V as version must be only option
 -h, --help       display this help and exit

For more information, see mkfs(8).

Wie Sie sehen, -tkönnen wir mit diesem Flag dateisystemspezifische Flags übergeben. Zum Beispiel NTFS-Flags:

# mkfs.ntfs --help 
Usage: mkntfs [options] device [number-of-sectors]

Basic options:
    -f, --fast                      Perform a quick format
    -Q, --quick                     Perform a quick format
    -L, --label STRING              Set the volume label
    -C, --enable-compression        Enable compression on the volume
    -I, --no-indexing               Disable indexing on the volume
    -n, --no-action                 Do not write to disk

Advanced options:
    -c, --cluster-size BYTES        Specify the cluster size for the volume
    -s, --sector-size BYTES         Specify the sector size for the device
    -p, --partition-start SECTOR    Specify the partition start sector
    -H, --heads NUM                 Specify the number of heads
    -S, --sectors-per-track NUM     Specify the number of sectors per track
    -z, --mft-zone-multiplier NUM   Set the MFT zone multiplier
    -T, --zero-time                 Fake the time to be 00:00 UTC, Jan 1, 1970
    -F, --force                     Force execution despite errors

Output options:
    -q, --quiet                     Quiet execution
    -v, --verbose                   Verbose execution
        --debug                     Very verbose execution

Help options:
    -V, --version                   Display version
    -l, --license                   Display licensing information
    -h, --help                      Display this help

Developers' email address: [email protected]
News, support and information:  http://tuxera.com

Erstellen wir also eine NTFS-Partition mit Schnellformatierung ( -Q), erzwingen die Verarbeitung einer Nicht-Blockgerätedatei ( -F) und legen eine Bezeichnung fest ( -L "hello world").

# mkfs -t ntfs -F -Q -L "hello world" /tmp/file
/tmp/file is not a block device.
mkntfs forced anyway.
The sector size was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 512 bytes.
The partition start sector was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /tmp/file and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

Offensichtlich hat es ihm keinen Spaß gemacht, an einer Datei zu arbeiten. :) Keine Sorge, es sollte die meisten Werte automatisch erkennen, wenn es an einer echten Festplatte arbeitet. Sogar diese „Datei“ funktioniert als Dateisystem einwandfrei:

# mount -t ntfs-3g /tmp/file /mnt
# touch "/mnt/a file in mnt"
# ls -l /mnt
total 0
-rwxrwxrwx 1 root root 0 Aug 29 06:43 a file in mnt
# umount /mnt
# ls -l /mnt
total 0

(Sehen Sie die seltsamen Berechtigungen?)


Anmerkungen:

  1. Ich habe es in dieser Antwort noch nirgends verwendet sudo. Da ich mit Dateien gearbeitet habe, die mir gehörten, brauchte ich es nicht sudo. partedIch werde Sie davor warnen. Für Blockgeräte, die normalerweise immer im Besitz von sind root, benötigen Sie sudo(oder Sie müssen eine Root-Shell über sudo -ioder verwenden sudo su -).
  2. partedist ein GNU-Programm und verfügt wie viele GNU-Programme über eine umfangreiche Dokumentation im infoFormat. Installieren Sie parted-doc( sudo apt-get install parted-doc) und führen Sie dann aus info parted. Sie können auch dieOnline-Benutzerhandbuch.
  3. GParted kann eine Partition in NTFS formatieren, indem es das entsprechende mkfsProgramm direkt aufruft ( mkntfsin diesem Fall mkfs.ntfsist - nur ein Link zu mkntfs). Es legt auch eine Reihe von Parametern fest. Tatsächlich können Sie bei den meisten Vorgängen die Details der GParted-Nachrichten untersuchen, um zu sehen, welche Befehle ausgeführt wurden.
  4. Ich werde nicht auf die Vorzüge der Partitionstabellen GPT gegenüber MBR/MSDOS eingehen, aber GPT ist wahrscheinlich auf neuen Geräten mit UEFI zu finden, insbesondere wenn Sie darauf Windows 8 installiert haben.Der Stand der Partitionierungstools?erläutert, welche Tools bei Problemen mit GPT verfügbar sind.
  5. LVM, ZFS und btrfs sind eine ganz andere Sache. Sie alle haben ihre zugehörigen Tools und Sie sollten diese anstelle von partedoder verwenden fdisk(außer vielleicht für einen ersten Schritt zum Erstellen von Partitionen für ihre Verwendung).

Hinweis zur partedVerwendung:

Die Syntax des partedProgramms lautet:

parted [options] [device [command [options...]...]]

Wenn Sie partedohne einen Befehl ausführen, etwa:

parted /tmp/parted

Ihnen wird eine einfache Shell angezeigt, in der Sie die obigen Befehle ausführen können. Diese Befehle können jedoch auch direkt mit dem partedProgramm ausgeführt werden. Diese drei sind also gleichwertig:

# parted /tmp/parted
GNU Parted 2.3
Using /tmp/parted
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt

Und

# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /tmp/parted
Using /tmp/parted
(parted) mklabel gpt

Und

parted /tmp/parted mklabel gpt

Beachten Sie auch, dass beim Erstellen von Partitionen mit partedein nützlicher Indikator für das Ende von Partitionen ist -1s(dies ist „1“ zwischen dem Bindestrich und dem „s“). Dies ist nützlich, wenn Sie möchten, dass Ihre Partition von einem angegebenen Anfang bis zum Rest der Festplatte reicht. Um genauer zu sein, führen Sie

parted /dev/sda -- mkpart primary ext4 3G -1s

erstellt eine Partition, /dev/sdadie bei 3G beginnt und beim letzten Sektor der /dev/sdaFestplatte endet (d. h. sie reicht von 3G bis zum gesamten Rest der Festplatte). Beachten Sie, dass dies --erforderlich ist, damit 1ses nicht als ungültige Option interpretiert wird.

Antwort2

Zunächst erfahren Sie, wie Sie Ihre Festplatte mit dem Dienstprogramm fdisk tatsächlich partitionieren.

Linux erlaubt nur 4 primäre Partitionen. Sie können eine viel größere Anzahl logischer Partitionen haben, indem Sie eine der primären Partitionen unterteilen.

Nur eine der primären Partitionen kann unterteilt werden.

fdisk wird gestartet, indem Sie in der Eingabeaufforderung „Root-fdisk-Gerät“ eingeben.

Das Gerät könnte beispielsweise /dev/sda oder /dev/sdb sein.

Die grundlegenden fdisk-Befehle, die Sie benötigen, sind:

p print the partition table

n create a new partition

d delete a partition

q quit without saving changes

w write the new partition table and exit

An der Partitionstabelle vorgenommene Änderungen werden erst wirksam, wenn Sie den Schreibbefehl (w) eingeben.

Hier ist ein Beispiel für eine Partitionstabelle:

Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1   *         1       184    370912+  83  Linux
/dev/sdb2           185       368    370944   83  Linux
/dev/sdb3           369       552    370944   83  Linux
/dev/sdb4           553       621    139104   82  Linux swap

Beispiel:

Starten Sie fdisk von der Shell-Eingabeaufforderung aus:

sudo su
fdisk /dev/sdb 

Dies zeigt an, dass Sie das zweite Laufwerk auf Ihrem SATA-Controller verwenden.

Command (m for help): p

Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

That makes for 384Mb per partition. 
Now You get to work.


Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):<RETURN>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +384M

Next, You set up the partition You want to use for swap:


Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):<RETURN>
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +128M

Nun sieht die Partitionstabelle folgendermaßen aus:

 Device Boot      Start       End    Blocks   Id  System
/dev/sdb1             1       196    395104   83  Linux
/dev/sdb2           197       262    133056   83  Linux

Zum Schluss machen Sie die erste Partition bootfähig:

Command (m for help): a
Partition number (1-4): 1

And You make the second partition of type swap:


Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)      
Command (m for help): p

Das Endergebnis:

Disk /dev/sdb: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1   *         1       196    395104+  83  Linux
/dev/sdb2           197       262    133056   82  Linux swap

Schließlich geben Sie den Schreibbefehl (w) ein, um die Tabelle auf die Festplatte zu schreiben.


Das Dienstprogramm mkfs wird zum Erstellen eines Dateisystems (ext2, ext3, ext4 usw.) auf Ihrem Linux-System verwendet.

Sie sollten dem MKFS den Gerätenamen angeben, auf dem das Dateisystem erstellt werden soll.

Verfügbare Filesystem Builder-Befehle anzeigen

Die Dateisystem-Builder (mkfs*-Befehle) werden normalerweise in Verzeichnissen wie /sbin/, /sbin/fs, /sbin/fs.d, /etc/fs und /etc gesucht.

Wenn es nicht gefunden wird, durchsucht es abschließend die in der PATH-Variable gefundenen Verzeichnisse.

Die folgende Liste zeigt die in einem System verfügbaren mkfs*-Befehle.

sudo su
cd /sbin
ls mkfs*

mkfs  mkfs.bfs  mkfs.cramfs  mkfs.ext2  mkfs.ext3  mkfs.ext4  mkfs.ext4dev  
mkfs.minix  mkfs.msdos  mkfs.ntfs  mkfs.vfat

Erstellen Sie ein Dateisystem auf einem bestimmten Gerät

Um das Dateisystem mit dem Befehl mkfs zu erstellen, sind die erforderlichen Argumente Gerätedateiname und Dateisystemtyp, wie unten gezeigt.

Das folgende Beispiel erstellt ein ext4-Dateisystem auf der Partition /dev/sdb1.

sudo su
mkfs -t ext4 /dev/sdb1 

mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1120112 inodes, 4476416 blocks
223820 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
137 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

Bitte beachten Sie, dass der Standarddateisystemtyp für den Befehl mkfs ext2 ist.

Wenn Sie die Option „-t“ nicht angeben, wird ein ext2-Dateisystem erstellt.

Sie können auch die zuvor besprochene Methode verwenden, um festzustellen, ob Sie ein ext2-, ext3- oder ext4-Dateisystem haben.


Formatieren eines NTFS-Laufwerks

Zunächst müssen Sie NTFS-Dateisysteme erstellen können. Installieren Sie daher ntfsprogs:

sudo su 
apt-get install ntfs-3g

Zweitens löschen Sie die Partition und erstellen sie als NTFS neu.

sudo su 
umount /dev/sdb1
fdisk /dev/sdb

Options to select:

    ‘d’ to delete the partition
    ‘n’ to create a new partition
    ‘p’ for primary
    ‘1’ for partition number
    ‘Enter’ for first cylinder (default 1)
    ‘Enter’ for last cylinder (default of max size)
    ‘t’ for type
    ‘L’ to list codes, and enter code for HPFS/NTFS. In my case, it’s ‘7’
    ‘w’ to write changes to disk, and exit

umount /dev/sdb1

Im letzten Schritt hängen Sie die Partition aus, da Ubuntu sie automatisch wieder für Sie bereitgestellt hat.

Jetzt müssen Sie das Dateisystem erstellen. Dafür gibt es zwei Möglichkeiten: die ungeduldige Methode (Schnellformatierung) oder die bessere, aber viel zeitaufwändigere Methode (Vollformatierung).

Schnellformatierung

Dadurch wird nur der Speicherplatz zugewiesen, das Laufwerk wird jedoch nicht auf Null gesetzt oder nach fehlerhaften Sektoren gesucht. Dies bedeutet, dass der Vorgang einige Sekunden dauern wird.

sudo su 
mkfs.ntfs -f /dev/sdb1

Vollformat

Wenn Ihnen die Datenintegrität viel wichtiger ist und Ihnen das Warten nichts ausmacht, führen Sie eine vollständige Formatierung durch.

Das Zurücksetzen eines großen Laufwerks auf Null kann mehrere Stunden dauern.

sudo su 
mkfs.ntfs /dev/sdb1

verwandte Informationen