Arctic Linux - Alpha 2.61
Arctic Linux Alpha 2.61 — Arctic-linux-a2.61.iso, x86_64, 695 MiB.
This is labeled a small fix. It is not one - it is the most severe bug found
in this project so far, and it was found by accident while verifying an
unrelated a2.6 fix. It's staying a2.61 rather than being renumbered, but do
not read the version number as a measure of how serious this was.
Every fresh install on the default filesystem kernel-panicked before it ever booted
KERNEL PANIC!
Please reboot your computer.
Attempted to kill init! exitcode=0x00000100
btrfs is Arctic's default root filesystem, and installing onto it never
worked past the first boot. arctic-install creates the root subvolume as
@ and mounts it at @ correctly during the install itself - but the
bootloader config arctic-boot-strap writes never told the next boot the
same thing. Without rootflags=subvol=@ on the kernel command line, the
initramfs mounts the raw top-level btrfs volume instead of the @
subvolume - the one that actually has a /sbin/init in it. @, @home and
the rest sit one level down, inside that top level, invisible to a plain
mount. switch_root looks for /sbin/init where the kernel just told it
root is, does not find it, and exits - and when the process the kernel
believes is PID 1 exits, this is what happens, always, on every Linux
system. This happened before rc.boot ever ran, before any service, before
anything this project's own boot log could report on.
Fixed by reading the correct subvol= straight back out of /etc/fstab -
genfstab already recorded it correctly the whole time - and adding
rootflags= to the kernel command line Limine and GRUB both write. Verified
by hand-patching a panicking install's limine.conf (confirmed the theory),
then by a completely fresh install through the fixed installer reaching
arctic login: with no hand-editing at all.
If you installed onto btrfs on any earlier a2.x release and it never booted,
this is why, and this is the fix.
The kernel-modules step actually got faster, not just less scary
a2.5 made the slow coldplug step at boot print a heartbeat so it stopped
looking hung. It was still slow. This release cuts the actual work: a device
the kernel already bound a driver to is skipped instead of re-probed, and an
alias already queued this boot is not looked up a second time. Measured on a
real /sys tree: 310 devices to consider, 69 already had drivers, 251
candidate aliases collapsed to 59 unique ones after dedup - an 81% cut in
modprobe invocations, each of which was a full process fork re-parsing
modules.dep from scratch. Real hardware, with more devices already bound
before userspace starts than this measurement's host had, should see at
least as large a cut.
Everything from a2.6
Wifi credentials in install.conf actually get used now
(system-connections needed to be 0700, not just the file in it);
wifi-connect recognizes when NetworkManager already owns the radio instead
of blaming signal strength; gmp-alt is built, which is what nftables
needed to install at all; and the wifi-connect / first-boot login messages
are gone rather than trimmed. See the a2.6 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
tputdoes not work. lyis not packaged yet.- initialization freezes at boot; not diagnosed yet.
- The a2.6 claim that nftables now stops cleanly on poweroff is verified only
as far as "the package now installs" - an actual boot-to-shutdown cycle
exercisingrc.shutdown's stop of it was not completed this round.
Install
dd if=Arctic-linux-a2.61.iso of=/dev/sdX bs=4M status=progress conv=fsync
Run wifi-connect if you need wireless during install; on an installed
system use nmtui. Edit /etc/arctic/install.conf, run arctic-install.