Arch Linux: linux-firmware-nvidia: /usr/lib/firmware/nvidia/ exists in filesystem

Автор |  09/07/2025

Не зважаючи на те, що про зміни було повідомлено в листах від Arch Linux – чомусь дуже у багатьох виникли проблеми з останнім апдейтом: в сабредітах по Arch Linux на Reddit прям через один топік питають “Аааа, в мене все зламалось, що робити?!?”.

Глянемо як все ж завершити апгрейд, і що саме мінялось.

The issue: linux-firmware exists in filesystem

Власне, помилка виглядає так:

$ sudo pacman -Syu
...
(363/363) checking for file conflicts                                                                                                                  [############################################################################################] 100%
error: failed to commit transaction (conflicting files)
linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad103 exists in filesystem
linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad104 exists in filesystem
linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad106 exists in filesystem
linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad107 exists in filesystem
Errors occurred, no packages were upgraded.

Лист від Arch Linux виглядав так:

Посилання – тут>>>.

В повідомленні говориться, що:

With 20250613.12fe085f-5, we split our firmware into several vendor-focused packages. linux-firmware is now an empty package depending on our default set of firmware.

І явно вказано, що треба зробити – просто перевстановити пакет linux-firmware.

Видаляємо існуючий:

$ sudo pacman -Rdd linux-firmware

І встановлюємо заново:

$ sudo pacman -Syu linux-firmware

The cause: what was changed?

А що в новому пакеті? Що змінилось?

Сам пакет linux-firmware містить необхідні файли для роботи hardware, але які не включені в ядро Linux чи в ISO-образ Arch Linux.

Як говориться в листі – тепер замість єдиного пакета з усіма файлами – він буде розбитий на кілька різних, “vendor-focused packages“.

Версія (чи “тег”?) нового пакету – 20250627, а старого – 20250508.

Можна глянути що саме було встановлено з останнім апдейтом:

$ grep linux-firmware /var/log/pacman.log
[2025-05-27T15:03:52+0000] [PACMAN] Running 'pacman -r /mnt -Sy --config=/tmp/pacman.conf.2hxk --disable-sandbox --cachedir=/mnt/var/cache/pacman/pkg --noconfirm base linux linux-firmware grub efibootmgr networkmanager sudo vim iwd dhcpcd openssh'
[2025-05-27T15:04:18+0000] [ALPM] installed linux-firmware-whence (20250508.788aadc8-2)
[2025-05-27T15:04:18+0000] [ALPM] installed linux-firmware (20250508.788aadc8-2)
[2025-07-05T15:24:51+0300] [PACMAN] Running 'pacman -Rdd linux-firmware'
[2025-07-05T15:24:52+0300] [ALPM] removed linux-firmware (20250508.788aadc8-2)
[2025-07-05T15:25:10+0300] [PACMAN] Running 'pacman -Syu linux-firmware'
[2025-07-05T15:25:26+0300] [ALPM] upgraded linux-firmware-whence (20250508.788aadc8-2 -> 20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-amdgpu (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-atheros (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-broadcom (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-cirrus (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-intel (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-mediatek (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-nvidia (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-other (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-radeon (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware-realtek (20250627-1)
[2025-07-05T15:25:26+0300] [ALPM] installed linux-firmware (20250627-1)

Власне і бачимо, що тепер у нас є пачка пакетів типу linux-firmware-nvidia, який містить в собі:

$ bsdtar -tf /var/cache/pacman/pkg/linux-firmware-nvidia-20250627-1-any.pkg.tar.zst | head
.BUILDINFO
.MTREE
.PKGINFO
usr/
usr/lib/
usr/lib/firmware/
usr/lib/firmware/nvidia/
usr/lib/firmware/nvidia/ad102/
usr/lib/firmware/nvidia/ad102/gsp/
usr/lib/firmware/nvidia/ad102/gsp/booter_load-535.113.01.bin.zst

Або з pacman:

$ pacman -Ql linux-firmware-nvidia | head
linux-firmware-nvidia /usr/
linux-firmware-nvidia /usr/lib/
linux-firmware-nvidia /usr/lib/firmware/
linux-firmware-nvidia /usr/lib/firmware/nvidia/
linux-firmware-nvidia /usr/lib/firmware/nvidia/ad102/
linux-firmware-nvidia /usr/lib/firmware/nvidia/ad102/gsp/
linux-firmware-nvidia /usr/lib/firmware/nvidia/ad102/gsp/booter_load-535.113.01.bin.zst
linux-firmware-nvidia /usr/lib/firmware/nvidia/ad102/gsp/booter_load-570.144.bin.zst
linux-firmware-nvidia /usr/lib/firmware/nvidia/ad102/gsp/booter_unload-535.113.01.bin.zst
linux-firmware-nvidia /usr/lib/firmware/nvidia/ad102/gsp/booter_unload-570.144.bin.zst

А старий можна подивитись в кеші:

$ ls -lt /var/cache/pacman/pkg/linux-firmware-20250508*
-rw-r--r-- 1 root root       310 May 24 08:41 /var/cache/pacman/pkg/linux-firmware-20250508.788aadc8-2-any.pkg.tar.zst.sig
-rw-r--r-- 1 root root 287519592 May 24 08:40 /var/cache/pacman/pkg/linux-firmware-20250508.788aadc8-2-any.pkg.tar.zst

І що саме було в ньому:

$ bsdtar -tf /var/cache/pacman/pkg/linux-firmware-20250508.788aadc8-2-any.pkg.tar.zst | grep nvidia | head
usr/lib/firmware/brcm/brcmfmac4354-sdio.nvidia,p2371-2180.txt.zst
usr/lib/firmware/nvidia/
usr/lib/firmware/nvidia/ad102/
usr/lib/firmware/nvidia/ad102/gsp/
usr/lib/firmware/nvidia/ad102/gsp/booter_load-535.113.01.bin.zst
usr/lib/firmware/nvidia/ad102/gsp/booter_unload-535.113.01.bin.zst
usr/lib/firmware/nvidia/ad102/gsp/bootloader-535.113.01.bin.zst
usr/lib/firmware/nvidia/ad102/gsp/gsp-535.113.01.bin.zst
usr/lib/firmware/nvidia/ad103/
usr/lib/firmware/nvidia/ad103/gsp

Власне, закінчуємо апдейт як завжди, ребутаємось – все працює.

What to do in the future?

  1. підписатись на розсилку: https://lists.archlinux.org/mailman3/lists/arch-announce.lists.archlinux.org/
  2. встановити пакет informant – він перевіряє Arch News і додає hook для pacman, який зупинить апгрейд, якщо є якісь not resolved issues