Wie mache ich „modprobe fuse“ und „modprobe loop“ dauerhaft?

Wie mache ich „modprobe fuse“ und „modprobe loop“ dauerhaft?

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 loopbehebt es, bis zum nächsten Neustart.

Sollten diese Module nicht automatisch beim Booten geladen werden? Warum nicht? Wie erstelle ich sie?

Antwort1

fuseund loopkö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, fuseund loopbeim Booten zu laden. Es würde keinen Konflikt mit dem automatischen Lademechanismus verursachen. Alle Moduloptionen sollten gemäß den optionsZeilen in eingestellt werden /etc/modprobe.d/, unabhängig davon, wer aufruft modprobe.

Um sicherzugehen, dass loopgeladen wird

echo 'loop' | sudo tee -a /etc/modules-load.d/modules.conf

Wie funktioniert das automatische Laden? Zunächst wird der Userspace /dev/fusestatisch 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 dZeilen 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.servicemit 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.

verwandte Informationen