Skip to content

Instantly share code, notes, and snippets.

@edwardtheharris
Last active April 23, 2025 14:31
Show Gist options
  • Save edwardtheharris/f12a021a939c1208010fa1ad1f67f930 to your computer and use it in GitHub Desktop.
Save edwardtheharris/f12a021a939c1208010fa1ad1f67f930 to your computer and use it in GitHub Desktop.
ArchLinux install missing firmware

Missing firmware fix

If you happen to run ArchLinux somewhere, you may find that when its time to rebuild your kernel with mkinitcpio you get output that looks like the following.

==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux -g /boot/initramfs-linux.img
==> Starting build: '6.10.3-arch1-2'
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
==> WARNING: Possibly missing firmware for module: 'xhci_pci'
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: '6.10.3-arch1-2'
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
==> WARNING: Possibly missing firmware for module: 'ast'
  -> Running build hook: [keyboard]
==> WARNING: Possibly missing firmware for module: 'xhci_pci'
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: 'aic94xx'
==> WARNING: Possibly missing firmware for module: 'bfa'
==> WARNING: Possibly missing firmware for module: 'qed'
==> WARNING: Possibly missing firmware for module: 'qla1280'
==> WARNING: Possibly missing firmware for module: 'qla2xxx'
==> WARNING: Possibly missing firmware for module: 'wd719x'
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-fallback.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful

Problem

These warnings are harmless assuming you don't use any of the hardware that these missing packages are intended to provide drivers for. So, if you do use any of that hardware, or if, like me, you just don't like warnings in your kernel build, use the shell script below to install the required software.

Usage

Either copy the shell script to your system, make it executable and run it, or jsut copy the shell command below and run that (assuming you have yay installed). Of course, if you don't use yay and use some other means of accessing the AUR, this is useless to you, but if that's the case just use whatever your preferred tool is to install the listed packages.

Install with yay

yay -Syyu aic94xx-firmware ast-firmware linux-firmware-qlogic wd719x-firmware

Solution

Once this completes (and builds the kernel for you a few times), you should be able to run mkinitcpio and see output similar to the following sans warnings.

==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux -g /boot/initramfs-linux.img
==> Starting build: '6.10.3-arch1-2'
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
==> Using default configuration file: '/etc/mkinitcpio.conf'
  -> -k /boot/vmlinuz-linux -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: '6.10.3-arch1-2'
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [microcode]
  -> Running build hook: [modconf]
  -> Running build hook: [kms]
  -> Running build hook: [keyboard]
  -> Running build hook: [keymap]
  -> Running build hook: [consolefont]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating zstd-compressed initcpio image: '/boot/initramfs-linux-fallback.img'
  -> Early uncompressed CPIO image generation successful
==> Initcpio image generation successful

Even harmless warnings are still warnings, and when it comes to ones kernel it's best be clean. Hope this helps someone, as it took me a bit of digging to find the correct list of packages hidden behind all the "they're just warnings, ignore them" posts.

Cheers mate!

#!/bin/bash
# You will need to use `yay` or some other Pacman tool with access to the AUR.
yay -Syyu aic94xx-firmware ast-firmware linux-firmware-qlogic wd719x-firmware
# Extra packages for a more complete system when following the install guide.
# https://wiki.archlinux.org/title/Installation_guide
pacstrap -K /mnt base base-devel linux linux-headers linux-firmware git \
amd-ucode intel-ucode neovim btrfs-progs dosfstools networkmanager \
bash-completion man-db man-pages texinfo ntp openssh grub efibootmgr
# Prometheus exporters
yay -Syyu prometheus-node-exporter prometheus-bind-exporter prometheus-systemd-exporter prometheus-process-exporter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment