I am using Archlinux and began trying systemd these days.

However, I found that systemd doesn't load my /etc/rc.local script.

As mentioned in the Wiki page, I did have run systemctl enable rc-local.service, but this didn't help.

The content of my /etc/rc.local file is:

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

Any suggestions?

link|improve this question
feedback

3 Answers

up vote 2 down vote accepted

Arch might not have included the service unit file necessary to run rc.local.

Just create a file /etc/systemd/system/rc-local.service with the following contents (copied verbatim from my Fedora systemd system):

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

Then, just run systemctl enable rc-local.service as root to enable it. You can also test it/run it now by running systemctl start rc-local.service.

link|improve this answer
These two files already exists: /etc/systemd/system/multi-user.target.wants/rc-local.service and /lib/systemd/system/rc-local.service – Felix Yan Jun 21 '11 at 4:09
It's probably disabled then. Try running systemctl enable rc-local.service. If you continue to have trouble, please post the output of systemctl status rc-local.service. – Patches Jun 21 '11 at 4:31
feedback

Pkgfile (on my system) says:

$ pkgfile --search rc-local.service
community/initscripts-systemd

That package installs other stuff you may not want, but you can disable it. See also: https://wiki.archlinux.org/index.php/Systemd#The_initscripts-systemd_package

link|improve this answer
feedback

Don't forget to make rc.local executable - or the compatibility layer will not run it! In the above examples which are listed - you would run chmod a+x in order to make the rc.local file executable. As follows:

$ chmod a+X /etc/systemd/system/rc-local.service 

I would think another possible problem is the location of your rc.local script! If you haven't already added the compatibility to systemd (which should be built in - and seems to be by former mention of it already existing) you may need to double check your files location... On my OS I have rc-local at /etc/rc.d/rc.local so I ran the following:

$ 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
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.