Skip to content

Arctic Linux - Alpha 2.2

Choose a tag to compare

@apiwo apiwo released this 17 Aug 00:42
· 57 commits to main since this release

Arctic Linux Alpha 2.2Arctic-linux-a2.2.iso, x86_64, 695 MiB.

Alpha 2.1's live image and installer worked on real hardware. The installed
system it produced could not be logged into. This fixes that and the rest of
what a first real install turned up.

No installed system could be logged into

arctic login: apiwo
/bin/login: error while loading shared libraries: libpam.so.0

util-linux-libs — a package whose name, description and recipe comment all
say "libblkid, libmount and libuuid only" — was running a plain
make DESTDIR=... install and shipping util-linux's entire program set:
dmesg, kill, mount, su, agetty, blkid, and /bin/login.

busybox provides /bin/login as an applet symlink and busybox links nothing
at all. util-linux's login links libpam, which Arctic does not have and does
not build. Every base install pulls in util-linux-libs, because libblkid and
libmount are what the installer and mount need — so every install replaced a
working login with one that could not start.

It is built --disable-all-programs with the five libraries enabled by name,
and package() removes every binary directory afterwards, because one stray
login here is a machine nobody can log into. The package now ships 45 files
and not one of them is a program.

dwm could not start

dwm: error while loading shared libraries: libharfbuzz.so.0

freetype links libharfbuzz.so.0 and does not declare harfbuzz, so nothing
ever installed it. Declared on dwm for now rather than on freetype: freetype
and harfbuzz link each other, and that cycle is not something to introduce
into the base dependency graph in a bugfix release. The general fix — auditing
every package's real linkage against what it declares — is still outstanding
and this is the second package it has bitten.

Every installed machine called itself Alpha 1.1

arctic-install carried its own VERSION="Arctic Linux - Alpha 1.1" literal
and write_release() copied it into the installed system's
/etc/arctic-release. So every machine installed from every image since a1.1
was branded Alpha 1.1, and the boot banner that reads that file said so on
every boot. The installer reads the version off the live system it is running
from now, so it cannot drift again.

The boot output

  • The banner is gone. It printed the release above every boot, which is
    not information anyone needs at every boot — and was wrong for months
    besides. arcticfetch answers that question when it is asked.
  • No more per-service timings. A line is [ done ], [ fail ] or
    [ skip ]. The elapsed time was noise; whether the thing came up is the
    point. The total is still printed once at the end.

initialization is no longer the default

A_INIT defaulted to initialization, and a machine installed with it froze
partway through boot and never reached a login. An init is the one component
where a bad default cannot be recovered from without another medium, so the
default is busybox — the init every image here has actually booted.

A_INIT=initialization still works and is still where Arctic is going. It is
a deliberate choice now rather than what you get by not choosing.

Cosmetic

  • Limine's backdrop was 5f5bc6, a violet that read as a pink wash behind the
    boot menu. It matches the terminal background now.
  • The ASCII penguin is gone from the live session.

Known

  • The install-to-disk path in this image is not re-verified end to end;
    the fixes above are verified against the built packages and the built image.
  • No web browser; firefox, librewolf, chromium and qutebrowser all need Rust.
  • No audio — wireplumber will not build against the packaged lua.
  • No terminfo database, so tput does not work.
  • gmp-alt has no binary package, so nftables cannot install and the firewall
    does not come up.
  • gtk3 in the repository is corrupt (no .PKGINFO).
  • initialization freezes at boot; not diagnosed yet.

Install

dd if=Arctic-linux-a2.2.iso of=/dev/sdX bs=4M status=progress conv=fsync

Run wifi-connect if you need wireless, edit /etc/arctic/install.conf, run
arctic-install.