Skip to content

Arctic Linux - Alpha 2.1

Choose a tag to compare

@apiwo apiwo released this 16 Aug 23:41
· 59 commits to main since this release

Arctic Linux Alpha 2.1Arctic-linux-a2.1.iso, x86_64, 695 MiB.

A bugfix for Alpha 2, which shipped with wireless broken by the fix that was
supposed to repair it.

Still not fully tested end to end. The live image is verified on real
hardware and in a VM; the install-to-disk path and wireless association are
code-verified against the binaries Arctic actually ships, not exercised to
completion. Treat it as a test image.

-f is not an option this wpa_supplicant has

Alpha 2 fixed the real wireless bug — wpa_passphrase reading from a pipe
exits 1 without writing anything, so the config had no network= block — and
then broke wireless a second way while adding diagnostics for the first.

The supplicant was invoked with -f <logfile> so a failed association would
leave something to read. -f is compiled in by CONFIG_DEBUG_FILE, and
Arctic's wpa_supplicant does not set it. An unknown option makes
wpa_supplicant print its usage and exit without ever touching the radio,
so association could not even be attempted — and the "log" the failure path
then printed was that usage text:

!! NETGEAR24 did not come up after 30s
   no control socket - wpa_supplicant is not running
   last lines of /run/arctic/wpa_supplicant-wlan0.log:
     -p = driver parameters
     -P = PID file
     -q = decrease debugging verbosity (-qq even less)
     ...

The option had been checked with wpa_supplicant -h on the build host,
whose wpa_supplicant is built with CONFIG_DEBUG_FILE and accepts -f
perfectly. Against the binary Arctic ships:

$ strings usr/sbin/wpa_supplicant | grep -E '^  -[fBc] '
  -B = run daemon in the background
  -c = Configuration file

Shell redirection does the same job and cannot be refused.

A supplicant that never started counted as started

-B forks, so the exit status says nothing about whether the daemon survived,
and a build that refuses an option can exit 0 having printed usage. That is
why the failure surfaced thirty seconds later as a timeout rather than
immediately as "it did not start". The control socket and the process are what
get checked now, within five seconds.

DHCP

udhcpc was called without -s, relying on busybox's compiled-in default
script path. That path is correct and the script is on the image, so this was
not broken — but a lease that is obtained and never applied is indistinguishable
from no lease at all, so the script is named explicitly now, the way
rc.d/network already named it. Its output goes to
/run/arctic/udhcpc-<iface>.log instead of /dev/null, and a failure prints
the tail of it.

Everything from Alpha 2

Still in this image: the wpa_passphrase fix, the missing ctrl_interface,
the installer dropping the quoted psk, wireless-regdb for the 5 GHz
regulatory domain, the root=PARTUUID=UUID= change that is what lets an
installed system boot at all, the console width and per-service timings, and
the live session printing how to install Arctic instead of a hardware
inventory. See the Alpha 2 notes for the detail on each.

Known

  • 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. The install succeeds regardless.
  • gtk3 in the repository is corrupt (no .PKGINFO) and cannot be installed.
  • Declared dependencies are not checked against real linkage; dwm installs and
    then fails on libharfbuzz.so.0.

Install

dd if=Arctic-linux-a2.1.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.

sha256  cadf9cb207973d8f57a71bafeb6d425b843959ab5275a49ae97bf13bd65a547f