it-swarm.dev

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

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 un mensaje para "Continuar esperando, presione S o M", pero ninguna pulsación de tecla tiene ningún efecto en esta etapa (incluido Ctrl-Alt-Delete, ni siquiera 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 mount /jgdata en lugar de necesitar un nombre de dispositivo.

68
Jeremy

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

La opción correcta para agregar fstab es nofail, sin embargo, debe venir después de auto. Si lo cambia a noauto, nunca se montará durante el arranque. Si agrega nobootwait al gestor de arranque, podría perderse algo serio, como montar la partición antes de que fsck termine de verificarla 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 remediarse con un simple mount -a o mount /specific_device o un reinicio.

63
Bryan Gonzalez

Tuve el mismo problema: hice un paso adicional

Si utiliza la opción nofail en /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 Arch wiki: 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 se conecta después del inicio (cuando no se conecta al inicio). Debo usar mount -a como root para montar todo de nuevo.

16
user898384

¿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 siga arrancando

editar: luego de leer un poco 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

13
RobotHumans
/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

5
user313829

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á tratando de montar automáticamente un sistema de archivos NTFS, que se puede manejar usando NTFS-3G utilidades. Si bien se supone que mis instrucciones funcionan correctamente, nunca antes intenté montar NTFS automáticamente. Entonces, si falla, le recomiendo que mire esto Montaje de particiones de Windows para usos alternativos de NTFS.

¡Gracias!

1
crncosta

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.

0
Detonate