Так 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.
Итак, я решил сделать следующее
/etc/fstab
иметь параметр x-initrd.mount для моей точки монтирования / opt/ dev / mapper / rootvg-opt / opt ext4 nodev,x-initrd.mount 0 0
/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 "
grub2-mkconfig -o /boot/grub2/grub.conf
dracut -f
Сочетание этих шагов приводит к тому, что SystemD правильно монтирует / выбирает в начале загрузки и преуспевает с systemd-sysv-generator