Bonjour,
Suite à mon problème https://forums.fedora-fr.org/d/74257-installation-pilote-wifi-bcm43142 , j’ai finalement réussi mais comme le parcours est semé d’embûches, je vais le décrire ici.
Le guide que j’ai suivi est ici
Attention: surveillez bien la nature du prompt $ ou # pour les commandes en mode administrateur
Après l’installation
$ sudo dnf update
$ reboot
pour mise à jour
Installation du pilote
Puis installation des dépôts rpmfusion libre et non libre (c’est surtout non libre qui importe ici le pilote étant propriétaire). Les explications sont ici ou encore ici
$ sudo dnf install kmod-wl
Cette installation installe les dépendances suivantes:
Une recherche du pilote avec sudo modinfo wl
ne donne rien. Mais après une nouvelle mise à jour avec
$ sudo dnf update
$ reboot
la même commande donne un résultat
[root@localhost-live ~]# modinfo wl
filename: /lib/modules/6.4.15-200.fc38.x86_64/extra/wl/wl.ko.xz
license: MIXED/Proprietary
rhelversion: 9.99
alias: pci:v*d*sv*sd*bc02sc80i*
depends: cfg80211
retpoline: Y
name: wl
vermagic: 6.4.15-200.fc38.x86_64 SMP preempt mod_unload
sig_id: PKCS#7
signer: localhost-live.home-1123306623
sig_key: 3C:F5:14:D0:40:1A:F6:C2:B5:14:C5:53:D2:D7:0B:D1:55:F2:67:06
sig_hashalgo: sha256
signature: 6C:2A:88:FF:EC:7C:BF:72:91:81:BB:5E:32:7A:7D:7E:66:6B:31:15:
76:D3:E6:95:8D:9B:62:24:B4:DE:88:22:EC:95:0F:04:B3:F1:6A:8F:
...
A4:81:AE:C2:4A:8F:5F:A9:4D:F9:82:8B:56:7F:FF:89:86:AA:BA:9F:
59:73:1D:BA:16:5C:34:70:15:8E:23:9A:77:C1:83:1F:89:FF:DB:30:
F0:FD:F1:B4:E4:60:4F:FD:C5:2E:09:DF:DE:83:87:3E:F0:81:64:D8:
AF:69:F2:F5:38:5F:EE:94:ED:0C:14:BA:D8:A6:4A:26:0A:6B:FE:74:
54:84:5B:DF:56:71:17:74:47:F9:16:96:CB:F1:A5:10:EF:5B:F3:1D:
23:DE:B4:D8:87:18:50:B6:EC:28:0F:EF
parm: passivemode:int
parm: wl_txq_thresh:int
parm: oneonly:int
parm: piomode:int
parm: instance_base:int
parm: nompc:int
parm: intf_name:string
[root@localhost-live ~]#
Elle nous dit que le module est /lib/modules/6.4.15-200.fc38.x86_64/extra/wl/wl.ko.xz et qu’il est sous forme compressée. C’est le premier piège. Il faudra le décompresser avant de le signer.
À ce stade, avant d’avoir décompressé, on va supprimer le secure boot pour vérifier que le module se charge.
Cette opération se fait en redémarrant et en entrant dans le micrologiciel (BIOS) de l’ordinateur.
Normalement le module doit se charger et le wifi apparaître dans les paramètres.
On oublie pas de refaire l’opération inverse pour remettre le secure boot.
Installations complémentaires
# dnf install openssl kernel-devel mokutil key-utils
Nous installons ici les ressources nécessaires à la création de clé de signature et à l’enrôlement de ces clés.
On peut également vérifier que le secure boot est activé
$ mokutil --ss-state
SecureBoot enabled
$
Maintenant on crée un fichier de configuration pour openssl
cat << EOF > configuration_file.config
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
O = Organization
CN = Organization signing key
emailAddress = E-mail address
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
Dans cette commande tirée du guide on remplace
- O= Organisation par 0= Nom Prenom en évitant les accents
- emailAdress = E-mail adress par emailAdress = nom@domain.extension (adresse correctement formée)
Création des clés de signature
# openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 \
-batch -config configuration_file.config -outform DER \
-out public_key.der \
-keyout private_key.priv
On n’est pas obligé de changer quoi que ce soit ici. Si on change le nom des clés, il faudra utiliser ces noms par la suite lors de la signature.
Décompression du module
Pour cela il nous faut xz
# dnf install xz
Puis on se place dans le dossier du module compréssé. Si vous avez oublié refaites
# modinfo wl
Dans mon cas (voir la commande plus haut)
# cd /lib/modules/6.4.15-200.fc38.x86_64/extra/wl
# ls -a
.. wl.ko.xz
# unxz wl.ko.xz
#ls -a
.. wl.ko
On dispose désormais d’un fichier .ko que l’on peut signer.
Pour cela on revient dans le dossier où se trouvent les clés
# cd /root
Signature
# /usr/src/kernels/$(uname -r)/scripts/sign-file \
sha256 \
private_key.priv \
public_key.der \
/lib/modules/6.4.15-200.fc38.x86_64/extra/wl/wl.ko
On s’attachera à :
- utiliser les noms de clés de la commande de création de ces dernières. Dans le doute un
ls -a
nous les rapelle.
- donner le chemin complet du module
Recompression du module signé
J’ai essayé sans recompresser le module et ça ne marchait pas. Je l’ai donc recompressé en me replaçant dans le dossier où il se trouve c.à-d. /lib/modules/6.4.15-200.fc38.x86_64/extra/wl
# ls -a
.. wl.ko
# xz -f wl.ko
# ls -a
.. wl.ko.xz
Enrôlement de la clé publique
Pour que le module puisse être chargé automatiquement au démarrage il faut enrôler la clé.
Pour cela on fait une requête d’enrôlement
# mokutil --import public_key.der
Ici il importe de se trouver dans le dossier /root et d’utiliser le bon nom de clé.
On vous demande d’entrer avec confirmation un mot de passe que vous utiliserez au prochain démarrage pour confirmer l’enrôlement.
Il faut maintenant re démarrer.
Au démarrage, il ne faut pas trop attendre lorsqu’un écran bleu roi vous demande de taper sur une touche pour enrôler votre clé. Sinon le boot va se faire et la requête d’enrôlement ci-dessus sera à refaire.
Puis à l’image suivante choisissez Enroll Mok.
Vous aurez à un certain moment la possibilité de voir la clé . Vous devez y retrouver les éléments de la requête.
Si vous avez confirmé l’enrôlement, on vous demandera le mot de passe utilisé lors de la requête d’enrôlement.
Ensuite, vous poursuivrez le boot.
Si tout c’est bien passé, le module devrait se charger avec le secure boot activé.