Monte uma unidade externa no momento da inicialização apenas se ela estiver conectada

50

Eu tenho uma entrada para um disco rígido externo no meu fstab:

UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw

Mas às vezes essa unidade não está conectada no momento da inicialização. Isso me deixa no meio de uma inicialização, com um prompt para "Continue Waiting, pressione S ou pressione M", mas nenhum pressionamento de tecla afeta nesta fase (incluindo Ctrl - Alt - Apagar , nem mesmo o caps-lock).

Antes de escrever um script para verificar a saída de fdisk -l , como posso montar essa unidade no momento da inicialização apenas se ela estiver presente? Seria útil ter uma entrada fdisk para esta unidade, por isso posso apenas digitar mount /jgdata em vez de precisar de um nome de dispositivo.

    
por Jeremy 22.11.2010 / 07:12

6 respostas

44

Você está na trilha certa. Eu encontrei uma maneira que é um pouco mais limpa e melhor forma.

A opção correta para adicionar fstab é nofail , no entanto, ele precisa vir depois de auto . Se você alterá-lo para noauto , ele nunca será montado durante a inicialização. Se você adicionar nobootwait ao bootloader, você pode perder algo sério, como montar a partição antes de fsck concluir a verificação ou não montar uma partição que é usada no processo de inicialização.

Depois de fazer a alteração acima, o sistema iniciará normalmente (e montará o volume) se o dispositivo estiver conectado enquanto o sistema estiver desligado. Ele também será inicializado normalmente se o dispositivo não estiver presente no momento da inicialização.

O único inconveniente é que, se você conectar o dispositivo enquanto o sistema estiver em execução, dependendo da configuração (muitas variáveis para teste), o dispositivo pode não ser montado imediatamente. Isso pode ser solucionado com um simples mount -a ou mount /specific_device ou uma reinicialização.

    
por Bryan Gonzalez 29.12.2012 / 07:08
13

a opção noauto permite que o processo de inicialização continue?

ele não monta automaticamente se estiver presente, mas ele fica conhecido se estiver presente, então um simples mount / jgdata funciona ... então uma montagem / jdata com script não precisaria de uma verificação de saída, apenas capture o erro e mantenha-o inicialização

edit: após algumas leituras adicionais, o bootwait é provavelmente uma opção mais correta para passar ... (geralmente usado para compartilhamentos de rede que podem não estar presentes até mais tarde no processo de inicialização, mas ainda pode causar travamento, idk)

e o script de montagem pode ser adicionado da seguinte forma: link

    
por RobotHumans 22.11.2010 / 08:10
10

Eu tive o mesmo problema - fiz um passo extra

Se você usar a opção nofail em /etc/fstab , o sistema procurará seu disco (e a partição) no momento da inicialização. Se o dispositivo estiver conectado, o sistema de arquivos será montado. Caso contrário, a inicialização continuará normalmente.

Veja o wiki do arco: link

Exemplo

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  nofail,auto,noatime,rw,user    0   0

Eu tentei inicializar o sistema com e sem o dispositivo conectado e tudo funciona bem.

O que não consegui é montar automaticamente quando o disco é conectado após a inicialização (quando não está conectado na inicialização). Eu devo usar mount -a como root para montar tudo novamente.

    
por user898384 29.01.2012 / 18:56
1

A maneira recomendada de montar durante a inicialização está instruindo seu sistema através do arquivo fstab . Olhando para o seu Ask, eu pude ver que você está quase lá, falta apenas a instrução que define o dispositivo para usar as opções de automount, permitindo que o sistema monte o dispositivo quando estiver disponível.

Então, apenas reescreva a linha no seu fstab para ficar como abaixo:

# <file system>           <dir>       <type>    <options>         <dump> <pass>
UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

Após alterar e salvá-lo, tente montá-lo manualmente:

  

$ sudo mount -a

É importante notar que:

  1. você precisa ter certeza sobre o UUID do dispositivo. Os UUIDs são gerados pelos utilitários make-filesystem (mkfs. *) Quando você cria um sistema de arquivos.
  2. Esses <options> precisam ser escritos seguindo um formato muito específico, separados por vírgulas, mas sem espaços depois de cada vírgula. Tenha cuidado com isso; -)
  3. Não tenho certeza se isso funcionará sem problemas porque você está tentando montar automaticamente um sistema de arquivos NTFS, que pode ser manipulado com NTFS-3G Serviços de utilidade pública. Embora minhas instruções devam funcionar corretamente, nunca tentei NTN automount antes. Portanto, se falhar, recomendo que você consulte estas Montando partições do Windows para usos alternativos do NTFS.

Obrigado!

    
por crncosta 22.11.2010 / 17:50
0

Eu tenho o mesmo problema. Eu tenho editado fstab para comentar a entrada quando sei que não vou ter a unidade presente na próxima vez que eu inicializo. Então, quando eu tiver a unidade presente, eu simplesmente edito o fstab para remover o comentário e emitir o mount -a. Esta não é uma solução perfeita. Seria ótimo se eu pudesse descobrir uma maneira de fazer o sistema montar automaticamente a unidade, se presente, ou ignorá-la automaticamente, se não estiver presente. O mesmo problema ocorre se você tiver compartilhamentos NFS montados automaticamente e o servidor não estiver presente.

    
por Detonate 22.11.2010 / 15:24
0
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

funcionou para mim.

nofail ... Não denuncie erros para este dispositivo, se ele não existir.
x-systemd.device-timeout = 30 ... A inicialização levará 30 segundos a mais se o dispositivo não existir (o padrão é 90 segundos).

Fonte: link

    
por user313829 23.04.2018 / 00:12