diff --git a/full-ai-cluster/usb-nixos-installer/nixos/installer/configuration.nix b/full-ai-cluster/usb-nixos-installer/nixos/installer/configuration.nix index 7748cf644a..4b0b5bd39b 100644 --- a/full-ai-cluster/usb-nixos-installer/nixos/installer/configuration.nix +++ b/full-ai-cluster/usb-nixos-installer/nixos/installer/configuration.nix @@ -16,6 +16,19 @@ time.timeZone = "America/New_York"; i18n.defaultLocale = "en_US.UTF-8"; + # B-0754 iter-3 hardware-firmware cleanup: enable redistributable + # firmware on the installer (Intel SoF / linux-firmware). Without + # this, modern Intel chipsets (Meteor Lake / Lunar Lake / Arrow + # Lake) print scary `ASoC: failed to instantiate card -2` / + # `snd_soc_register_card failed -2` errors during boot because + # their HD Audio Controller probes a SoundWire codec topology that + # needs SoF firmware blobs. Cosmetic — audio is not load-bearing + # for cluster substrate — but per B-0759 first-time-CLI-user + # persona, scary 'ERROR' lines in dmesg are UX noise we don't + # need. Redistributable-only (no allowUnfree needed); ~80MB + # added to ISO; covers WiFi/BT/NIC firmware too as a side benefit. + hardware.enableRedistributableFirmware = true; + nix.settings = { experimental-features = [ "nix-command" "flakes" ]; auto-optimise-store = true; diff --git a/full-ai-cluster/usb-nixos-installer/zeta-install.sh b/full-ai-cluster/usb-nixos-installer/zeta-install.sh index 7681a762f2..752a440a89 100755 --- a/full-ai-cluster/usb-nixos-installer/zeta-install.sh +++ b/full-ai-cluster/usb-nixos-installer/zeta-install.sh @@ -162,7 +162,23 @@ for d in "${DATA_DISKS[@]}"; do i=$((i + 1)) done -sudo partprobe +# Per-device partprobe: bare `partprobe` (no args) probes EVERY +# block device the kernel knows about, including the USB stick we +# booted from (kernel typically exposes USB mass-storage as +# /dev/sdX — commonly /dev/sda on boards with no SATA disks; the +# specific letter isn't guaranteed across hardware/boot order, but +# the failure mode is the same regardless of letter). The booted +# ISO has mounted partitions on that sdX device; partprobe rightfully +# refuses to refresh those + returns non-zero; `set -euo pipefail` +# then bails the whole install. Fix per B-0754 iter-3 empirical +# anchor: pass only the disks WE just partitioned, with an explicit +# per-disk failure handler so the abort message names the offending +# disk + suggests next steps (vs silent set -euo pipefail bail). +echo "Refreshing kernel partition table for installed disks ..." +sudo partprobe "$BOOT_DISK" || bail "partprobe failed for BOOT disk $BOOT_DISK — check 'dmesg | tail' for kernel detail; manual recovery: 'sudo partprobe $BOOT_DISK' then 'lsblk' to verify partition table" +for d in "${DATA_DISKS[@]}"; do + sudo partprobe "$d" || bail "partprobe failed for DATA disk $d — check 'dmesg | tail'; manual recovery: 'sudo partprobe $d' then 'lsblk' to verify partition table" +done sleep 2 # ── Step 5: format + mount ────────────────────────────────────────