如何使「modprobe熔斷」和「modprobe循環」持久存在?

如何使「modprobe熔斷」和「modprobe循環」持久存在?

這曾經不是問題,但現在卻成了問題。我沒有改變任何重要的東西,所以可能是更新破壞了它。

當我運行 VeraCrypt 時,它抱怨無法設置循環設備並建議運行modprobe fuse.運行它不起作用。然而,運行modprobe fuse modprobe loop修復它,直到下次重新啟動。

這些模組不應該在啟動時自動加載嗎?為什麼不?我該如何製作它們?

答案1

fuse並且loop可以根據需要自動加載。

搜尋顯示grsecurity 核心可能會阻止此操作。因此,對於這個想法有多好存在一些分歧:-),但我相信大多數發行版都使用它。

如果自動載入有臨時錯誤,fuseloop在啟動時載入仍然可以。它不會與自動載入機制產生衝突。無論誰調用,任何模組選項都應根據options中的行進行設定。/etc/modprobe.d/modprobe

例如,確保loop已加載

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

自動加載是如何運作的?首先,使用者空間/dev/fuse在啟動時靜態創建,無論模組是否載入。我目前系統上的機制有點巴洛克風格——請參閱/lib/systemd/system/kmod-static-nodes.service。因此,您有一個可以嘗試開啟的設備節點。當您這樣做時,內核首先調用載入模組。

在我的系統上,靜態建立的裝置節點清單是,以便您可以觸發載入適當的核心模組

$ 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

(這些d行是目錄)。

答案2

您可以使用 systemd 腳本在啟動時執行命令。建立一個包含內容的文件

modprobe fuse
modprobe loop

~/Documents/modprobe_startup.sh(或任何你想儲存它的地方)。不要忘記使其可執行

chmod +x ~/Documents/modprobe_startup.sh

現在我們建立一個簡單的 systemd 服務文件,其中/lib/systemd/system/modprobe_startup.service包含以下內容

[Unit]
Description=runs ~/Documents/modprobe_startup.sh

[Service]
Type=simple
ExecStart=/bin/bash /home/USERNAME/Documents/modprobe_startup.sh

[Install]
WantedBy=multi-user.target

不要忘記將 USERNAME 替換為您系統的使用者名稱。

現在要安裝,

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

並重新啟動。

相關內容