it-swarm.com.de

Terminal-Methode zum Formatieren des Speicherlaufwerks

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.

59

Es stehen einige Optionen zur Verfügung:

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

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


fdisk

fdisk erwartet ein Gerät (z. B. _/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 fdisk nicht so oft. Ich werde mich nur konzentrieren auf:


parted

parted benötigt kein Argument (versucht zu "raten"), aber Sie sollten immer den Datenträger angeben. Wenn Sie die Wahl haben, ist parted 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 einem eindeutigen Präfix zugeordnet werden (z. B. h steht für help).

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/sda_, zum 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 4-Primär-Partitions-Sache der alten Schule wollen (genannt MBR- oder MSDOS-Partitionstabelle ). Dann erstellen wir zum Beispiel eine ext4-Partition, die bei 3 GB beginnt (d. H. Das anfängliche 3G frei lässt) und eine Größe von 2 GB hat (d. H. Bei 5 GB endet). parted erwartet 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 Binärpräfixe (beim Löschen des albernen i) verwendet. 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 parted Partitionen des Dateisystems ntfs erstellen kann, ist es nicht möglich, eine vorhandene Partition (!) In NTFS zu formatieren:

_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 verwenden sollten , nicht von Dateisystemen , was mich zu Folgendem bringt:


mkfs

mkfs ist wie fsck im Wesentlichen ein Frontend für verschiedene dateisystemspezifische Befehle. Auf meinem System beispielsweise _mkfs.bfs_, _mkfs.cramfs_, _mkfs.ext2_, _mkfs.ext3_, _mkfs.ext4_, _mkfs.ext4dev_, _mkfs.fatmkfs.minix_, _mkfs.msdos_, _mkfs.ntfs_, _mkfs.vfat_ sind verfügbar.

Leider kann parted, während mkfs mit einer Datei wie der oben beschriebenen einwandfrei funktioniert, in solchen Dateien nicht nach Partitionen suchen. Tatsächlich werden Blockgeräte erwartet. Wenn ich also eine neue Datei _/tmp/file_ für mkfs verwende, muss ich dies erzwingen. Sie verwenden das Blockiergerät, das der zu formatierenden Partition entspricht, z. B. _/dev/sda2_. Die allgemeine Syntax für mkfs lautet:

_# 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, können Sie mit dem Flag _-t_ 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 schneller Formatierung (_-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 Sudo noch nirgends in dieser Antwort verwendet. Da ich mit Dateien und Dateien im Besitz von mir gearbeitet habe, habe ich Sudo nicht benötigt. parted warnt Sie darüber. Für Blockgeräte, die normalerweise immer im Besitz von root sind, benötigen Sie Sudo (oder Sie müssen eine Root-Shell über _Sudo -i_ oder _Sudo su -_ verwenden).
  2. parted ist ein GNU Programm und verfügt wie viele GNU Programme über eine umfangreiche Dokumentation im Format info. Installieren Sie _parted-doc_ (_Sudo apt-get install parted-doc_) und führen Sie dann _info parted_ aus. Sie können auch das Online-Benutzerhandbuch lesen.
  3. GParted kann eine Partition in NTFS formatieren, indem es direkt das entsprechende Programm mkfs aufruft (mkntfs, in diesem Fall - _mkfs.ntfs_ ist 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 Status der Partitionierungstools? beschreibt, 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 parted oder fdisk verwenden (mit Ausnahme eines ersten Schritts zum Erstellen von Partitionen für ihre Verwendung).

Hinweis zur Verwendung von parted:

Die Syntax des Programms parted lautet:

_parted [options] [device [command [options...]...]]
_

Wenn Sie parted ohne einen Befehl ausführen, wie zum Beispiel:

_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 Programm parted 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 parted das Ende von Partitionen mit _-1s_ angezeigt wird (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 von _/dev/sda_, die mit 3G beginnt und am letzten Sektor der _/dev/sda_ -Disk endet (d. h. von 3G bis zum gesamten Rest der Disk). Beachten Sie, dass _--_ erforderlich ist, damit _1s_ nicht als ungültige Option interpretiert wird.

66
muru

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 Möglichkeit, 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 nach fehlerhaften Sektoren gesucht. 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 eine vollständige Formatierung durch.

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

Sudo su 
mkfs.ntfs /dev/sdb1
11
kyodake