1 lainOS layer 02 user wiki
Grayson Giles edited this page 2026-06-23 10:12:36 +02:00

Migrating from LainOS Layer 01 to Layer 02

What changed

Layer 02 is not an upgrade to Layer 01 — it's a ground-up rebuild around a different init architecture. Layer 01 runs systemd. Layer 02 runs Protocol 7: OpenRC as PID 1, with custom daemons replacing the systemd services you relied on. The desktop, the tools, and most of the software are the same. The system underneath them is fundamentally different.


The big differences

No systemd

systemctl does not exist on Layer 02. Everything that was a systemd unit is now an OpenRC service.

Layer 01 Layer 02
systemctl start foo doas rc-service foo start
systemctl stop foo doas rc-service foo stop
systemctl restart foo doas rc-service foo restart
systemctl status foo rc-service foo status
systemctl enable foo doas rc-update add foo default
systemctl disable foo doas rc-update del foo default
systemctl --failed rc-status
journalctl -u foo cat /var/log/everything.log | grep foo
journalctl -b cat /var/log/everything.log

No sudo — doas

Layer 02 uses doas instead of sudo. The syntax is the same for basic use:

doas pacman -Syu
doas nano /etc/some/file

If you have scripts that call sudo, they will need to be updated to use doas.

No NetworkManager

Layer 02 uses iwd for WiFi. There is no nmcli, no network-manager applet, no nmtui.

Connect to a network:

iwctl
# Inside iwctl:
station wlan0 scan
station wlan0 get-networks
station wlan0 connect "Your Network Name"
exit

Check connection status:

iwctl station wlan0 show

Logs

Layer 02 uses syslog-ng instead of journald. There is no journalctl.

# View all logs
cat /var/log/everything.log

# Follow logs live
tail -f /var/log/everything.log

# Filter by service
grep lainos-dbus-bridge /var/log/everything.log

What's the same

  • pacman — package management is identical. All Arch repos are available.
  • Sway — same window manager, same keybindings.
  • alacritty — same terminal.
  • dbus — D-Bus is present and working. Applications that use D-Bus work normally.
  • PipeWire — audio works the same way.
  • Wayland — same environment.
  • AUR — works as normal. Use your preferred AUR helper.

Login screen

Layer 02 uses tuigreet instead of a graphical display manager. At boot you'll see a terminal-style login prompt. Enter your username and password as normal. The session selector (F3) lets you choose your Wayland session if you have more than one installed.


Service runlevels

OpenRC organizes services into runlevels. The ones you'll interact with:

Runlevel Purpose When it runs
sysinit Core system init (dbus, cgroups) Very early boot
boot Early services (logging) Before default
default Normal services (greetd, iwd, seatd) Normal boot

To add a service to a specific runlevel:

doas rc-update add foo default    # starts at normal boot
doas rc-update add foo boot       # starts earlier

Privilege escalation

doas configuration lives at /etc/doas.conf. The default rule permits all wheel group members:

permit persist :wheel

To run a one-off command as root:

doas command

To open a root shell:

doas -s

Known differences in behavior

Boot messages: OpenRC prints its service start messages directly to the console. You'll see each service listed as it starts. This is normal.

lainos-dbus-bridge: On first boot, lainos-dbus-bridge may show as crashed in rc-status. It recovers automatically. If you need it immediately, run doas rc-service lainos-dbus-bridge restart.

No logind: Layer 02 uses seatd instead of logind for seat management. Applications that query org.freedesktop.login1 over D-Bus are handled by lainos-dbus-bridge. Most applications work transparently. If a specific application fails with a logind-related error, report it.


Getting help