
Früher war das kein Problem, jetzt aber schon. Ich habe nichts Wesentliches geändert, also ist es wahrscheinlich durch ein Update kaputtgegangen.
Wenn ich VeraCrypt ausführe, beschwert es sich, dass es das Loop-Gerät nicht einrichten konnte und schlägt vor, es auszuführen modprobe fuse
. Das Ausführen funktioniert nicht. Das Ausführen vonmodprobe fuse
Und modprobe loop
behebt es, bis zum nächsten Neustart.
Sollten diese Module nicht automatisch beim Booten geladen werden? Warum nicht? Wie erstelle ich sie?
Antwort1
fuse
und loop
können bei Bedarf automatisch geladen werden.
Die Suche zeigt, dassgrsecurity-Kernel können dies blockieren. Es gibt also einige unterschiedliche Meinungen darüber, wie gut diese Idee ist :-), aber ich glaube, dass sie bei den meisten Distributionen verwendet wird.
Wenn beim automatischen Laden ein vorübergehender Fehler auftritt, ist es trotzdem in Ordnung, fuse
und loop
beim Booten zu laden. Es würde keinen Konflikt mit dem automatischen Lademechanismus verursachen. Alle Moduloptionen sollten gemäß den options
Zeilen in eingestellt werden /etc/modprobe.d/
, unabhängig davon, wer aufruft modprobe
.
Um sicherzugehen, dass loop
geladen wird
echo 'loop' | sudo tee -a /etc/modules-load.d/modules.conf
Wie funktioniert das automatische Laden? Zunächst wird der Userspace /dev/fuse
statisch beim Booten erstellt, unabhängig davon, ob das Modul geladen ist. Der Mechanismus auf meinem aktuellen System ist ein wenig barock – siehe /lib/systemd/system/kmod-static-nodes.service
. Sie haben also einen Geräteknoten, den Sie versuchen können zu öffnen. Wenn Sie das tun, fordert der Kernel Sie auf, zuerst das Modul zu laden.
Auf meinem System lautet die Liste der Geräteknoten, die statisch erstellt werden, damit Sie das Laden des entsprechenden Kernelmoduls auslösen können,
$ 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
(Die d
Zeilen sind Verzeichnisse).
Antwort2
Sie können Befehle beim Start mit einem systemd-Skript ausführen. Erstellen Sie eine Datei mit dem Inhalt
modprobe fuse
modprobe loop
in ~/Documents/modprobe_startup.sh
(oder wo auch immer Sie es speichern möchten). Vergessen Sie nicht, es ausführbar zu machen mit
chmod +x ~/Documents/modprobe_startup.sh
Nun erstellen wir eine einfache systemd Servicedatei /lib/systemd/system/modprobe_startup.service
mit dem Inhalt
[Unit]
Description=runs ~/Documents/modprobe_startup.sh
[Service]
Type=simple
ExecStart=/bin/bash /home/USERNAME/Documents/modprobe_startup.sh
[Install]
WantedBy=multi-user.target
Vergessen Sie nicht, USERNAME durch den Benutzernamen Ihres Systems zu ersetzen.
Nun zur Installation,
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
und starten Sie neu.