Ubuntu mount e fstab

Montar é ligar uma partição a uma pasta, para que os arquivos dela apareçam ali. O desktop faz isso sozinho quando você conecta um pendrive. Num servidor, num segundo HD ou quando algo dá errado, você faz pelo terminal com mount. Para montar automaticamente a cada boot, existe o arquivo /etc/fstab.

Você vai aprender
  • O que é um ponto de montagem e como ver o que está montado.
  • Montar e desmontar à mão com mount e umount, entendendo cada parte.
  • Quatro formas de montar, do clique ao /etc/fstab.
  • Configurar um HD extra para montar sozinho no boot, sem risco de travar o sistema.
  • Consertar o sistema quando um fstab errado impede o boot.

Antes dos comandos: uma árvore só

No Windows, cada disco vira uma letra: C:, D:, E:. No Linux existe uma árvore única que começa em /. Os outros discos são "pendurados" em pastas dessa árvore. A pasta onde um disco é pendurado se chama ponto de montagem.

PartiçãoPonto de montagemQuem montou
/dev/nvme0n1p2/O sistema, no boot (está no fstab).
/dev/nvme0n1p1/boot/efiO sistema, no boot.
/dev/sda1 (pendrive)/media/ana/PENDRIVEO desktop, ao conectar.
Um HD extra/mnt/backup ou /dadosVocê, com mount ou fstab.

Por convenção, /media é para montagens automáticas do desktop e /mnt é para montagens temporárias feitas à mão.


Ver o que está montado

O findmnt (de find mount) mostra as montagens em forma de árvore. Para uma pasta específica, passe o caminho:

findmnt
O programa: lista o que está montado.
/
Mostra só a montagem da pasta /.
$ findmnt /
TARGET SOURCE         FSTYPE OPTIONS
/      /dev/nvme0n1p2 ext4   rw,relatime
ColunaSignificado
TARGETO ponto de montagem (a pasta).
SOURCEA partição que está ali.
FSTYPEO sistema de arquivos.
OPTIONSAs opções: rw = leitura e escrita, ro = só leitura.

Outras formas de ver as montagens:

ComandoQuando usar
findmntVer tudo em árvore, inclusive montagens internas do sistema.
df -hVer só os discos de verdade, com o espaço livre.
lsblkVer discos montados e não montados (coluna MOUNTPOINTS vazia).
mount (sem nada)A forma antiga: uma linha por montagem, muito longa.

Montar à mão: mount

Vamos montar o pendrive /dev/sda1 na pasta /mnt/pendrive. São três passos.

  1. Descubra o nome da partição. Conecte o pendrive e rode lsblk. Se o desktop já tiver montado o pendrive em /media, desmonte pelo app Arquivos primeiro.

    $ lsblk -e7 -o NAME,SIZE,FSTYPE,MOUNTPOINTS
    NAME          SIZE FSTYPE MOUNTPOINTS
    sda          29,3G
    └─sda1       29,3G vfat                    « o pendrive, ainda sem pasta
    nvme0n1     476,9G
    ├─nvme0n1p1     1G vfat   /boot/efi
    └─nvme0n1p2 475,9G ext4   /
  2. Crie a pasta que vai servir de ponto de montagem. Ela precisa existir antes.

    $ sudo mkdir -p /mnt/pendrive
    [sudo: authenticate] Senha:
  3. Monte.

    sudo
    Montar exige permissão de administrador.
    mount
    O programa que monta.
    /dev/sda1
    O quê: a partição.
    /mnt/pendrive
    Onde: o ponto de montagem.
    $ sudo mount /dev/sda1 /mnt/pendrive
    $ ls /mnt/pendrive
     fotos   trabalho.odt  'Meus documentos'
    $ findmnt /mnt/pendrive
    TARGET        SOURCE    FSTYPE OPTIONS
    /mnt/pendrive /dev/sda1 vfat   rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro

Mais uma vez, silêncio significa sucesso: o mount não mostra nada quando dá certo. O mount descobre sozinho o tipo (aqui, vfat). Para forçar um tipo, use -t: sudo mount -t ext4 /dev/sdb1 /mnt/hd.

Opções de montagem: -o

A opção -o (de options) passa ajustes separados por vírgula, sem espaço.

sudo mount
Montar como administrador.
-o ro,uid=1000
Opções: ro = só leitura; uid=1000 = os arquivos pertencem à ana.
/dev/sda1 /mnt/pendrive
O quê e onde.
OpçãoPara quê
ro / rwSó leitura / leitura e escrita. ro é ótimo para examinar um disco sem risco.
uid=1000,gid=1000Em FAT32, exFAT e NTFS (que não têm donos), define quem é o dono dos arquivos. Sem isso, só o root grava.
noexecImpede rodar programas a partir desse disco.
nofailNo fstab: se o disco não estiver conectado, o boot continua.
remount,rwRemonta algo que está só leitura como leitura e escrita.

Para descobrir o seu número de usuário (o uid), rode id -u. O primeiro usuário criado no Ubuntu é o 1000.


Desmontar: umount

Repare: é umount, sem o "n". Desmontar grava no disco o que ainda estava na memória. Sempre desmonte antes de tirar um pendrive, ou arquivos podem ficar corrompidos.

sudo
Desmontar também exige administrador (para o que você montou com sudo).
umount
O programa que desmonta.
/mnt/pendrive
A pasta ou a partição (/dev/sda1); os dois funcionam.
$ sudo umount /mnt/pendrive
$ findmnt /mnt/pendrive
$ echo $?
1                              « 1 = nada montado ali; deu certo

Quatro formas de montar

Forma 1: o desktop

Conecte o pendrive: ele aparece no app Arquivos e é montado em /media/ana/RÓTULO. Para desmontar, clique no ícone de ejetar ao lado do nome.

Forma 2: udisksctl, sem sudo

O udisksctl faz pelo terminal o mesmo que o desktop: monta em /media/ana e não pede senha para discos removíveis.

$ udisksctl mount -b /dev/sda1
Mounted /dev/sda1 at /media/ana/PENDRIVE
$ udisksctl unmount -b /dev/sda1
Unmounted /dev/sda1.
$ udisksctl power-off -b /dev/sda          « desliga o pendrive para remover com segurança

-b vem de block device. Saída ilustrativa: o texto pode variar conforme a versão.

Forma 3: mount, à mão

É o que você aprendeu acima. Use para montagens temporárias, em servidores ou quando precisa de opções especiais.

Forma 4: /etc/fstab, automático no boot

Para um HD que fica sempre conectado. É o assunto da próxima seção.

FormaPrecisa de sudo?Melhor quando…
DesktopNãoPendrive no dia a dia.
udisksctlNão (removíveis)Pendrive pelo terminal ou por SSH no desktop.
mountSimMontagem temporária ou com opções especiais.
/etc/fstabSim, para editarDisco fixo que deve montar sozinho a cada boot.

/etc/fstab: montar sozinho no boot

fstab vem de file systems table, "tabela de sistemas de arquivos". Cada linha diz ao sistema: "monte isto, ali, desse jeito". Veja o fstab de uma instalação nova do Ubuntu:

$ cat /etc/fstab
# /etc/fstab: static file system information.
# (comentários do instalador omitidos)
/dev/disk/by-uuid/3f6c1e2a-9b7d-4c1e-8a5f-2d4b6c8e0f12 / ext4 defaults 0 1
/dev/disk/by-uuid/8E3F-1A2B /boot/efi vfat defaults 0 1
/swap.img	none	swap	sw	0	0

Cada linha tem seis colunas, separadas por espaços ou tabs:

UUID=7c9e...
1. O quê: a partição. Use o UUID: o nome /dev/sdb1 pode mudar se você trocar um cabo de lugar.
/dados
2. Onde: o ponto de montagem (a pasta precisa existir).
ext4
3. Tipo do sistema de arquivos.
defaults,nofail
4. Opções. defaults é o padrão; nofail evita travar o boot se o disco faltar.
0
5. dump: coluna antiga de backup. Use sempre 0.
2
6. Ordem de verificação no boot: 1 para o /, 2 para os outros discos, 0 para não verificar.

Passo a passo: um HD extra em /dados

  1. Ache o UUID da partição do HD:

    $ lsblk -f -e7 -o NAME,FSTYPE,UUID,MOUNTPOINTS
    NAME        FSTYPE UUID                                 MOUNTPOINTS
    sdb
    └─sdb1      ext4   7c9e2d41-0a6b-4f3e-9d8c-1b2a3c4d5e6f                 « o HD novo
    nvme0n1
    ├─nvme0n1p1 vfat   8E3F-1A2B                            /boot/efi
    └─nvme0n1p2 ext4   3f6c1e2a-9b7d-4c1e-8a5f-2d4b6c8e0f12 /
  2. Crie a pasta e faça uma cópia do fstab atual, para poder voltar atrás:

    $ sudo mkdir -p /dados
    $ sudo cp /etc/fstab /etc/fstab.bak
  3. Acrescente a linha no fim do arquivo com sudo nano /etc/fstab (veja nano e vim):

    UUID=7c9e2d41-0a6b-4f3e-9d8c-1b2a3c4d5e6f  /dados  ext4  defaults,nofail  0  2
  4. Confira o arquivo antes de reiniciar. O findmnt --verify procura erros:

    $ sudo findmnt --verify
    Sucesso, nenhum erro ou aviso detectado
  5. Teste sem reiniciar. O systemctl daemon-reload avisa o sistema que o fstab mudou, e o mount -a monta tudo o que está no fstab e ainda não está montado:

    $ sudo systemctl daemon-reload
    $ sudo mount -a
    $ df -h /dados
    Sist. Arq.      Tam. Usado Disp. Uso% Montado em
    /dev/sdb1       916G   28K  870G   1% /dados

    Se o mount -a mostrar qualquer erro, não reinicie: corrija a linha ou volte o backup com sudo cp /etc/fstab.bak /etc/fstab.

  6. Dê a pasta para o seu usuário, porque um ext4 novo pertence ao root:

    $ sudo chown ana:ana /dados
Um fstab errado pode impedir o boot

Sem nofail, se o disco não for encontrado, o sistema espera 90 segundos e para no modo de emergência. Sempre rode sudo findmnt --verify e sudo mount -a antes de reiniciar.


Quando não funciona

"é necessário ser superusuário para montar"
$ mount /dev/sda1 /mnt/pendrive
mount: /mnt/pendrive: é necessário ser superusuário para montar.
       dmesg(1) pode ter mais informação após uma chamada a montar o sistema falhada.

O que aconteceu: só o root pode montar com mount.

Como resolver: use sudo mount …, ou udisksctl mount -b /dev/sda1, que não precisa de sudo.

"o ponto de montagem não existe"
$ sudo mount /dev/sda1 /mnt/usb
mount: /mnt/usb: o ponto de montagem não existe.

Como resolver: crie a pasta antes: sudo mkdir -p /mnt/usb.

"o dispositivo especial … não existe"
$ sudo mount /dev/sdc1 /mnt/pendrive
mount: /mnt/pendrive: o dispositivo especial /dev/sdc1 não existe.

O que aconteceu: o nome está errado ou o pendrive não foi detectado.

Como resolver: confira o nome com lsblk. Se o pendrive não aparece, troque de porta USB e veja as mensagens do kernel com sudo dmesg | tail.

"o alvo está ocupado" ao desmontar
$ sudo umount /mnt/pendrive
umount: /mnt/pendrive: o alvo está ocupado.

O que aconteceu: algum programa está usando arquivos do disco. Muitas vezes é o próprio terminal, que está dentro da pasta.

Como resolver: saia da pasta com cd. Para ver quem está usando: sudo lsof /mnt/pendrive ou sudo fuser -vm /mnt/pendrive. Feche o programa e tente de novo.

"tipo de sistema de arquivos incorreto"
$ sudo mount -t ext4 /dev/sda1 /mnt/pendrive
mount: /mnt/pendrive: tipo de sistema de arquivos incorreto, opção inválida, superbloco inválido em /dev/sda1, página de código ou programa auxiliar faltando ou outro erro.
       dmesg(1) pode ter mais informação após uma chamada a montar o sistema falhada.

O que aconteceu: o tipo informado com -t está errado (o pendrive é vfat), ou a partição está danificada.

Como resolver: tire o -t e deixe o mount descobrir, ou confira o tipo com lsblk -f.

Um fstab errado e o sistema não liga

Depois de editar o fstab e reiniciar, o boot fica parado por 1min30s e aparece algo assim:

[ TIME ] Timed out waiting for device dev-disk-by\x2duuid-7c9e2d41….device - /dev/disk/by-uuid/7c9e2d41-0a6b-….
[DEPEND] Dependency failed for dados.mount - /dados.
You are in emergency mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, or "exit" to boot into default mode.
Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.

Press Enter to continue.

O que aconteceu: uma linha do fstab aponta para um disco que não existe (UUID digitado errado ou HD desconectado) e não tem nofail. O sistema entra no modo de emergência. Como a conta root do Ubuntu não tem senha, ele nem deixa entrar.

Como resolver pelo modo de recuperação:

  1. Reinicie e segure Shift (BIOS) ou toque Esc (UEFI) para abrir o menu do GRUB.
  2. Escolha Opções avançadas para Ubuntu e depois a linha que termina em (recovery mode).
  3. No menu de recuperação, escolha root (abrir um shell como root) e pressione Enter.
  4. O disco está montado só para leitura. Libere a escrita e corrija o arquivo:
    #> mount -o remount,rw /
    #> nano /etc/fstab
    Coloque # no começo da linha problemática (ou acrescente nofail), salve com Ctrl+O e saia com Ctrl+X. Se você fez o backup, basta cp /etc/fstab.bak /etc/fstab.
  5. Reinicie com reboot.

Se nem o modo de recuperação abrir, use um pendrive do Ubuntu. Veja Recuperar um Sistema.


Referência

ComandoO que faz
findmntLista as montagens em árvore
findmnt PASTAMostra o que está montado numa pasta
sudo mount DISP PASTAMonta uma partição numa pasta
sudo mount -t TIPO …Força o tipo do sistema de arquivos
sudo mount -o ro …Monta com opções (aqui, só leitura)
sudo mount -o remount,rw /Remonta o / para leitura e escrita
sudo mount -aMonta tudo do fstab que ainda não está montado
sudo umount PASTADesmonta
udisksctl mount -b DISPMonta em /media sem sudo (removíveis)
sudo findmnt --verifyProcura erros no /etc/fstab
sudo lsof PASTAMostra quem está usando um disco

Exercícios

1. Montar só para leitura

Complete para montar /dev/sdb1 em /mnt/hd sem poder alterar nada:

sudo mount -o /dev/sdb1 /mnt/hd

2. Desmontar

Complete o comando que desmonta /mnt/hd:

sudo /mnt/hd

3. Testar o fstab

Complete o comando que monta tudo o que está no /etc/fstab, para testar antes de reiniciar:

sudo mount

4. Por que usar o UUID, e não /dev/sdb1, no fstab?

5. O que a opção nofail faz no fstab?


Resumo

  • Montar = ligar uma partição a uma pasta (ponto de montagem). Veja as montagens com findmnt ou df -h.
  • sudo mount /dev/X /pasta monta; sudo umount /pasta desmonta. Desmonte sempre antes de tirar um pendrive.
  • udisksctl mount -b /dev/X monta sem sudo, como o desktop.
  • No /etc/fstab, use UUID e nofail, e teste com findmnt --verify e mount -a antes de reiniciar.
  • Se o boot parar no modo de emergência, corrija o fstab pelo modo de recuperação.