svenstaro/genact · warning
Possibly missing firmware for module
Error message
Possibly missing firmware for module: {driver} What it means
During build(), when the 'block' hook runs in fallback mode, the tool emits a warning for each driver it detected, saying firmware may be missing. It is not a hard failure: mkinitcpio warns that the initramfs includes kernel modules whose userspace firmware blobs may not be installed, so the hardware may not work at boot. This mimics the classic mkinitcpio/udevadmq warning shown in the Arch Linux boot output.
Solutions
- Install the matching firmware package (e.g. `pacman -S linux-firmware`, or the specific package like linux-firmware-amdgpu)
- Blacklist/drop the unneeded module so its driver is not included in the image
- Ignore the warning if the hardware in question is not used (it is only a warning, not an error)
- In fallback mode specifically, verify which drivers land in the image and trim the MODULES= array in mkinitcpio.conf
Example fix
// before (warn for every driver in fallback mode)
if *hook == "block" && mode == "fallback" {
for driver in drivers {
warn(format!("Possibly missing firmware for module: {driver}").as_ref()).await;
}
}
// after (only warn when firmware file is actually absent)
if *hook == "block" && mode == "fallback" {
for driver in drivers {
if !firmware_installed(driver) {
warn(format!("Possibly missing firmware for module: {driver}").as_ref()).await;
}
}
} Defensive patterns
Strategy: validation
Validate before calling
// Verify firmware availability before the build step
for driver in drivers {
if !Path::new(&format!("/lib/firmware/{}
", driver)).exists()
&& command_output("modinfo", &["-F", "firmware", driver]).is_empty() {
eprintln!("firmware missing for module: {driver}");
}
} Prevention
- Always install linux-firmware (or distro equivalent) alongside the kernel
- Keep MODULES= in mkinitcpio.conf minimal and intentional
- Treat these warnings as informational — confirm the specific hardware works before blacklisting
- Regenerate the initramfs after firmware package upgrades
When it happens
Trigger: Calling run()/build() in fallback mode while the hook list contains 'block' and the detected driver list is non-empty — every detected driver gets one warn() line regardless of whether firmware is actually installed.
Common situations: Simulated/animated mkinitcpio boot screens (this looks like a fake boot renderer, e.g. archinstall/fastfetch-style demo); real-world equivalent is building an initramfs for hardware like radeon/amdgpu/nouveau or WiFi chips whose linux-firmware package is missing.
Understand the failure class
Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.
AI-assisted analysis of svenstaro/genact@858be63ad2 (2026-09-08).
Data as JSON: /api/errors/0818f8be7557f92a.
Report an issue: GitHub.
Appendix: source
Thrown at src/modules/mkinitcpio.rs:89
"/boot/initramfs-{preset}{suffix}.img",
preset = preset,
suffix = if mode == "default" {
"".to_string()
} else {
format!("-{mode}")
}
);
msg2(format!("-k /boot/vmlinuz-{preset} -c /etc/mkinitcpio.conf -g {image}",).as_ref()).await;
msg1(format!("Starting build: {os_release}").as_ref()).await;
for hook in hooks {
msg2(format!("Running build hook: [{hook}]").as_ref()).await;
csleep(rng.random_range(50..1000)).await;
if *hook == "block" && mode == "fallback" {
for driver in drivers {
warn(format!("Possibly missing firmware for module: {driver}").as_ref()).await;
}
}
if appconfig.should_exit() {
return;
}
}
msg1("Generating module dependencies").await;
csleep(rng.random_range(200..500)).await;
msg1(format!("Creating {zip}-compressed initcpio image: {image}",).as_ref()).await;
csleep(rng.random_range(500..2500)).await;
msg1("Image generation successful").await;
}
pub struct Mkinitcpio;View on GitHub (pinned to 858be63ad2)