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:
fdisk
.parted
(der CLI-Bruder von GParted).- 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 jederzeit nach Hilfe suchen können. Beide sind auch skriptfähig. Die mkfs
Befehle sind nicht interaktiv.
fdisk
fdisk
/dev/sda
erwartet 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 fdisk
so viel. Ich konzentriere mich nur auf:
parted
parted
nichtbrauchenein Argument (es versucht zu „raten“), aber Sie sollten immer die Festplatte angeben. Wenn Sie die Wahl haben, parted
ist 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. h
ist 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/sda
z. 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). parted
erwartet 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 parted
Partitionen 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 fsck
Frontend 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.ntfs
mkfs.vfat
Leider funktioniert while parted
bei einer Datei wie der, die ich oben verwendet habe, einwandfrei, mkfs
kann 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/file
fü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 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, -t
kö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:
- Ich habe es in dieser Antwort noch nirgends verwendet
sudo
. Da ich mit Dateien gearbeitet habe, die mir gehörten, brauchte ich es nichtsudo
.parted
Ich werde Sie davor warnen. Für Blockgeräte, die normalerweise immer im Besitz von sindroot
, benötigen Siesudo
(oder Sie müssen eine Root-Shell übersudo -i
oder verwendensudo su -
). parted
ist ein GNU-Programm und verfügt wie viele GNU-Programme über eine umfangreiche Dokumentation iminfo
Format. Installieren Sieparted-doc
(sudo apt-get install parted-doc
) und führen Sie dann ausinfo parted
. Sie können auch dieOnline-Benutzerhandbuch.- GParted kann eine Partition in NTFS formatieren, indem es das entsprechende
mkfs
Programm direkt aufruft (mkntfs
in diesem Fallmkfs.ntfs
ist - nur ein Link zumkntfs
). 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. - 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.
- LVM, ZFS und btrfs sind eine ganz andere Sache. Sie alle haben ihre zugehörigen Tools und Sie sollten diese anstelle von
parted
oder verwendenfdisk
(außer vielleicht für einen ersten Schritt zum Erstellen von Partitionen für ihre Verwendung).
Hinweis zur parted
Verwendung:
Die Syntax des parted
Programms lautet:
parted [options] [device [command [options...]...]]
Wenn Sie parted
ohne 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 parted
Programm 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
ein 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/sda
die bei 3G beginnt und beim letzten Sektor der /dev/sda
Festplatte endet (d. h. sie reicht von 3G bis zum gesamten Rest der Festplatte). Beachten Sie, dass dies --
erforderlich ist, damit 1s
es 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