Я использую Archlinux и начал пробовать systemd в эти дни.
Однако я обнаружил, что systemd не загружает мой скрипт /etc/rc.local.
Как уже упоминалось на вики-странице, я уже бегал systemctl enable rc-local.service
, но это не помогло.
Содержимое моего файла /etc/rc.local:
echo -n 120 > /sys/devices/platform/i8042/serio1/speed
echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity
iptables --table nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
Какие-либо предложения?
arch-linux
Феликс Ян
источник
источник
/etc/systemd/system/multi-user.target.wants/rc-local.service
и/lib/systemd/system/rc-local.service
systemctl enable rc-local.service
. Если проблема не устранена, опубликуйте, пожалуйста, выводsystemctl status rc-local.service
.multi-user.target.wants
является именно тем, что позволяет ему.При использовании systemd 188-2 systemd жалуется на отсутствие
[Install]
раздела и, следовательно, невозможность включить службу rc.local. Возможно, так было и с более ранними версиями, но так как разработчики Arch только недавно объявили, systemd станет по умолчанию, я исправляю свою систему.Чтобы это исправить, просто добавьте раздел для многопользовательской цели в
/etc/systemd/system/rc-local.service
:Создайте
/etc/rc.local
скрипт и сделайте его исполняемым сchmod +x /etc/rc.local
источник
rc-local.service
никогда не был сервис, который был включен через,systemctl enable
но с 2011 года сервис автоматически активируется генератором . Однако Arch Linux, как объяснено на unix.stackexchange.com/a/471871/5132 , не включает опции обратной совместимости в systemd, которые обеспечивают генератор в первую очередь.Pkgfile (в моей системе) говорит:
Этот пакет устанавливает другие вещи, которые вы, возможно, не хотите, но вы можете отключить его. Смотрите также: https://wiki.archlinux.org/index.php/Systemd#The_initscripts-systemd_package
источник
Не забудьте сделать rc.local исполняемым - иначе уровень совместимости не запустится! В приведенных выше примерах - вы должны запустить chmod a + x, чтобы сделать исполняемый файл rc.local. Следующее:
Я думаю, что еще одна возможная проблема - это местоположение вашего скрипта rc.local! Если вы еще не добавили совместимость с systemd (который должен быть встроен - и, кажется, из-за прежнего упоминания о том, что он уже существует), вам может потребоваться перепроверить местоположение ваших файлов ... В моей ОС у меня есть rc-local в /etc/rc.d/rc.local, поэтому я запустил следующее:
источник
systemd
сервисный файл бессмысленным , как показано в вашем первом фрагменте кода. Кроме того, в Arch Linux путь к файлу/etc/rc.local
- возможно, содержимоеsystemd
служебного файла неверно.Две распространенные ошибки:
Не забудьте сделать
/etc/rc.d/rc.local
исполняемый файл. Ты можешь использоватьсделать его исполняемым.
Не забудьте поставить
#!/bin/sh
строку в первой строке/etc/rc.d/rc.local
. Вот как все должно выглядеть:Если вы не получили похожий вывод, отредактируйте,
/etc/rc.d/rc.local
чтобы добавить строку в самом верху, содержащую только что#!/bin/sh
.источник
Если у вас есть
/etc/rc.local
исполняемый файл, он будет загружен в процесс загрузки с помощьюsystemd-rc-local-generator
/rc-local.service
.По крайней мере
/etc/rc.local
это путь по умолчанию, который он использует, но это устанавливается дистрибутивом. Потому что это в основном для обратной совместимости, и разные дистрибутивы использовали разные пути. Например на Fedora, путь есть/etc/rc.d/rc.local
. Вы можете проверить путь следующим образом:Кажется, это не очень хорошо известно. Есть несколько постов, которые показывают предыдущую версию файла, в которой нет такого комментария.
источник