Monte una unidad externa en el momento del arranque solo si está conectada

70

Tengo una entrada para un disco duro externo en mi fstab:

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

Pero a veces esta unidad no está conectada en el momento del arranque. Esto me deja a la mitad de un arranque, con el mensaje "Continuar esperando, presionar S o M", pero ninguna pulsación de tecla tiene ningún efecto en esta etapa (incluyendo Ctrl- Alt- Delete, ni siquiera bloqueo de mayúsculas).

A falta de escribir un script para verificar la salida de fdisk -l, ¿cómo puedo montar esta unidad en el momento del arranque solo si está presente? Sería útil tener una entrada fdisk para esta unidad, por lo que puedo escribir en mount /jgdatalugar de necesitar un nombre de dispositivo.

Jeremy
fuente

Respuestas:

73

Estás en el camino correcto. He encontrado una forma un poco más limpia y mejor.

La opción correcta para agregar fstabes nofail, sin embargo, debe venir después auto. Si lo cambia a noauto, nunca se montará durante el arranque. Si agrega nobootwaital gestor de arranque, podría perderse algo serio, como montar la partición antes de fsckterminar de verificarlo o no montar una partición que se utiliza en el proceso de arranque.

Después de realizar el cambio anterior, el sistema se iniciará normalmente (y aumentará el volumen) si el dispositivo está enchufado mientras el sistema está apagado. También se iniciará normalmente si el dispositivo no está presente en el momento del inicio.

El único inconveniente es que si conecta el dispositivo mientras el sistema se está ejecutando, dependiendo de la configuración (demasiadas variables para probar), es posible que el dispositivo no se monte de inmediato. Esto puede solucionarse con una simple mount -ao mount /specific_deviceo un reinicio.

Bryan Gonzalez
fuente
2
Cada ejemplo que puedo encontrar en línea muestra nofail antes de auto. ¿Hay alguna documentación para el pedido correcto?
Hackeron el
'man fstab' no proporciona la precisión de un pedido necesario (marcado en centos 7 y Ubuntu 14.04). Sin embargo, dice "nofail no informa errores para este dispositivo si no existe". Me pregunto si esto ayudará a no esperar el tiempo de espera en el arranque si no se puede acceder al volumen nfs.
tisc0
16

Tuve el mismo problema: hice un paso adicional

Si usa la nofailopción /etc/fstab, el sistema buscará su disco (y partición) en el momento del arranque. Si el dispositivo está enchufado, se montará el sistema de archivos. De lo contrario, el arranque continuará normalmente.

Ver wiki del arco: https://wiki.archlinux.org/index.php/Fstab

Ejemplo

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

Intenté arrancar el sistema con y sin el dispositivo enchufado, y funciona bien.

Lo que no he logrado es montar automáticamente cuando el disco está enchufado después del arranque (cuando no está enchufado en el arranque). Debo usar mount -acomo root para montar todo de nuevo.

usuario898384
fuente
13

¿La opción noauto permite que el proceso de arranque continúe?

no se monta automáticamente si está presente, pero se da a conocer si está presente, por lo que un montaje / jgdata simple funciona ... luego un montaje / jdata con secuencia de comandos no necesitaría una verificación de salida, solo detecte el error y continúe arrancando

editar: después de leer más, el bootwait es probablemente una opción más correcta para pasar ... (generalmente se usa para recursos compartidos de red que podrían no estar presentes hasta más adelante en el proceso de arranque, pero aún podría causar un bloqueo, idk)

y el script de montaje podría agregarse así: https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst

RobotHumanos
fuente
Gracias por la respuesta. Solo para aclarar, las opciones se deben agregar a la línea fstab, ¿correcto? (EDITAR: Nvm, busqué en Google. Parece que nobootwait es lo que necesito.)
Jeremy
1
He usado la opción nobootwait en fstab, funciona perfectamente, gracias.
Jeremy
5
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

trabajó para mi.

nofail ... No informe errores para este dispositivo si no existe.
x-systemd.device-timeout = 30 ... El arranque tardará 30 segundos más si el dispositivo no existe (el valor predeterminado es 90 segundos).

Fuente: https://wiki.archlinux.org/index.php/fstab#External_devices

usuario313829
fuente
Esta es la mejor y más simple respuesta. Tenga en cuenta que esta es la nueva sintaxis para las versiones más nuevas del sistema operativo que usan systemd, reemplazando la nobootwaitsintaxis anterior
cxrodgers
Esto funcionó para mí. Key estaba agregando el tiempo de espera del dispositivo; simplemente usando nofail, el arranque podría fallar debido al tiempo de espera de udev. (probablemente exclusivo de dispositivos USB)
BobHy
1

La forma recomendada de montar durante el arranque es instruir a su sistema a través del archivo fstab . Al mirar su Ask, pude ver que ya casi está allí, carece solo de las instrucciones que configuran el dispositivo para usar las opciones de montaje automático, lo que permite que su sistema monte el dispositivo cuando esté disponible.

Entonces, solo reescribe la línea en tu fstab para que sea la siguiente:

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

Después de cambiarlo y guardarlo, intente montarlo a mano:

$ sudo mount -a

Es importante tener en cuenta que:

  1. debe estar seguro sobre el UUID del dispositivo. Los UUID son generados por las utilidades del sistema de archivos make (mkfs. *) Cuando crea un sistema de archivos.
  2. Esos <options>deben escribirse siguiendo un formato muy específico, separados por comas pero sin espacios después de cada coma. Ten cuidado con esto ;-)
  3. No estoy seguro de si esto funcionará sin problemas porque está intentando montar automáticamente un sistema de archivos NTFS, que se puede manejar con las utilidades NTFS-3G . Si bien se supone que mis instrucciones funcionan correctamente, nunca antes intenté montar NTFS automáticamente. Por lo tanto, si falla, le recomiendo que mire este montaje de particiones de Windows para usos alternativos de NTFS.

¡Gracias!

crncosta
fuente
Creo que entiende la mayoría de lo que dijiste, pero se cuelga cuando no se detecta el disco. es por eso que sugerí una solución alternativa a la forma "adecuada"
RobotHumans
Gracias por la respuesta. Para su información, el sudo blkidcomando es una buena manera de averiguar UUID.
Jeremy
Acabo de probar esa línea exacta en fstab. Cuando el HDD está enchufado, el sistema arranca normalmente. Pero, durante el arranque, cuando el HDD externo no está enchufado, todavía me pide que espere / omita / recupere manualmente. Dado que este mensaje no expira, si no estoy en la terminal, la caja no se iniciará si el HDD externo no está enchufado.
Jeremy
Debe agregar la opción nofail.
kkron
0

Tengo el mismo problema. He estado editando fstab para comentar la entrada cuando sé que no voy a tener la unidad presente la próxima vez que arranque. Luego, cuando tengo la unidad presente, simplemente edito fstab para eliminar el comentario y emitir mount -a. Esta no es una solución perfecta. Sería genial si pudiera encontrar una manera de hacer que el sistema monte automáticamente el disco si está presente o saltearlo automáticamente si no está presente. El mismo problema ocurre si tiene recursos compartidos NFS montados automáticamente y el servidor no está presente.


fuente
1
Mira la respuesta que he aceptado, solo agrega nobootwait a las opciones de montaje en fstab.
Jeremy