Migrate to systemd, afterwards

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.

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 file

net-proxy/squid: add systemd unit file

net-misc/dhcpcd: add @ style support like dhcpcd@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.

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.