forked from tfgrid/zosbuilder
initramfs+modules: robust copy aliasing, curated stage1 + PHYs, firmware policy via firmware.conf, runtime readiness, build ID; docs sync
Summary of changes (with references):\n\nModules + PHY coverage\n- Curated and normalized stage1 list in [config.modules.conf](config/modules.conf:1):\n - Boot-critical storage, core virtio, common NICs (Intel/Realtek/Broadcom), overlay/fuse, USB HCD/HID.\n - Added PHY drivers required by NIC MACs:\n * realtek (for r8169, etc.)\n * broadcom families: broadcom, bcm7xxx, bcm87xx, bcm_phy_lib, bcm_phy_ptp\n- Robust underscore↔hyphen aliasing during copy so e.g. xhci_pci → xhci-pci.ko, hid_generic → hid-generic.ko:\n - [bash.initramfs_copy_resolved_modules()](scripts/lib/initramfs.sh:990)\n\nFirmware policy and coverage\n- Firmware selection now authoritative via [config/firmware.conf](config/firmware.conf:1); ignore modules.conf firmware hints:\n - [bash.initramfs_setup_modules()](scripts/lib/initramfs.sh:229)\n - Count from firmware.conf for reporting; remove stale required-firmware.list.\n- Expanded NIC firmware set (bnx2, bnx2x, tigon, intel, realtek, rtl_nic, qlogic, e100) in [config.firmware.conf](config/firmware.conf:1).\n- Installer enforces firmware.conf source-of-truth in [bash.alpine_install_firmware()](scripts/lib/alpine.sh:392).\n\nEarly input & build freshness\n- Write a runtime build stamp to /etc/zero-os-build-id for embedded initramfs verification:\n - [bash.initramfs_finalize_customization()](scripts/lib/initramfs.sh:568)\n- Minor init refinements in [config.init](config/init:1) (ensures /home, consistent depmod path).\n\nRebuild helper improvements\n- [scripts/rebuild-after-zinit.sh](scripts/rebuild-after-zinit.sh:1):\n - Added --verify-only; container-aware execution; selective marker clears only.\n - Prints stage status before/after; avoids --rebuild-from; resolves full kernel version for diagnostics.\n\nRemote flist readiness + zinit\n- Init scripts now probe BASE_URL readiness and accept FLISTS_BASE_URL/FLIST_BASE_URL; firmware target is /lib/firmware:\n - [sh.firmware.sh](config/zinit/init/firmware.sh:1)\n - [sh.modules.sh](config/zinit/init/modules.sh:1)\n\nContainer, docs, and utilities\n- Stream container build logs by calling runtime build directly in [bash.docker_build_container()](scripts/lib/docker.sh:56).\n- Docs updated to reflect firmware policy, runtime readiness, rebuild helper, early input, and GRUB USB:\n - [docs.NOTES.md](docs/NOTES.md)\n - [docs.PROMPT.md](docs/PROMPT.md)\n - [docs.review-rfs-integration.md](docs/review-rfs-integration.md)\n- Added GRUB USB creator (referenced in docs): [scripts/make-grub-usb.sh](scripts/make-grub-usb.sh)\n\nCleanup\n- Removed legacy/duplicated config trees under configs/ and config/zinit.old/.\n- Minor newline and ignore fixes: [.gitignore](.gitignore:1)\n\nNet effect\n- Runtime now has correct USB HCDs/HID-generic and NIC+PHY coverage (Realtek/Broadcom), with matching firmware installed in initramfs.\n- Rebuild workflow is minimal and host/container-aware; docs are aligned with implemented behavior.\n
This commit is contained in:
@@ -1,57 +1,74 @@
|
||||
# Module loading specification for Zero-OS Alpine initramfs
|
||||
# Format: STAGE:MODULE_NAME:FIRMWARE_PACKAGE (optional)
|
||||
# Focus on most common NIC modules to ensure networking works on most hardware
|
||||
# Format: STAGE:MODULE
|
||||
# Firmware selection is authoritative in config/firmware.conf; do not add firmware hints here.
|
||||
|
||||
# Stage 1: Core subsystems + networking and essential boot modules
|
||||
# All core subsystems and NICs must be loaded BEFORE network can come up
|
||||
stage1:virtio:none # Core virtio subsystem (REQUIRED)
|
||||
stage1:virtio_ring:none # Virtio ring buffer (REQUIRED)
|
||||
stage1:virtio_pci:none # Virtio PCI bus
|
||||
stage1:virtio_net:none # Virtio network (VMs, cloud)
|
||||
stage1:virtio_scsi:none # Virtio SCSI (VMs, cloud)
|
||||
stage1:virtio_blk:none # Virtio block (VMs, cloud)
|
||||
stage1:e1000:linux-firmware-intel # Intel E1000 (very common)
|
||||
stage1:e1000e:linux-firmware-intel # Intel E1000E (very common)
|
||||
stage1:r8169:linux-firmware-realtek # Realtek (most common desktop/server)
|
||||
stage1:realtek:linux-firmware-realtek # Realtek (most common desktop/server)
|
||||
stage1:igb:linux-firmware-intel # Intel Gigabit (servers)
|
||||
stage1:ixgbe:linux-firmware-intel # Intel 10GbE (servers)
|
||||
stage1:i40e:linux-firmware-intel # Intel 40GbE (modern servers)
|
||||
stage1:ice:linux-firmware-intel # Intel E800 series (latest)
|
||||
stage1:8139too:none # Realtek 8139 (legacy)
|
||||
stage1:8139cp:none # Realtek 8139C+ (legacy)
|
||||
stage1:bnx2:linux-firmware-bnx2 # Broadcom NetXtreme
|
||||
stage1:bnx2x:linux-firmware-bnx2 # Broadcom NetXtreme II
|
||||
stage1:tg3:none # Broadcom Tigon3
|
||||
stage1:b44:none # Broadcom 44xx
|
||||
stage1:atl1:none # Atheros L1
|
||||
stage1:atl1e:none # Atheros L1E
|
||||
stage1:atl1c:none # Atheros L1C
|
||||
stage1:alx:none # Atheros Alx
|
||||
stage1:libata:none # Core ATA subsystem (REQUIRED)
|
||||
stage1:scsi_mod:none # SCSI subsystem
|
||||
stage1:sd_mod:none # SCSI disk support
|
||||
stage1:ahci:none # SATA AHCI
|
||||
stage1:nvme_core:none # Core NVMe subsystem (REQUIRED)
|
||||
stage1:nvme:none # NVMe storage
|
||||
stage1:tun:none # TUN/TAP for networking
|
||||
stage1:overlay:none # OverlayFS for containers
|
||||
stage1:fuse:none # OverlayFS for containers
|
||||
# Stage 1: boot-critical storage, core virtio, networking, overlay, and input (USB/HID/keyboard)
|
||||
|
||||
# Stage 1: USB keyboard support (host controllers + HID)
|
||||
stage1:xhci_pci:none
|
||||
stage1:xhci_hcd:none
|
||||
stage1:ehci_pci:none
|
||||
stage1:ehci_hcd:none
|
||||
stage1:ohci_pci:none
|
||||
stage1:ohci_hcd:none
|
||||
stage1:uhci_hcd:none
|
||||
stage1:usbhid:none
|
||||
stage1:hid_generic:none
|
||||
stage1:hid:none
|
||||
stage1:atkbd:none
|
||||
stage1:libps2:none
|
||||
stage1:i2c_smbus:none
|
||||
stage1:serio:none
|
||||
stage1:i8042i:none
|
||||
# Storage
|
||||
stage1:libata
|
||||
stage1:libahci
|
||||
stage1:ahci
|
||||
stage1:scsi_mod
|
||||
stage1:sd_mod
|
||||
stage1:nvme_core
|
||||
stage1:nvme
|
||||
stage1:virtio_blk
|
||||
stage1:virtio_scsi
|
||||
|
||||
# Core virtio
|
||||
stage1:virtio
|
||||
stage1:virtio_ring
|
||||
stage1:virtio_pci
|
||||
stage1:virtio_pci_legacy_dev
|
||||
stage1:virtio_pci_modern_dev
|
||||
|
||||
# Networking (common NICs)
|
||||
stage1:virtio_net
|
||||
stage1:e1000
|
||||
stage1:e1000e
|
||||
stage1:igb
|
||||
stage1:ixgbe
|
||||
stage1:igc
|
||||
stage1:i40e
|
||||
stage1:ice
|
||||
stage1:r8169
|
||||
stage1:8139too
|
||||
stage1:8139cp
|
||||
stage1:bnx2
|
||||
stage1:bnx2x
|
||||
stage1:tg3
|
||||
stage1:tun
|
||||
|
||||
# PHY drivers
|
||||
stage1:realtek
|
||||
# Broadcom PHY families (required for many Broadcom NICs)
|
||||
stage1:broadcom
|
||||
stage1:bcm7xxx
|
||||
stage1:bcm87xx
|
||||
stage1:bcm_phy_lib
|
||||
stage1:bcm_phy_ptp
|
||||
|
||||
# Filesystems / overlay
|
||||
stage1:overlay
|
||||
stage1:fuse
|
||||
|
||||
# USB host controllers and HID/keyboard input
|
||||
stage1:xhci_pci
|
||||
stage1:xhci_hcd
|
||||
stage1:ehci_pci
|
||||
stage1:ehci_hcd
|
||||
stage1:ohci_pci
|
||||
stage1:ohci_hcd
|
||||
stage1:uhci_hcd
|
||||
stage1:usbhid
|
||||
stage1:hid_generic
|
||||
stage1:hid
|
||||
stage1:atkbd
|
||||
stage1:libps2
|
||||
stage1:i8042
|
||||
stage1:evdev
|
||||
stage1:serio_raw
|
||||
stage1:serio
|
||||
|
||||
# Keep stage2 empty; we only use stage1 in this build
|
||||
# stage2: (intentionally unused)
|
||||
|
||||
Reference in New Issue
Block a user