Eu quero saber como formatar uma unidade de armazenamento a partir do terminal. Coisas úteis a fornecer na resposta seriam frequentemente utilizadas opções para comandos e conhecimento básico que se pode usar para extrapolar usos futuros. Especificamente eu gostaria de saber como formatar nos diferentes sistemas de arquivos como NTFS, FAT32, EXT4, etc. Também são desejadas informações sobre como particionar a unidade via terminal.
Estou tentando formatar um disco rígido externo de alta capacidade (EHDD) em NTFS - a partir do terminal.
Eu sei que posso usar o gparted para este e outros programas GUI, mas ainda quero fazer isso agora a partir do terminal.
Há algumas opções disponíveis:
fdisk
(mais antigo, doesn't suporta GPT4).parted
(o irmão CLI da GParted).mkfs
, se você já tem partições e deseja formatar.
O fdisk
e o parted
são interativos, e têm comandos de ajuda, então você pode sempre procurar ajuda dentro do programa. Ambos também são scriptable. Os comandos `mkfs' não são interativos.fdisk
O fdisk
espera um dispositivo (como /dev/sda
) como argumento. Ele tem os seguintes comandos:
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
. I'vou apenas focar em:parted
parted
does't need an argument (it tries to "guess"), mas você deve sempre especificar o disco. Dada a escolha, parted
é o programa que você deve preferir. Ele tem os seguintes comandos:
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
Os comandos podem ser contratados com um prefixo único (por exemplo, h
é a abreviação de help'). I'vou utilizar um arquivo temporário (
/tmp/parte) que criei para mostrar os comandos, então os tamanhos serão um pouco pequenos. Você deve substituir isso pelo dispositivo que você precisa (
/dev/sda`, por exemplo).
Primeiro, se o seu disco não't tiver uma tabela de partições, temos de criar uma:
parted /tmp/part mklabel gpt
ou mklabel msdos
, se você quiser a coisa da velha escola de 4 partições primárias (chamada MBR ou MSDOS tabela de partição).
Então nós fazemos, digamos, uma partição ext4 começando em 3GB (ou seja, deixando a 3G inicial livre) e de tamanho 2GB (ou seja, terminando em 5GB). O parted' espera localizações em MB para o
mkpartfs', mas nós podemos especificar o sufixo:
parted /tmp/part mkpart primary ext4 3G 5G
E outra, agora uma partição NTFS de 1GB:
parted /tmp/part mkpart primary ntfs 5G 6G
Resultado:
# 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
Note como ele utiliza prefixos SI, enquanto GParted utiliza firmemente prefixos binários (enquanto soltando o tolo i
).
I'irá rotular as partições:
# 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
Enquanto o parted' pode criar partições do sistema de arquivos
ntfs' muito bem, ele pode't formatar uma partição existente (!) para 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
O mkfs', como o
fsck', é essencialmente um frontend para vários comandos específicos do sistema de arquivos. No meu sistema, por exemplo, mkfs.bfs
, mkfs.cramfs
, mkfs.ext2
, mkfs.ext3
, mkfs.ext4
, mkfs.ext4dev
, mkfs.ext4dev
, mkfs.fat
, mkfs.minix
, mkfs.msdos
,mkfs.ntfs
, mkfs.vfat
estão disponíveis.
Agora, infelizmente, enquanto parted
funciona bem em um arquivo, como o que eu usei acima, mkfs
can't vai à caça de partições em tais arquivos. Na verdade, ele espera dispositivos de bloco, então se eu'vou utilizar um novo arquivo /tmp/file
para o mkfs
, eu tenho que forçá-lo a fazer isso. Você'irá utilizar o dispositivo de bloco correspondente à partição que você quer formatar, como /dev/sda2
.
A sintaxe geral para o mkfs
é:
# 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).
Como você pode ver, a bandeira `-t' nos permite passar as bandeiras específicas do sistema de arquivos. Por exemplo, os sinalizadores 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
Então deixe's fazer uma partição NTFS, com formatação rápida (-Q
), forçando-a a operar em um arquivo de dispositivo não-bloco (-F
), e definir uma etiqueta (-L "olá mundo"
).
# 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.
Claramente não'não gosto de trabalhar num ficheiro. :) Don'não se preocupe, ele deve detectar automaticamente a maioria dos valores quando se trabalha num disco real. Mesmo este "file" funciona bem como um sistema de ficheiros:
# 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
em nenhuma parte desta resposta. Como eu estava operando em arquivos, e arquivos de minha propriedade, eu não'não preciso do sudo
. O parted
irá avisá-lo sobre isso. Para dispositivos de bloco, que normalmente são sempre de propriedade do root
, você precisará do sudo
(ou você'terá que utilizar uma shell raiz via sudo -i
ou sudo su -
).parted' é um programa GNU, e como muitos programas GNU, tem uma extensa documentação no formato
info'. Instale o parted-doc
(sudo apt-get install parted-doc
) e então execute o info parted
. Você também pode verificar o manual online user's.mkfs' apropriado (
mkntfs', neste caso - mkfs.ntfs' é apenas um link para
mkntfs'). Ele também define um número de parâmetros. Na verdade, para a maioria das operações, você pode examinar os detalhes das mensagens GParted para ver quais comandos foram executados.parted' ou
fdisk' (exceto talvez por um passo inicial de criação de partições para seu uso).A sintaxe do programa `parted' é:
parted [options] [device [command [options...]...]]
Quando você executa `parted' sem um comando, como:
parted /tmp/parted
Você'será apresentado um shell simples, onde você pode executar os comandos acima. Entretanto, estes comandos também podem ser executados diretamente utilizando o programa `parted'. Portanto, estes três são equivalentes:
# 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
E
# 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
E
parted /tmp/parted mklabel gpt
Note também que, ao criar partições com 'parted', um indicador útil de fim de partições é `-1s' (isto é "1" entre o hífen e o "s"). Isto é útil se você quiser que sua partição abranja desde um início especificado até o resto do disco. Para ser mais específico, execute
parted /dev/sda -- mkpart primary ext4 3G -1s
irá criar uma partição de /dev/sda' que começa em 3G e termina no último setor do disco
/dev/sda' (ou seja, vai do 3G para todo o resto do disco). Note que o --
é necessário, para que o 1s
não seja interpretado como uma opção inválida.
Primeiro você como realmente particionar o seu disco rígido com o utilitário fdisk.
O Linux permite apenas 4 partições primárias. Você pode ter um número muito maior de partições lógicas ao subdividir uma das partições primárias.
Apenas uma das partições primárias pode ser subdividida.
O fdisk é iniciado digitando como dispositivo fdisk raiz no prompt de comando.
O dispositivo pode ser algo como /dev/sda ou /dev/sdb
Os comandos básicos do fdisk que você precisa são:
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
As alterações que você fizer na tabela de partição não terão efeito até que você emita o comando de escrita (w).
Aqui está uma tabela de partição de amostra:
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
Exemplo:
Iniciar o fdisk a partir do prompt da concha:
sudo su
fdisk /dev/sdb
O que indica que você está usando o segundo drive no seu controlador 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
Agora a mesa divisória está assim:
Device Boot Start End Blocks Id System
/dev/sdb1 1 196 395104 83 Linux
/dev/sdb2 197 262 133056 83 Linux
Finalmente, você faz a primeira partição inicializável:
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
O resultado 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
Finalmente, você emite o comando de gravação (w) para escrever a tabela no disco.
O utilitário mkfs é usado para criar sistema de arquivos (ext2, ext3, ext4, etc) no seu sistema Linux.
Você deve especificar o nome do dispositivo para mkfs no qual o sistema de arquivos a ser criado.
Veja os Comandos de Construção de Sistemas de Arquivos Disponíveis
Os construtores de sistemas de ficheiros (comandos mkfs*) são normalmente pesquisados em directórios como /sbin/, /sbin/fs, /sbin/fs.d, /etc/fs e /etc.
Se não for encontrado, finalmente busca os diretórios encontrados na variável PATH.
A lista a seguir mostra os comandos mkfs* disponíveis em um sistema.
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
Construa um Sistema de Arquivos em um Dispositivo Específico
A fim de construir o sistema de arquivos usando o comando mkfs, os argumentos necessários são o nome do dispositivo e o tipo de sistema de arquivos como mostrado abaixo.
O exemplo seguinte cria um sistema de arquivos ext4 na partição /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
Por favor note que o tipo de sistema de arquivos padrão para o comando mkfs é ext2.
Se você não especificar a opção "-t", ele irá criar o sistema de arquivos ext2.
Além disso, você pode usar o método que discutimos anteriormente para identificar se você tem sistema de arquivos ext2, ext3 ou ext4.
Formatar uma unidade NTFS
Primeiro, você vai precisar da capacidade de criar sistemas de arquivos NTFS, então instale o ntfsprogs:
sudo su
apt-get install ntfs-3g
Em segundo lugar, você explode a partição e a recria como 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
No último passo, você desmonta a partição, porque o Ubuntu montou-a automaticamente novamente para você.
Agora, você precisa de criar o sistema de ficheiros. Existem duas formas de o fazer: a forma impaciente (formato rápido), ou a melhor, mas muito mais longa (formato completo).
Formato Rápido
Isso apenas aloca o espaço em disco, mas não zera a unidade ou verifica se há setores ruins. Isto significa que vai demorar alguns segundos.
sudo su
mkfs.ntfs -f /dev/sdb1
Formato completo
Se você está muito mais preocupado com a integridade dos dados e não se importa de esperar, faça um formato completo.
Isto pode demorar algumas horas a zerar uma grande viagem!
sudo su
mkfs.ntfs /dev/sdb1