Как insmod может выйти из строя, если модуль ядра уже загружен, даже если lsmod делает не содержат этот модуль?

Используйте сервисный модуль вместо монтируемого.

Простой сервисный модуль с одним выстрелом с командой mount работал для моего варианта использования перемонтирования (и я предполагаю, что он сработает для вашего).

Учитывая, что средства монтирования часто уже определены в / etc / fstab , а systemd автоматически сгенерировал .mount для записей fstab, есть два подхода:

  1. Просто вернитесь к стандартному сервисному модулю вместо модуля монтирования и напрямую управляйте командой монтирования.
  2. Попытаться использовать переопределение systemd? (Не тестировалось, не думаю, что это жизнеспособно)
    • У монтируемых модулей есть строгое требование, чтобы юниты назывались в соответствии с точкой монтирования, поэтому, вероятно, невозможно запустить два отдельных монтирования юниты для той же точки монтирования (уже отмечалось в вопросе).
    • Следовательно, это, вероятно, не сработает для повторного монтирования, если предположить, что это только переопределяет исходное определение модуля монтирования, сгенерированное из fstab, и не будет выполняться дважды.
    • Если попытаться сделать это, более вероятно, что исходное монтирование не удастся, учитывая, что параметр повторного монтирования применен к чему-то еще не смонтированному.

Пример

Мне нужно было что-то подобное, и я столкнулся со следующей проблемой при попытке использовать тип модуля монтирования systemd (потому что я не определил имя файла модуля в соответствии с точкой монтирования):

Where= setting doesn't match unit name. Refusing.

Учитывая привязку монтирования к каталог данных с большим пространством, но с родительской точкой монтирования, имеющей nosuid и nodev, мне нужно было добавить привилегии suid и dev для lxc в / var / lib / lxc.

Файл служебного модуля / etc / systemd / system / lxc-remount.service :

[Unit]
Description=Remount the /var/lib/lxc folder with suid and dev privileges
Requires=var-lib-lxc.mount
After=var-lib-lxc.mount
Before=lxc.service

[Service]
Type=oneshot
ExecStart=/bin/mount -o remount,rw,suid,dev,relatime,discard,data=ordered /var/lib/lxc

[Install]
WantedBy=lxc.service

Команды для его выполнения:

$ sudo systemctl daemon-reload
$ sudo systemctl enable lxc-remount.service
Created symlink from /etc/systemd/system/lxc.service.wants/lxc-remount.service to /etc/systemd/system/lxc-remount.service.
$ sudo systemctl start lxc-remount.service
2
14.05.2017, 17:03
1 ответ
$ uname -a
Linux alan-laptop 4.10.14-200.fc25.x86_64 #1 SMP Wed May 3 22:52:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ ls /sys/module/workqueue/
parameters  uevent
$ ls /sys/module/workqueue/parameters/
debug_force_rr_cpu  disable_numa  power_efficient

Это уже встроенная функция. Возможно, чтобы предоставить пространство имен для параметров, влияющих на поведение рабочей очереди ядра.

2
27.01.2020, 22:10

Теги

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