Since i'm on it to migrate my fifth machine from systemV to systemd (with an delay of over one week per machine) and i've searched now the third time a the solution for the following step, i want to provide my results here.
I am using the archlinux migration howto (german) and i always struggle with the part "add >>init=/bin/systemd<< to the kernel line of your boot loader".
The debian wiki provides a description for this task when you are using grub2.
# $EDITOR /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/lib/systemd/systemd" <--- Change this line
# update-grub
# or (for arch linux)
#grub-mkconfig -o /boot/grub/grub.cfg
So, you have migrated your arch linux to systemd and your beloved rc.local is not executed anymore? Time to jump into the systemd by writing your own unit. You have two options. One would be to write a unit that simple executes the rc.local. The second option would be to split up your rc.local into logical parts and write one unit per logical part (like "setup [w]lan, mount filesystems, start service xyz").
I want to provide you a way to implement the second solution. I can tell you, after you have written your first systemd unit, the concept of systemd won't be that big alien in you mind. I still have a tear drop in my eyes when i think back to my "only two files to configure my system"-systemV times, but thats nothing for this blog entry ;-).
So lets go and write a systemd unit to start up your wlan interface by using wpa_supplicant and dhcpd.
We have to split this task into two steps. First we create the systemd service which determines when and how our real script should be handled. The second step includes writing of the script that contains the "real work".
First step - writing the systemd service
vim lib/systemd/system/wlan_wpa_supplicant.service
[Unit]
Description="something usefull in here"
#the service file is a wrapper. the real action is done in the on the following line (should be set with +x)
ConditionPathExists=/my/path/to/the/execute/script
#two example targets below
Before=network.target
Wants=network.target
[Service]
#we only want to execute a script by the service - fire and forget - one shot only ;-)
Type=oneshot
RemainAfterExit=yes
KillMode=none
#the following two lines define what should happen when the service is started or stopped
ExecStart=/my/path/to/the/execute/script start
ExecStop=/my/path/to/the/execute/script stop
[Install]
WantedBy=multi-user.target
A teammate at work asked me the question "how do you monitor your smart values from each device" and i could not answer him, since i do not monitor any smart values.
A quick research and now i am able to present him a good answer on Monday - even with some time to evaluate it :-D.
Smartmontools is the tool you have to choose. On arch, it is done with pacman.
pacman -S smartmontools
A quick look on the official wiki and the arch wiki, i roughly created the following smartd.conf.
The file can be found at "/etc/smartd.conf". Do not forget to remove/comment out the first "DEVICESCAN". The file is well documented, so it is an easy one (hopefully ;-)).
All you have to do is to add the smartd to you autostart (e.g. rc.conf). If you are using systemd, the following line is doing the job.