¿Cómo desmontar automáticamente el dispositivo de bucle cifrado al apagar?

1

Estoy usando las pruebas de Debian, y tengo un archivo, es un contenedor LUKS con sistema de archivos ext4. Mi sistema lo monta con cada arranque. Tuve que usar los tres archivos siguientes para hacerlo:

/ etc / crypttab

sda2_crypt UUID = 727fa348-8804-4773-ae3d-f3e176d12dac none luks
crypt_dropbox / media / Server / Dropbox / luks_dropbox sda2_crypt luks, keyscript = / lib / cryptsetup / scripts / decrypt_derived, noauto

/ etc / fstab

# dropbox
UUID = 0d959e74-ec19-43bf-b779-60134c676aef / media / Dropbox ext4 valores predeterminados, noauto, usuario, nofail, noatime, commit = 20 0 2

/etc/rc.local

cryptdisks_start crypt_dropbox
mount / media / Dropbox

El contenedor no se puede abrir y montar automáticamente al arrancar mediante /etc/crypttab+ /etc/fstabporque el volumen de Dropbox está en una partición y debe abrirse antes de montar la partición. Entonces, por eso hay noautoadentro /etc/crypttab. El sistema de archivos dentro de ese contenedor tampoco se puede montar a través de mount -a(al menos en el arranque) porque todavía no hay un dispositivo. nofailExiste la opción de suprimir el error "sin dispositivo". Y se completa la primera fase. La segunda fase es cuando finaliza el arranque, por eso utilicé el /etc/rc.localarchivo. La primera línea se abre sin contraseña (debido a la configuración en / etc / crypttab) el volumen de Dropbox, la segunda lo monta a través de / etc / fstab. Y eso funciona.

El error ocurre mientras el sistema intenta desmontar la partición donde está el volumen de Dropbox. No sé exactamente por qué, pero podría ser porque el sistema de archivos del volumen de Dropbox está montado, o tal vez el contenedor está abierto, o incluso porque el dispositivo loop0 todavía está activo. Para cerrar completamente el volumen de Dropbox, tengo que usar los siguientes comandos:

umount / media / Dropbox
cryptdisks_stop crypt_dropbox
losetup -d / dev / loop0

¿Hay alguna manera de hacerlo solo cuando el sistema se cae pero antes de desmontar cualquier otra partición? ¿Hay algún archivo donde pueda insertar estos comandos, similar a /etc/rc.local?

Mikhail Morfikov
fuente

Respuestas:

2

Los detalles dependerán exactamente de qué distribución está ejecutando y cómo está configurada, pero pintando con un pincel muy amplio, cuando un sistema Linux se cae, ingresa el nivel de ejecución 0 (apagado) o 6 (reinicio).

Al cambiar los niveles de ejecución, el proceso init ejecutará los scripts "kill" y "start" para el nivel de ejecución ingresado .

Puede agregar dichos scripts para ejecutar comandos arbitrarios al ingresar un nivel de ejecución determinado. Por ejemplo, para agregar un script en Debian que se ejecute mientras el sistema se prepara para reiniciar, cree un script de shell /etc/init.d/my-reboot-prepare-scriptcon los comandos que desee (consulte los otros scripts en ese directorio para obtener detalles sobre cómo hacerlo) y luego agregue un enlace simbólico a ella desde /etc/rc6.d/K00my-reboot-prepare-script. El Kprincipio hará que se llame al script para "detener" el proceso en cuestión, con el parámetro stop.

un CVn
fuente