Назад | Перейти на главную страницу

Генератор SystemD SysV и крепления

Так systemd-sysv-generator конвертирует файлы init.d старого стиля в служебные файлы systemd. Но он может сделать это до того, как будут установлены все крепления.

У меня есть устаревшее коммерческое программное обеспечение, которое находится в / opt, который является отдельной точкой монтирования. Создает символическую ссылку из /etc/init.d/their_service на файл в / opt

Итак, когда сервер загружается, systemd-sysv-generator еще не может прочитать связанный файл и не может создать службу и, следовательно, не может запустить службу.

Поскольку устаревшее программное обеспечение управляется другой командой, и у них есть возможность обновить его самостоятельно, я не хочу начинать копирование файла из / opt и замену символической ссылки. Или, что еще хуже, попробуйте переписать это в службу systemd.

Есть ли способ получить systemd-sysv-generator огонь после opt.mount?

Один из вариантов может заключаться в создании доступа к их сервису, в котором указываются зависимости / порядок.

Например:

$ sudo mkdir /etc/systemd/system/their_service.service.d
$ sudo vi /etc/systemd/system/their_service.service.d/50-require_mounts.conf
[Unit]
Wants=network.target remote-fs.target
After=network.target remote-fs.target

Однако сценарий SysV может быть адаптирован для решения этой проблемы (https://www.freedesktop.org/software/systemd/man/systemd.special.html):

remote-fs.target Аналогично local-fs.target, но для удаленных точек монтирования.

systemd автоматически добавляет зависимости типа After = для этого целевого модуля ко всем служебным модулям сценария инициализации SysV с заголовком LSB, относящимся к функции «$ remote_fs».

Благодаря подсказке от Iwaseatenbyagrue читать https://www.freedesktop.org/software/systemd/man/systemd.special.html Я нашел этот раздел

initrd-fs.target

systemd-fstab-generator (3) автоматически добавляет зависимости типа Before = к sysroot-usr.mount и ко всем точкам монтирования, найденным в / etc / fstab, которые имеют x-initrd.mount и не имеют установленных параметров монтирования noauto.

Итак, я решил сделать следующее

  1. редактировать /etc/fstab иметь параметр x-initrd.mount для моей точки монтирования / opt

/ dev / mapper / rootvg-opt / opt ext4 nodev,x-initrd.mount 0 0

  1. редактировать /etc/default/grub чтобы указать дополнительную точку монтирования в GRUB_CMDLINE_LINUX

GRUB_CMDLINE_LINUX = "rd.lvm.lv = rootvg / root rd.lvm.lv = rootvg / swap rd.lvm.lv = rootvg / usr rd.lvm.lv = rootvg / opt ipv6.disable = 1 rhgb quiet "

  1. Восстановить багажник

grub2-mkconfig -o /boot/grub2/grub.conf

dracut -f

Сочетание этих шагов приводит к тому, что SystemD правильно монтирует / выбирает в начале загрузки и преуспевает с systemd-sysv-generator