86 votes

"W : Possible firmware manquant pour le module i915_bpo" lors de la mise à jour des initramfs

Lorsque j'exécute une mise à jour du noyau ou des pilotes NVIDIA sur ma version 16.04, cela déclenche une reconstruction initramfs qui génère l'avertissement ci-dessous :

Processing triggers for initramfs-tools (0.122ubuntu8.1) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-34-generic
W: Possible missing firmware /lib/firmware/i915/skl_guc_ver6.bin for module i915_bpo

J'ai un ordinateur portable avec deux puces graphiques, une NVIDIA GeForce 940M et la carte graphique intégrée de l'Intel i5-6200U.

Le périphérique utilisé est ma carte NVIDIA :

$ inxi -G
Graphics:  Card-1: Intel Sky Lake Integrated Graphics
           Card-2: NVIDIA GM108M [GeForce 940M]
           Display Server: X.Org 1.18.3 driver: nvidia Resolution: 1920x1080@60.03hz
           GLX Renderer: GeForce 940M/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 367.35

Voici le résultat de lshw -c video correspondant à ma puce graphique Intel qui devrait utiliser ce pilote :

    *-display         
         description: VGA compatible controller
         product: Sky Lake Integrated Graphics
         vendor: Intel Corporation
         physical id: 2
         bus info: pci@0000:00:02.0
         version: 07
         width: 64 bits
         clock: 33MHz
         capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
         configuration: driver=i915_bpo latency=0
         resources: irq:125 memory:a2000000-a2ffffff memory:b0000000-bfffffff ioport:5000(size=64)

Le fichier dans l'avertissement n'existe pas, seulement ceux :

$ ll /lib/firmware/i915/
total 336
drwxr-xr-x  2 root root   4096 Aug 11 13:24 ./
drwxr-xr-x 74 root root  32768 Aug 11 13:24 ../
-rw-r--r--  1 root root   5872 Jul 21 17:03 bxt_dmc_ver1_04.bin
-rw-r--r--  1 root root   5872 Jul 21 17:03 bxt_dmc_ver1_05.bin
-rw-r--r--  1 root root   8380 Jul 21 17:03 bxt_dmc_ver1_06.bin
-rw-r--r--  1 root root   8380 Jul 21 17:05 bxt_dmc_ver1_07.bin
lrwxrwxrwx  1 root root     19 Jul 21 17:05 bxt_dmc_ver1.bin -> bxt_dmc_ver1_07.bin
-rw-r--r--  1 root root   8824 Jul 21 17:03 skl_dmc_ver1_23.bin
-rw-r--r--  1 root root   8928 Jul 12 21:33 skl_dmc_ver1_26.bin
lrwxrwxrwx  1 root root     19 Jul 12 21:33 skl_dmc_ver1.bin -> skl_dmc_ver1_26.bin
-rw-r--r--  1 root root 109636 Jul 21 17:03 skl_guc_ver1_1059.bin
lrwxrwxrwx  1 root root     21 Jul 21 17:03 skl_guc_ver1.bin -> skl_guc_ver1_1059.bin
-rw-r--r--  1 root root 128320 Jul 21 17:03 skl_guc_ver4_3.bin
lrwxrwxrwx  1 root root     18 Jul 21 17:03 skl_guc_ver4.bin -> skl_guc_ver4_3.bin

Le dernier paquet de pilotes semble pourtant être installé :

$ apt-cache policy xserver-xorg-video-intel
xserver-xorg-video-intel:
  Installed: 2:2.99.917+git20160325-1ubuntu1
  Candidate: 2:2.99.917+git20160325-1ubuntu1
  Version table:
 *** 2:2.99.917+git20160325-1ubuntu1 500
        500 http://ftp.uni-stuttgart.de/ubuntu xenial/main amd64 Packages
        100 /var/lib/dpkg/status

Que signifie exactement cet avertissement et comment puis-je le corriger ?

0voto

Byte Commander Points 99026

Voici un petit script basé sur les meilleures réponses pour automatiser le téléchargement et l'installation des fichiers blob du firmware dont le système se plaint.

Il exécute d'abord un simple update-initramfs -u en capturant les avertissements concernant les fichiers de firmware i915 manquants. Ensuite, il essaiera de télécharger directement les fichiers portant ces noms. depuis le dépôt git du firmware Linux dans un répertoire temporaire, avant de les déplacer vers votre dossier de firmware approprié avec les bonnes propriétés et permissions.

#!/bin/bash

WARNING_PATTERN='(?<=W: Possible missing firmware /lib/firmware/i915/)[\w.]+.bin(?= for module i915)'
DOWNLOAD_URL='https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915/{}'
FIRMWARE_DIR='/lib/firmware/i915'

shopt -s nullglob

WORKDIR="$(mktemp -d)"
cd "$WORKDIR" || exit 1
echo "Will check for missing i915 firmware and download blobs in '$WORKDIR'."

sudo update-initramfs -u |&
    grep -Po "$WARNING_PATTERN" |
    xargs -t -I {} curl -O "$DOWNLOAD_URL"

if [[ -n "$(shopt -s nullglob; echo ./*.bin)" ]] ; then
    sudo chown root: ./*.bin
    sudo chmod 644 ./*.bin
    sudo mv ./*.bin "$FIRMWARE_DIR"
    sudo update-initramfs -u
else
    echo 'No missing firmware found/downloaded.'
fi

rmdir "$WORKDIR"

Cela semble fonctionner correctement pour moi, mais sans garantie.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X