Je veux savoir comment formater un disque de stockage à partir du terminal. Les éléments utiles à fournir dans la réponse seraient les options souvent utilisées pour les commandes et les connaissances de base que l'on peut utiliser pour extrapoler les utilisations futures. Plus précisément, je voudrais savoir comment formater dans les différents systèmes de fichiers tels que NTFS, FAT32, EXT4, etc. Des informations sur la façon de partitionner le disque via un terminal sont également souhaitées.
J'essaie de formater un disque dur externe de grande capacité (EHDD) en NTFS - à partir du terminal.
Je sais que je peux utiliser gparted pour cela ainsi que d'autres programmes GUI, mais je veux encore savoir comment le faire à partir du terminal.
Il existe plusieurs options :
fdisk
][1] (plus ancien, ne supporte pas [GPT][2]4).parted
][3] (le frère en CLI de GParted).mkfs
][4], si vous avez déjà des partitions et souhaitez les formater.
fdisk
et parted
sont interactifs, et ont des commandes d'aide, donc vous pouvez toujours chercher de l'aide dans le programme. Les deux sont également scriptables. Les commandes mkfs
ne sont pas interactives.fdisk
fdisk
attend un périphérique (tel que /dev/sda
) comme argument. Il possède les commandes suivantes :
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)
fdisk
. Je vais juste me concentrer sur :parted
parted
n'a pas besoin d'un argument (il essaie de "deviner" ;), mais vous devriez toujours spécifier le disque. Si vous avez le choix, parted
est le programme que vous devriez préférer. Il possède les commandes suivantes :
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
Les commandes peuvent être réduites à un préfixe unique (par exemple, h
est le diminutif de help
).
Je vais utiliser un fichier temporaire (/tmp/part
) que j'ai créé pour vous montrer les commandes, donc les tailles seront plutôt petites. Vous devriez le remplacer par le périphérique dont vous avez besoin (/dev/sda
, par exemple).
Tout d’abord, si votre disque n’a pas de table de partition, nous devons en créer une :
parted /tmp/part mklabel gpt
ou mklabel msdos
, si vous voulez la vieille méthode à 4 partitions primaires (appelée [MBR ou table de partition MSDOS][5]).
Ensuite, nous faisons, disons, une partition ext4 commençant à 3GB (c'est-à-dire, laissant la 3G initiale libre) et de taille 2GB (c'est-à-dire, finissant à 5GB). parted
attend des emplacements en Mo pour mkpartfs
, mais nous pouvons spécifier le suffixe :
parted /tmp/part mkpart primary ext4 3G 5G
Et une autre, maintenant une partition NTFS de 1 Go :
parted /tmp/part mkpart primary ntfs 5G 6G
Résultat :
# 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
Notez comment il utilise les préfixes SI, alors que GParted utilise résolument les [préfixes binaires][6] (tout en laissant tomber le i
stupide).
Je vais étiqueter les partitions :
# 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
Alors que parted
peut créer des partitions du système de fichiers ntfs
sans problème, il ne peut pas formater une partition existante ( !) en 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".
mkfs
mkfs
, comme fsck
, est essentiellement une interface pour diverses commandes spécifiques au système de fichiers. Sur mon système par exemple, mkfs.bfs
, mkfs.cramfs
, mkfs.ext2
, mkfs.ext3
, mkfs.ext4
, mkfs.ext4dev
, mkfs.fat
, mkfs.minix
, mkfs.msdos
,mkfs.ntfs
, mkfs.vfat
sont disponibles.
Maintenant, malheureusement, alors que parted
fonctionne très bien sur un fichier, comme celui que j'ai utilisé ci-dessus, mkfs
ne peut pas aller chercher des partitions dans de tels fichiers. En fait, il s'attend à des périphériques blocs, donc si je dois utiliser un nouveau fichier /tmp/file
pour mkfs
, je dois le forcer à le faire. Vous utiliserez le périphérique bloc correspondant à la partition que vous voulez formater, comme /dev/sda2
.
La syntaxe générale de mkfs
est :
# 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).
Comme vous pouvez le voir, le drapeau -t
nous permet de passer des drapeaux spécifiques au système de fichiers. Par exemple, les drapeaux NTFS :
# 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
Créons donc une partition NTFS, avec un formatage rapide (-Q
), en la forçant à opérer sur un fichier non-bloqué (-F
), et en définissant un label (-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.
Il est clair qu'il n'a pas apprécié de travailler sur un fichier :) Ne vous inquiétez pas, il devrait détecter automatiquement la plupart des valeurs lorsqu'il travaille sur un disque réel. Même ce "fichier" ; fonctionne bien comme un système de fichiers :
# 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
sudo
dans cette réponse. Puisque je travaillais sur des fichiers, et des fichiers qui m'appartenaient, je n'avais pas besoin de sudo
. parted
vous en avertira. Pour les périphériques en bloc, qui sont généralement toujours détenus par root
, vous aurez besoin de sudo
(ou vous devrez utiliser un shell root via sudo -i
ou sudo su -
).parted
est un programme GNU, et comme beaucoup de programmes GNU, il possède une documentation étendue au format info
. Installez parted-doc
(sudo apt-get install parted-doc
) et lancez ensuite info parted
. Vous pouvez également consulter le [manuel de l'utilisateur en ligne][7].mkfs
approprié (mkntfs
, dans ce cas - mkfs.ntfs
est juste un lien vers mkntfs
). Il définit également un certain nombre de paramètres. En fait, pour la plupart des opérations, vous pouvez examiner les détails des messages de GParted pour voir quelles commandes ont été exécutées.parted
ou fdisk
(sauf peut-être pour une étape initiale de création de partitions pour leur utilisation).parted
:La syntaxe du programme parted
est :
parted [options] [device [command [options...]...]]
Quand vous lancez parted
sans commande, comme :
parted /tmp/parted
Vous obtiendrez un shell simple, dans lequel vous pourrez exécuter les commandes ci-dessus. Cependant, ces commandes peuvent aussi être exécutées directement en utilisant le programme parted
. Ces trois commandes sont donc équivalentes :
# 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
Et
# 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
Et
parted /tmp/parted mklabel gpt
Notez également que, lorsque vous créez des partitions avec parted
, un indicateur utile de la fin des partitions est -1s
(c'est "1" ; entre le tiret et le "s" ;). Ceci est utile si vous voulez que votre partition s'étende d'un début spécifié jusqu'au reste du disque. Pour être plus précis, en exécutant
parted /dev/sda -- mkpart primary ext4 3G -1s
créera une partition de /dev/sda
qui commencera à 3G et se terminera au dernier secteur du disque /dev/sda
(c'est-à-dire qu'elle s'étendra de 3G à tout le reste du disque). Notez que le --
est nécessaire, pour que 1s
ne soit pas interprété comme une option invalide.
[1] : http://manpages.ubuntu.com/manpages/trusty/en/man8/fdisk.8.html
[2] : https://en.wikipedia.org/wiki/GUID_Partition_Table
[3] : http://manpages.ubuntu.com/manpages/trusty/en/man8/parted.8.html
[4] : http://manpages.ubuntu.com/manpages/trusty/en/man8/mkfs.8.html
[5] : https://en.wikipedia.org/wiki/Master_boot_record#Disk_partitioning
[6] : http://physics.nist.gov/cuu/Units/binary.html
[7] : http://www.gnu.org/software/parted/manual/parted.html
Tout d'abord, comment partitionner votre disque dur avec l'utilitaire fdisk.
Linux ne permet que 4 partitions primaires. Vous pouvez avoir un nombre beaucoup plus important de partitions logiques en subdivisant l'une des partitions primaires.
Seule une des partitions primaires peut être subdivisée.
fdisk est lancé en tapant en tant que root fdisk device à l'invite de commande.
Le périphérique peut être quelque chose comme /dev/sda ou /dev/sdb.
Les commandes de base de fdisk dont vous avez besoin sont les suivantes :
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
Les modifications que vous apportez à la table de partition ne prennent pas effet tant que vous n'avez pas lancé la commande write (w).
Voici un exemple de table de partition :
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
Exemple :
Lancer fdisk à partir de l'invite du shell :
sudo su
fdisk /dev/sdb
Ce qui indique que vous utilisez le deuxième disque sur votre contrôleur SATA.
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
Maintenant la table de partition ressemble à ça :
Device Boot Start End Blocks Id System
/dev/sdb1 1 196 395104 83 Linux
/dev/sdb2 197 262 133056 83 Linux
Enfin, vous rendez la première partition amorçable :
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
Le résultat final :
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
Enfin, vous lancez la commande write (w) pour écrire la table sur le disque.
L'utilitaire mkfs est utilisé pour créer des systèmes de fichiers (ext2, ext3, ext4, etc.) sur votre système Linux.
Vous devez indiquer à mkfs le nom du périphérique sur lequel le système de fichiers doit être créé.
Voir les commandes disponibles pour la création de systèmes de fichiers
Les constructeurs de systèmes de fichiers (commandes mkfs*) sont généralement recherchés dans des répertoires comme /sbin/, /sbin/fs, /sbin/fs.d, /etc/fs et /etc.
S'ils ne sont pas trouvés, ils recherchent finalement les répertoires trouvés dans la variable PATH.
La liste suivante montre les commandes mkfs* disponibles dans un système.
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
Construire un système de fichiers sur un périphérique spécifique
Pour construire le système de fichiers à l'aide de la commande mkfs, les arguments requis sont device-filename et filesystem-type comme indiqué ci-dessous.
L'exemple suivant crée un système de fichiers ext4 sur la 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
Veuillez noter que le type de système de fichiers par défaut pour la commande mkfs est ext2.
Si vous ne spécifiez pas l'option "-t", elle créera un système de fichiers ext2.
En outre, vous pouvez utiliser la méthode dont nous avons parlé précédemment pour identifier si vous avez un système de fichiers ext2, ext3 ou ext4.
Formater un disque NTFS
Tout d'abord, vous allez avoir besoin de la capacité de créer des systèmes de fichiers NTFS, alors installez ntfsprogs :
sudo su
apt-get install ntfs-3g
Deuxièmement, vous effacez la partition et la recréez en NTFS.
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
Dans la dernière étape, vous démontez la partition, car Ubuntu l'a remontée automatiquement pour vous.
Maintenant, vous devez créer le système de fichiers. Il y a deux façons de procéder : la plus impatiente (Quick Format), ou la meilleure mais beaucoup plus longue (Full Format).
Formatage rapide
Cette méthode se contente d'allouer l'espace disque, mais ne remet pas le disque à zéro et ne vérifie pas les secteurs défectueux. Cela signifie que cela prend quelques secondes.
sudo su
mkfs.ntfs -f /dev/sdb1
Formatage complet
Si vous êtes beaucoup plus soucieux de l'intégrité des données et que vous n'avez pas peur d'attendre, faites un formatage complet.
Cela peut prendre quelques heures pour remettre à zéro un gros disque !
sudo su
mkfs.ntfs /dev/sdb1