Terminal-Methode zum Formatieren des Speicherlaufwerks

59

Ich möchte wissen, wie ein Speicherlaufwerk über das Terminal formatiert wird. In der Antwort hilfreiche Dinge wären häufig verwendete Optionen für Befehle und Grundkenntnisse, die zur Extrapolation zukünftiger Verwendungen verwendet werden können. Speziell möchte ich wissen, wie in den verschiedenen Dateisystemen wie NTFS, FAT32, EXT4 usw. formatiert wird. Informationen zum Partitionieren des Laufwerks über das Terminal sind ebenfalls erwünscht.

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

Ich weiß, dass ich gparted für dieses und andere GUI-Programme verwenden kann, aber ich möchte jetzt noch wissen, wie es vom Terminal aus gemacht wird.

GoProCameraByGoPro
quelle
1
Wer auch immer anser wird: -mStellen Sie sicher, dass Sie die Option auf reservierten Speicherplatz erklären - es ist relevant, weil es intuitiv ist.
Volker Siegel

Antworten:

66

Es stehen einige Optionen zur Verfügung:

  1. fdisk(älter, unterstützt GPT 4 nicht ).
  2. parted (der CLI-Bruder von GParted).
  3. Die verschiedenen mkfsProgramme, wenn Sie bereits Partitionen haben und formatieren möchten.

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


fdisk

fdiskerwartet ein Gerät (wie /dev/sda) als Argument. Es hat 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 werde mich nur konzentrieren auf:


parted

partednicht braucht ein Argument (es versucht , zu „erraten“), aber Sie sollten immer die Festplatte angeben. Wenn Sie die Wahl haben, partedist 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 mit einem eindeutigen Präfix (z. B. hAbkürzung für help) verknüpft werden.

Ich verwende eine temporäre Datei ( /tmp/part), die ich erstellt habe, um Ihnen die Befehle anzuzeigen, damit die Größen etwas kleiner werden. Sie sollten dies durch das Gerät ersetzen, das Sie benötigen ( /dev/sdazum Beispiel).

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

parted /tmp/part mklabel gpt

oder mklabel msdos, wenn Sie die alte 4-Primär-Partition wollen ( MBR oder MSDOS Partitionstabelle genannt ). Dann erstellen wir beispielsweise eine ext4-Partition, die mit 3 GB beginnt (dh das anfängliche 3G bleibt frei) und eine Größe von 2 GB hat (dh mit 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 eine andere, 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 SI-Präfixe verwendet werden, während GParted fest Binärpräfixe verwendet (während das Dumme gelöscht wird i). 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 partedPartitionen Dateisystem erstellen kann ntfsnur gut, es kann nicht formatiert wird eine vorhandene Partition zu 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".

In der Tat wird parted Ihnen sagen, dass Sie es zum Manipulieren von Partitionen und nicht von Dateisystemen verwenden sollten.


mkfs

mkfs, Wie fsck, ist im Wesentlichen ein Frontend für verschiedene Dateisystem-spezifische Befehle. Auf meinem System zum Beispiel mkfs.bfs, mkfs.cramfs, mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.ext4dev, mkfs.fat, mkfs.minix, mkfs.msdos, mkfs.ntfs, mkfs.vfatstehen zur Verfügung.

Jetzt kann partedich leider, während eine Datei, wie die oben beschriebene, mkfseinwandfrei bearbeitet wird, nicht nach Partitionen in solchen Dateien suchen. In der Tat, es erwartet Geräte blockieren, so dass , wenn ich eine neue Datei verwenden , werde /tmp/filefür mkfs, ich es so tun zwingen müssen. Sie verwenden das Blockiergerät, das der Partition entspricht, die Sie formatieren möchten, z /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 dem Flag dateisystemspezifische Flags übergeben. Beispielsweise 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), die gezwungen wird, eine Nicht-Block-Gerätedatei ( -F) zu bearbeiten, und setzen wir eine Bezeichnung ( -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 keinen Spaß gemacht, an einer Datei zu arbeiten. :) Keine Sorge, es sollte automatisch die meisten Werte erkennen, wenn auf einer tatsächlichen Festplatte gearbeitet wird. Auch diese "Datei" funktioniert gut als Dateisystem:

# 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

(Siehe die seltsamen Berechtigungen?)


Anmerkungen:

  1. Ich habe noch sudonirgendwo in dieser Antwort verwendet. Da ich mit Dateien und Dateien im Besitz von mir arbeitete, brauchte ich das nicht sudo. partedwerde dich davor warnen. Für Block-Geräte, die normalerweise immer im Besitz von sind root, benötigen Sie sudo(oder Sie müssen über sudo -ioder eine Root-Shell verwenden sudo su -).
  2. partedist ein GNU-Programm und hat wie viele GNU-Programme 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 das Online-Benutzerhandbuch lesen .
  3. GParted kann eine Partition in NTFS formatieren, indem es das entsprechende mkfsProgramm direkt aufruft ( mkntfsin diesem Fall mkfs.ntfsist dies nur eine Verknüpfung zu mkntfs). Es werden auch eine Reihe von Parametern eingestellt. Tatsächlich können Sie für die meisten Vorgänge die Details der GParted-Nachrichten überprüfen, um festzustellen, welche Befehle ausgeführt wurden.
  4. Ich werde nicht auf die Vorteile von GPT gegenüber MBR / MSDOS-Partitionstabellen eingehen, aber GPT wird wahrscheinlich auf neuen Geräten mit UEFI zu finden sein, insbesondere wenn Sie Windows 8 verwenden. Der Stand der Partitionierungswerkzeuge? Erläutert, welche Tools verfügbar sind, wenn Sie mit GPT konfrontiert sind.
  5. LVM, ZFS und BTRFS sind ein ganz anderes Spiel. Sie haben alle ihre zugehörigen Tools, und Sie sollten sie anstelle von partedoder verwenden fdisk(mit Ausnahme von möglicherweise einem 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 , wie:

parted /tmp/parted

Es wird eine einfache Shell angezeigt, in der Sie die oben genannten 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 sich Ihre Partition von einem bestimmten Anfang bis zum Rest der Festplatte erstreckt. Um genauer zu sein, läuft

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

erstellt eine Partition /dev/sda, die mit 3G beginnt und am letzten Sektor der /dev/sdaFestplatte endet (dh von 3G bis zum gesamten Rest der Festplatte). Beachten Sie, dass das --notwendig ist, um 1snicht als ungültige Option interpretiert zu werden.

muru
quelle
IMHO, gdisk, auch bekannt als GPT fdisk, ist parted überlegen
Ethan Reesor
1
@FireLizzard ausgezeichnet! Bitte senden Sie eine Antwort, in der die Verwendung beschrieben wird.
muru
Während die Frage klar ist, wie eine Festplatte formatiert werden soll, warum erwähnen Sie überhaupt parted und fdisk? Sie erwähnen sogar selbst, dass Sie eine Festplatte nicht mit Parted formatieren können.
Zunder
@kreide las noch einmal: "Informationen darüber, wie man das Laufwerk über ein Terminal partitioniert, sind ebenfalls erwünscht."
muru
11

Zuerst 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 erstellen, indem Sie eine der primären Partitionen unterteilen.

Nur eine der primären Partitionen kann unterteilt werden.

fdisk wird durch Eingabe von root fdisk device an der Eingabeaufforderung gestartet.

Das Gerät könnte so etwas wie / 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

Änderungen, die Sie an der Partitionstabelle vornehmen, werden erst wirksam, wenn Sie den Befehl write (w) eingeben.

Hier ist eine Beispielpartitionstabelle:

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 über die Shell-Eingabeaufforderung:

sudo su
fdisk /dev/sdb 

Dies zeigt an, dass Sie das zweite Laufwerk Ihres SATA-Controllers 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 so aus:

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

Zuletzt 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

Abschließend geben Sie den Befehl write (w) ein, um die Tabelle auf die Festplatte zu schreiben.


Das Dienstprogramm mkfs wird verwendet, um ein Dateisystem (ext2, ext3, ext4 usw.) auf Ihrem Linux-System zu erstellen.

Sie sollten den Gerätenamen für mkfs angeben, auf dem das Dateisystem erstellt werden soll.

Zeigen Sie die verfügbaren Dateisystem-Builder-Befehle an

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

Wenn nicht gefunden, durchsucht es schließlich die in der PATH-Variablen gefundenen Verzeichnisse.

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

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, müssen die folgenden Argumente angegeben werden: Gerätename und Dateisystemtyp.

Im folgenden Beispiel wird ein ext4-Dateisystem auf der Partition / dev / sdb1 erstellt.

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 Standard-Dateisystemtyp für den Befehl mkfs ext2 ist.

Wenn Sie die Option -t nicht angeben, wird das ext2-Dateisystem erstellt.

Sie können auch die zuvor beschriebene Methode verwenden, um festzustellen, ob Sie über ein ext2- oder ext3- oder ext4-Dateisystem verfügen.


Formatieren Sie ein NTFS-Laufwerk

Zunächst benötigen Sie die Fähigkeit, NTFS-Dateisysteme zu erstellen. Installieren Sie daher ntfsprogs:

sudo su 
apt-get install ntfs-3g

Zweitens sprengen Sie die Partition weg 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ängst du die Partition ab, da Ubuntu sie automatisch erneut für dich angehängt hat.

Nun müssen Sie das Dateisystem erstellen. Es gibt zwei Möglichkeiten: die ungeduldige (Quick Format) oder die bessere, aber viel längere (Full Format).

Schnellformatierung

Dadurch wird nur der Speicherplatz zugewiesen, das Laufwerk wird jedoch nicht auf Null gesetzt und es wird nicht auf fehlerhafte Sektoren geprüft. Dies bedeutet, dass es einige Sekunden dauern wird.

sudo su 
mkfs.ntfs -f /dev/sdb1

Volles Format

Wenn Sie sich mehr Gedanken über die Datenintegrität machen und keine Probleme mit dem Warten haben, führen Sie ein vollständiges Format durch.

Dies kann einige Stunden dauern, um ein großes Laufwerk auf Null zu setzen!

sudo su 
mkfs.ntfs /dev/sdb1
Kyodake
quelle