
這曾經不是問題,但現在卻成了問題。我沒有改變任何重要的東西,所以可能是更新破壞了它。
當我運行 VeraCrypt 時,它抱怨無法設置循環設備並建議運行modprobe fuse
.運行它不起作用。然而,運行modprobe fuse
和 modprobe loop
修復它,直到下次重新啟動。
這些模組不應該在啟動時自動加載嗎?為什麼不?我該如何製作它們?
答案1
fuse
並且loop
可以根據需要自動加載。
搜尋顯示grsecurity 核心可能會阻止此操作。因此,對於這個想法有多好存在一些分歧:-),但我相信大多數發行版都使用它。
如果自動載入有臨時錯誤,fuse
則loop
在啟動時載入仍然可以。它不會與自動載入機制產生衝突。無論誰調用,任何模組選項都應根據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
並重新啟動。