So how’s doing with systemd? The anwser is good. everything (including KDE, kdm, slim with awesome) works just fine under systemd, with a little tweaking needed – at least on Gentoo.
What will break
systemd by default, only start device service (what udev do), journald (which is for logging), dbus (systemd depends on it) and getty (yes, we didn’t need inittab
anymore). All other service like vixie-cron
, syslog-ng
is disabled by default. We first probably want to start the service. So here I give the basic command and configurations.
# all service can be started with
$ systemctl start <service_name>[.service]
# to start on boot
$ systemctl enable <service_name>[.service]
# to stop
$ systemctl stop <service_name>[.service]
# to disable boot on start
$ systemctl disable <service_name>[.service]
If any service works just fine, I will not mention it any longer. I will try not be too detail about how to work with systemd. So you can consult systecmtl1
for more options for your own. :)
network
If you’re using DHCP for that, it just works fine with systemctl start dhcpcd
on Gentoo. Static address and device-specific configurations are more complicated you can reference to the section blow. :/
local.d
scripts under /etc/local.d/
like foo.start
will now be a service named gentoo-local-foo.service
in systemd.
samba
/etc/init.d/samba
does a lot of things for us, which can be summarized as starting smbd
and nmbd
. So we should start smbd.service
and nmbd.service
in systemd.
service cannot start by systemd (by default)
By now, any packages don’t have systemd support because they have no systemd unit
file within the package. (Though some others do have, like openvpn!). Copy a unit file and put it in /usr/lib/systemd/system/
is a good idea, and those files from archlinux is a good start. :)
Though I suggest to submit a new request on Gentoo Bugs. But what if the Gentoo devs don’t accept them or we just want to use them NOW ?
We’ve setup a overlay for this. You can find patched version of packages. :)
So far I’ve done with these packages.
app-admin/supervisor
: add systemd unit filenet-proxy/squid
: add systemd unit filenet-misc/dhcpcd
: add @ style support likedhcpcd@eth0.service
And one more thing. If you decide to write an unit file on your own. Here and here and many other unit file in packages will be a good start.
About network settings
More improvement ?
Yes, systemd just works. But We still need that things under traditional init system.
custome target (runlevels ?)
Because of systemd has no more concept like runlevel
in SysV, it use target
for that task. We could create custom target.
More tweaks can be found on archlinux systemd wiki page (oh year :/).
wireless
I haven’t use wireless network under systemd. I will try it recently and report back.
udev-rules
This is somehow related to dracut. The base
module in dract depends on udev-rules
, so udev will run before filesystem mounting. But there is a way to bypass.
Remember we have a local
customed module last time? We need to add a empty file named 80-net-name-slot.rules
and add a line to module-setup.sh
install() {
inst_hook pre-trigger 91 "$moddir/mount-local.sh"
inst_rules "$moddir/80-net-name-slot.rules"
}
Rebuild the initramfs and reboot. This rule will keep udev not touching the network device and follow the other rules on rootfs device.
For me, I have a 70-persistent-network.rules
which setting first NIC to lan
.
It just works :)
issues
kernel log on tty1
Still no luck, all kernel log continue to output to my tty1 :(