I just did a
pacman -Syu a few hours ago. However when I rebooted, I got greeted by this:
:: running early hook [udev]
Starting udevd version 257.8-2-artix
:: running hook [udev]
:: Triggering uevents...
:: running hook [keymap]
:: Loading keymap...done.
:: running hook [consolefont]
:: Loading console font...done.
:: performing fsck on 'LABEL=Sys'
Sys: clean, 482615/3290176 files, 5645009/13223936 blocks
:: mounting 'LABEL=Sys' on real root
:: running cleanup hook [udev]
dinit: boot: could not find service description.
All services have stopped with no shutdown issued; boot failure?
Choose: (r)eboot, r(e)covery, re(s)tart boot sequence, (p)ower off?
I already tried chrooting from live iso and doing the usal in this case:
pacman -S base base-devel dinit elogind-dinit linux-lts linux-firmwareIt did not help, not in the least. I have no idea how to fix this.
FWIW - switch inits and see if it works.
Have you checked /etc/dinit.d &/or /etc/dinit.d/boot.d to see if anything is missing, specifically the boot service file?
I'm also using dinit, and although I haven't had any problems with the latest updates, I have had a few problems recently, pretty much all of which were service files being moved or changed etc.
If the boot file is missing, recreate (in a recovery shell) and then try rebooting.
In recovery shell, try dinitcheck. It should tell if something is missing.
Note to self: one of these days I should add dinitcheck to a pacman hook after a dinit-related update.
Ha, superb and I'm almost embarrassed that I didn't think of that. 😅👍. Also the hook is a great idea and I have just implemented it on both my dinit machines. So thank you. 🙏
Not to ask the obvious question here, but what was missing?
Several files were missing from /etc/dinit.d, /usr/lib/dinit and /usr/lib/dinit.d. I copied them over from live iso. A monkeypatch, but it got the system running. Still no local tty, but ssh does work, so at least I can start fix the rest. Strange that it was this not fixed by neither reinstalling nor basestrapping the dinit package though.
That's actually weird. What mirror do you use and is dinit-rc installed? If you installed dinit proper it should depend on dinit-rc (https://gitea.artixlinux.org/packages/dinit/src/commit/fd33dce7b36163cb0e40b7827b2cf70b378397f2/PKGBUILD#L45), so /usr/lib/dinit.d isn't missing.
Ah, I didn't know /usr/lib/dinit.d was owned by dinit-rc, so that explains it. I just assumed that it's all dinit, so I did not reinstall dinit-rc. I'm a bit wiser now.
Now the oddities. Why would pacman -Syu remove dinit-rc?