J'utilise Archlinux et j'ai commencé à essayer Système ces jours-ci.
Cependant, j'ai trouvé que SystemD ne charge pas mon /etc/rc.local script.
Comme mentionné dans la page Wiki, j'ai eu la course systemctl enable rc-local.service
, mais cela n'a pas aidé.
Le contenu de mon fichier /etc/rc.local est:
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
Aucune suggestion?
Pkgfile (sur mon système) dit:
$ pkgfile --search rc-local.service
community/initscripts-systemd
Cet emballage installe d'autres choses que vous ne pouvez peut-être pas, mais vous pouvez le désactiver. Voir aussi: https://wiki.archlinux.org/index.php/systemd#the_initscripts-systemd_package
N'oubliez pas de faire de l'exécutable RC.Local - ou la couche de compatibilité ne fonctionnera pas! Dans les exemples ci-dessus qui sont répertoriés - vous exécuteriez CHMOD A + X afin de rendre le fichier RC.Local exécutable. Comme suit:
$ chmod a+X /etc/systemd/system/rc-local.service
Je penserais qu'un autre problème possible est l'emplacement de votre script RC.Local! Si vous n'avez pas déjà ajouté la compatibilité à SystemD (qui devrait être construite - et semble être la première mention de celui-ci existant déjà), vous devrez peut-être vérifier votre lieu de contrôle de vos fichiers ... sur mon système d'exploitation que j'ai rc-local à /etc/rc.d/rc.local, donc j'ai couru ce qui suit:
$ Sudo chmod a+x /etc/rc.d/rc.local
$ Sudo systemctl restart rc-local.service
$ Sudo systemctl status rc-local.service
rc-local.service - /etc/rc.d/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static)
Active: active (exited) since Fri, 13 Apr 2012 14:42:39 -0600; 3s ago
Process: 2285 ExecStart=/etc/rc.d/rc.local start (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/rc-local.service
Deux gothas communs:
N'oubliez pas de faire /etc/rc.d/rc.local
exécutable. Vous pouvez utiliser
# chmod a+rx /etc/rc.d/rc.local
pour le rendre exécutable.
N'oubliez pas de mettre un #!/bin/sh
ligne dans la première ligne de /etc/rc.d/rc.local
. Voici comment les choses devraient regarder:
# head -1 /etc/rc.d/rc.local
#!/bin/sh
# file /etc/rc.d/rc.local
/etc/rc.d/rc.local: POSIX Shell script, ASCII text executable
Si vous ne recevez pas une sortie similaire, modifiez /etc/rc.d/rc.local
Pour ajouter une ligne au même sommet contenant juste #!/bin/sh
.
Si tu as /etc/rc.local
En tant que fichier exécutable, il sera tiré dans le processus de démarrage par systemd-rc-local-generator
/rc-local.service
.
Au moins /etc/rc.local
est le chemin d'accès par défaut utilisé, mais cela est défini par la distribution. Parce que c'est principalement pour la compatibilité en arrière et que différentes distributions utilisaient des chemins différents. Par exemple. Sur Fedora, le chemin est /etc/rc.d/rc.local
. Vous pouvez vérifier le chemin comme suit:
$ systemctl cat rc-local.service
# /usr/lib/systemd/system/rc-local.service
# ...
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
Il semble que cela ne soit pas très bien connu. Plusieurs messages montrent une version précédente du fichier, qui n'a pas de tel commentaire.