
Esto antes no era un problema, pero ahora lo es. No he cambiado nada significativo, por lo que probablemente una actualización lo rompió.
Cuando ejecuto VeraCrypt, se queja de que no pudo configurar el dispositivo de bucle y sugiere ejecutar modprobe fuse
. Ejecutarlo no funciona. Sin embargo, corriendomodprobe fuse
y modprobe loop
lo soluciona, hasta el próximo reinicio.
¿No deberían cargarse estos módulos automáticamente al arrancar? ¿Por qué no? ¿Cómo los hago?
Respuesta1
fuse
y loop
se puede cargar automáticamente según demanda.
La búsqueda muestra queLos kernels de grsecurity pueden bloquear esto.. Así que hay cierto desacuerdo sobre qué tan buena idea es esta :-), pero creo que se usa en la mayoría de las distribuciones.
Si hay un error temporal con la carga automática, aún está bien cargarlo fuse
en loop
el momento del arranque. No crearía un conflicto con el mecanismo de carga automática. Cualquier opción del módulo debe configurarse de acuerdo con las options
líneas en /etc/modprobe.d/
, sin importar quién llame modprobe
.
Por ejemplo, para asegurarse de que loop
se cargue.
echo 'loop' | sudo tee -a /etc/modules-load.d/modules.conf
¿Cómo funciona la carga automática? Para empezar, el espacio de usuario se crea /dev/fuse
estáticamente en el arranque, independientemente de si el módulo está cargado. El mecanismo de mi sistema actual es un poco barroco (ver) /lib/systemd/system/kmod-static-nodes.service
. Entonces, tienes un nodo de dispositivo que puedes intentar abrir. Cuando lo hace, el kernel solicita cargar el módulo primero.
En mi sistema, la lista de nodos de dispositivos que se crean estáticamente para que pueda activar la carga del módulo del kernel apropiado es
$ cat /run/tmpfiles.d/kmod.conf
c! /dev/fuse 0600 - - - 10:229
c! /dev/btrfs-control 0600 - - - 10:234
c! /dev/loop-control 0600 - - - 10:237
d /dev/net 0755 - - -
c! /dev/net/tun 0600 - - - 10:200
c! /dev/ppp 0600 - - - 108:0
c! /dev/uinput 0600 - - - 10:223
c! /dev/uhid 0600 - - - 10:239
d /dev/vfio 0755 - - -
c! /dev/vfio/vfio 0600 - - - 10:196
c! /dev/vhci 0600 - - - 10:137
c! /dev/vhost-net 0600 - - - 10:238
c! /dev/vhost-vsock 0600 - - - 10:241
d /dev/snd 0755 - - -
c! /dev/snd/timer 0600 - - - 116:33
d /dev/snd 0755 - - -
c! /dev/snd/seq 0600 - - - 116:1
c! /dev/cuse 0600 - - - 10:203
(Las d
líneas son directorios).
Respuesta2
Puede ejecutar comandos al inicio con un script systemd. Crea un archivo con el contenido.
modprobe fuse
modprobe loop
en ~/Documents/modprobe_startup.sh
(o donde quieras guardarlo). No olvides hacerlo ejecutable con
chmod +x ~/Documents/modprobe_startup.sh
Ahora creamos un archivo de servicio systemd simple /lib/systemd/system/modprobe_startup.service
con el contenido
[Unit]
Description=runs ~/Documents/modprobe_startup.sh
[Service]
Type=simple
ExecStart=/bin/bash /home/USERNAME/Documents/modprobe_startup.sh
[Install]
WantedBy=multi-user.target
No olvide reemplazar USERNAME con el nombre de usuario de su sistema.
Ahora para instalar,
sudo cp /lib/systemd/system/modprobe_startup.service /etc/systemd/system/modprobe_startup.service
sudo chmod 644 /etc/systemd/system/modprobe_startup.service
systemctl enable modprobe_startup.service
y reiniciar.