feat(deploy): USB-bootable batm3 test image (disk-image-batm3-usb)
Add a USB-bootable BATM3 disk-image target plus the batm3 hardware changes that make a dd'd USB stick boot reliably on the Dell 9030 AIO. flake.nix — new `disk-image-batm3-usb` target: - Distinct partition labels (nixos-usb / ESP-USB) so stage-1 by-label resolution can't latch onto an internal SATA drive that already holds a generic nixos/ESP-labelled install. Post-build mlabel relabels the ESP FAT volume to ESP-USB (bootloader files untouched; UEFI still loads /EFI/BOOT/BOOTX64.EFI). - /boot mounted nofail + short device-timeout: the firmware already loaded the bootloader before Linux; without nofail a slow/late ESP-USB enumeration drops to emergency mode with root locked — a dead end. - NO growPartition/autoResize on the USB image: sfdisk rewriting the partition table on first boot is the single most bus-stressing write, and flaky USB bridges drop off the bus mid-rewrite (sfdisk wedges in uninterruptible D-state and ESP-USB vanishes with the device, so /boot times out too). Persistent state is a few MB and the image already ships ~2GB free in root. The internal-SATA disk-image-batm3 keeps growPartition — a real AHCI SSD won't drop the bus. - autoUpgrade off (test image, not a managed fleet member). batm3.nix — USB-boot reliability: - Add usb_storage to initrd.availableKernelModules so stage-1 binds the stick and /dev/disk/by-label/* appears. - Blacklist uas + usbcore.autosuspend=-1: force the slower-but-reliable Bulk-Only Transport path and stop the boot medium being power-suspended mid-I/O — both were causing "device offline error" bus drops. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
da3f3265ab
commit
6edcb8b96d
2 changed files with 94 additions and 0 deletions
|
|
@ -17,8 +17,22 @@
|
|||
"ahci"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
# USB mass-storage: required to boot the dd'd image from a USB stick
|
||||
# (stage-1 must bind the flash drive as a SCSI disk so
|
||||
# /dev/disk/by-label/nixos appears). Harmless on the internal-SATA
|
||||
# install, where ahci+sd_mod already cover the root device.
|
||||
#
|
||||
# NOTE: deliberately NO "uas" here. Many USB sticks/bridges advertise
|
||||
# UAS but drop off the bus ("device offline error, dev sdb") under the
|
||||
# sustained write load of first-boot growPartition/journal/swapfile.
|
||||
# Blacklisting uas below forces the slower-but-reliable usb-storage
|
||||
# (Bulk-Only Transport) path. SATA/eMMC installs don't use uas anyway.
|
||||
"usb_storage"
|
||||
];
|
||||
|
||||
# Keep the USB flash drive off the flaky UAS driver (see note above).
|
||||
blacklistedKernelModules = [ "uas" ];
|
||||
|
||||
kernelModules = [
|
||||
"kvm-intel"
|
||||
"usbtouchscreen"
|
||||
|
|
@ -27,6 +41,9 @@
|
|||
kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
# Disable USB autosuspend so the boot medium (and kiosk peripherals)
|
||||
# aren't power-suspended mid-I/O — another cause of "device offline".
|
||||
"usbcore.autosuspend=-1"
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue