
Isso costumava não ser um problema, mas agora é. Não mudei nada significativo, então provavelmente uma atualização quebrou.
Quando executo o VeraCrypt, ele reclama que não foi possível configurar o dispositivo de loop e sugere a execução do arquivo modprobe fuse
. Executá-lo não funciona. No entanto, corrermodprobe fuse
e modprobe loop
corrige isso, até a próxima reinicialização.
Esses módulos não deveriam ser carregados automaticamente na inicialização? Por que não? Como faço para fazê-los?
Responder1
fuse
e loop
pode ser carregado automaticamente sob demanda.
A pesquisa mostra queKernels grsecurity podem bloquear isso. Portanto, há alguma discordância sobre o quão boa é essa ideia :-), mas acredito que ela seja usada na maioria das distribuições.
Se houver um bug temporário com o carregamento automático, ainda é possível carregar fuse
e loop
durante a inicialização. Isso não criaria um conflito com o mecanismo de carregamento automático. Quaisquer opções de módulo devem ser definidas de acordo com as options
linhas do /etc/modprobe.d/
, não importa quem ligue modprobe
.
Por exemplo, para garantir que loop
seja carregado
echo 'loop' | sudo tee -a /etc/modules-load.d/modules.conf
Como funciona o carregamento automático? Para começar, o espaço do usuário é criado /dev/fuse
estaticamente na inicialização, independentemente de o módulo estar carregado. O mecanismo do meu sistema atual é um pouco barroco – veja /lib/systemd/system/kmod-static-nodes.service
. Então, você tem um nó de dispositivo que pode tentar abrir. Ao fazer isso, o kernel pede para carregar o módulo primeiro.
No meu sistema, a lista de nós de dispositivos criados estaticamente para que você possa acionar o carregamento do módulo do kernel apropriado é
$ 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
(As d
linhas são diretórios).
Responder2
Você pode executar comandos na inicialização com um script systemd. Crie um arquivo com o conteúdo
modprobe fuse
modprobe loop
em ~/Documents/modprobe_startup.sh
(ou onde você deseja armazená-lo). Não se esqueça de torná-lo executável com
chmod +x ~/Documents/modprobe_startup.sh
Agora criamos um arquivo de serviço systemd simples /lib/systemd/system/modprobe_startup.service
com o conteúdo
[Unit]
Description=runs ~/Documents/modprobe_startup.sh
[Service]
Type=simple
ExecStart=/bin/bash /home/USERNAME/Documents/modprobe_startup.sh
[Install]
WantedBy=multi-user.target
Não se esqueça de substituir USERNAME pelo nome de usuário do seu sistema.
Agora 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
e reinicie.