Как сделать `modprobe fuse` и` modprobe loop` постоянными?

#!/bin/bash
NOW=$(date +"%s")
SOON=$(date +"%s" -d "3:00 PM Sun")
INTERVAL=$(($SOON-$NOW))
sleep $INTERVAL

GNU date позволяет указать формат вывода, а также дату для отображения. Поэтому я использую строку формата "% s", чтобы получить время в секундах с начала эпохи, и то же самое для произвольного времени с помощью параметра -d . Почувствуйте разницу, и у вас есть интервал для сна.

Проверка даты в прошлом оставлена ​​в качестве упражнения для читателя.

1
07.02.2019, 13:40
2 ответа

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— это каталоги ).

0
28.01.2020, 00:19

Вы можете запускать команды при запуске с помощью скрипта 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

и перезагрузите компьютер.

0
16.12.2020, 05:29

Теги

Похожие вопросы