===============
= ptrcnull.me =
===============

OpenRC: Start services after login prompt

I'm using Alpine Linux as my main OS on desktop. As I don't use any display manager/greeter such as LightDM's, I noticed that it takes quite a bit of time to actually get the login prompt. After a while of searching through logs, I realized that some services - primarily chronyd - wait a few seconds for e.g. getting a response from NTP server and don't exit the start function immediately after starting the process. I tried googling for a solution and found this Unix StackExchange answer, yet it didn't solve my problem.

But, after reading Alpine User Handbook's page on OpenRC, I got the idea that it could be solved with a bit of tinkering with custom runlevels.

So, the final solution was:

$ doas mkdir /etc/runlevels/async
$ doas rc-update add -s default async
$ doas rc-update del chronyd
$ doas rc-update add chronyd async

Add this line to /etc/inittab:

::once:/sbin/openrc async

After rebooting, services from default runlevel will still block agetty from running (after all, it has the wait label in inittab), but services from async will start separately.