logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 27-11-2020 22:42:57

prog-amateur
Membre
Inscription : 19-12-2018

[Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

Bonjour, pour cette demande, je fais appel à n'importe qui sachant à la fois compiler et vulgariser (car je rencontre des soucis sur mon premier essai) svp, merci. 

Historique :
J'ai une tablette HP (CPU Intel x5-Z8500) sur laquelle est installée debian (testing "5.9.0-3", GNOME, Wayland). Tout marche sauf la luminosité : quand je bouge le curseur, la luminosité ne change pas.
Après de (très) longues recherches, j'ai trouvé dans les bas fond d'Internet, une personne ayant un CPU de génération précédente et du coup ayant même problème.

Le plus intéressant est qu'il a pu résoudre le souci en compilant le noyau linux avec "deux changements" :


> $ diff /boot/config-5.8.0-0.bpo.2-amd64 config-t100ta
> # [...]
> < CONFIG_I2C_DESIGNWARE_PCI=m
> ---
> > CONFIG_I2C_DESIGNWARE_PCI=y
> 8327c8327
> < # CONFIG_PWM_CRC is not set
> ---
> > CONFIG_PWM_CRC=y
> # [...]



Il y rajoute 2 liens web qui l'ont aidé :
https://gitlab.freedesktop.org/drm/intel/-/issues/26
https://www.studioteabag.com/science/de … pro-linux/

Autant vous dire, j'ai pas tout compris sur sa façon de procéder. Voici le .diff complet :

Full kernel configuration diff:

> diff /boot/config-5.8.0-0.bpo.2-amd64 config-t100ta
> 5c5
> < CONFIG_CC_VERSION_TEXT="gcc-8 (Debian 8.3.0-6) 8.3.0"
> ---
> > CONFIG_CC_VERSION_TEXT="gcc (Debian 8.3.0-6) 8.3.0"
> 4134c4134
> < CONFIG_I2C_DESIGNWARE_PCI=m
> ---
> > CONFIG_I2C_DESIGNWARE_PCI=y
> 8327c8327
> < # CONFIG_PWM_CRC is not set
> ---
> > CONFIG_PWM_CRC=y
> 9138c9138
> < CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/debian-uefi-certs.pem"
> ---
> > CONFIG_SYSTEM_TRUSTED_KEYS=""
> 9296,9302c9296
> < CONFIG_DEBUG_INFO=y
> < # CONFIG_DEBUG_INFO_REDUCED is not set
> < # CONFIG_DEBUG_INFO_COMPRESSED is not set
> < # CONFIG_DEBUG_INFO_SPLIT is not set
> < # CONFIG_DEBUG_INFO_DWARF4 is not set
> < # CONFIG_DEBUG_INFO_BTF is not set
> < # CONFIG_GDB_SCRIPTS is not set
> ---
> > # CONFIG_DEBUG_INFO is not set



L'équipe officielle ne répond pas à sa demande de pouvoir mettre ce changement par défaut dans le noyau debian ce qui fait que je suis dans le même cas que lui à devoir compiler alors que j'avais jamais fait ça de ma vie, enfin bref...

Question :
Suite à l'aide d'un forumeur sympa, voici ma méthode de compilation pas à pas, mais ça ne fonctionne pas.
Est-ce que quelqu'un pourrait me corriger et conseiller sur la façon d'introduire le .diff svp ? Merci beaucoup :


# 1. Mise en place du répertoire où je compile :
mkdir ~/Documents/test-patch-kernel
cd ~/Documents/test-patch-kernel/

# 2. Téléchargement des outils nécessaires à la compilation et du noyau :
sudo apt install libncurses-dev build-essential libssl-dev libelf-dev rsync
sudo apt-get install linux-source-5.9
tar -xaf /usr/src/linux-source-5.9.tar.xz

# 3. Copie de la configuration de ma tablette vers le répertoire source :
cp ~/Documents/config-5.9.0-2-amd64 linux-source-5.9/.config
cd linux-source-5.9/

# 4. C'est là que je dois patcher le .diff : où placer le .diff et quelle commande exacte lancer ?

# 5. Compilation : à un moment on a un écran bleu, ai-je raison de tout laisser par défaut et faire "Exit" ?
make menuconfig
make deb-pkg -j8 LOCALVERSION=-mon-test-patch

# 6. Le forumeur me dit qu'on doit voir apparaitre 2 fichiers .deb (linux-image et linux-headers) : à quel endroit apparaissent-ils (à la racine, /home ou dans le répertoire où je compile ?) et faut-il les installer les deux ?
 



Merci énormément de votre aide, je commence à me démotiver sévère !


################################################################
EDIT : sujet résolu ici
################################################################

Dernière modification par prog-amateur (07-12-2020 15:27:00)

Hors ligne

#2 28-11-2020 08:41:02

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

prog-amateur a écrit :

où placer le .diff


N'importe où. Peu importe.

prog-amateur a écrit :

quelle commande exacte lancer ?


On applique un patch .diff avec la commande patch du paquet éponyme.
Mais dans ce cas précis tu peux aussi bien faire les modifications directement dans le fichier .config avec un éditeur de texte, ou bien passer par make menuconfig pour faire les changements (astuce : touche "/" pour rechercher la position d'une option de configuration).


Il vaut mieux montrer que raconter.

Hors ligne

#3 28-11-2020 11:38:37

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

Bonjour,

et j'en rajoute une couche avec

prog-amateur a écrit :

voici ma méthode de compilation pas à pas, mais ça ne fonctionne pas.


ça ne fonctionne pas n'est pas un message d'erreur valide pour pouvoir faire avancer le schmilblik roll


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#4 28-11-2020 12:31:45

prog-amateur
Membre
Inscription : 19-12-2018

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

raleur a écrit :

prog-amateur a écrit :

où placer le .diff


N'importe où. Peu importe.

prog-amateur a écrit :

quelle commande exacte lancer ?


On applique un patch .diff avec la commande patch du paquet éponyme.
Mais dans ce cas précis tu peux aussi bien faire les modifications directement dans le fichier .config avec un éditeur de texte, ou bien passer par make menuconfig pour faire les changements (astuce : touche "/" pour rechercher la position d'une option de configuration).



Voilà une réponse comme je les aime, merci ! Il faut comprendre que c'est la première fois que je compile et j'ai beaucoup hésité avant de me lancer (peur).
Donc en gros, je modifie mon fichier .config avec l'éditeur de texte et je suis le reste de ma procédure c'est bien ça ?


jpt a écrit :

Bonjour,

et j'en rajoute une couche avec

prog-amateur a écrit :

voici ma méthode de compilation pas à pas, mais ça ne fonctionne pas.


ça ne fonctionne pas n'est pas un message d'erreur valide pour pouvoir faire avancer le schmilblik roll



Alors, tu n'as pas tord, mais j'ai volontairement pesé le pour et le contre : mettre un long message de bug dans mon premier post qui est déjà très long, ça risquerait de ne pas donner envie de me lire, et donc de m'aider.

Dernière modification par prog-amateur (28-11-2020 12:32:21)

Hors ligne

#5 28-11-2020 12:49:40

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

prog-amateur a écrit :

Alors, tu n'as pas tort, mais j'ai volontairement pesé le pour et le contre : mettre un long message de bug dans mon premier post qui est déjà très long, ça risquerait de ne pas donner envie de me lire, et donc de m'aider.


Il est vrai que certains n'ont pas honte de balancer toute la sortie d'un dmesg ou d'un cat /var/log/Xorg.log.0 quand 2 ou 3 lignes suffiraient, et dans ton cas ça doit être pareil : s'il y a plein d'erreurs en sortie, c'est la première qui induit les autres, il suffit de se concentrer là-dessus.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#6 28-11-2020 17:49:02

prog-amateur
Membre
Inscription : 19-12-2018

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

Et bien je confirme que la compilation s'interrompt avec des messages d'erreurs. Avant de les communiquer, je souhaite vérifier une chose :

Je fais make menuconfig, puis je sauvegarde ("save") et je sors ("exit"), alors que j'ai déjà copié mon .config modifié dans le dossier : est-ce conforme (est-ce que ça n'annule pas mes modif) ?


Ensuite voici les messages de bug lors de la compilation (je mets les 1 ou 2 lignes avant/après les erreurs, mais je vous épargne ce qui me semble apparemment normal) :

D'abord il y a des avertissements en orange :

 
...
dpkg-source -i.git -b .
dpkg-source: info: utilisation du format source « 1.0 »
dpkg-source: avertissement: répertoire source « linux-source-5.9 » n'est pas <paquet_source>-<version_amont> « linux-5.9.9-mon-test-patch-5.9.9-mon-test-patch »
dpkg-source: avertissement: répertoire .orig linux-source-5.9.orig n'est pas <paquet>-<version_amont> (linux-5.9.9-mon-test-patch-5.9.9-mon-test-patch.orig demandé)
dpkg-source: info: construction de linux-5.9.9-mon-test-patch en utilisant le linux-5.9.9-mon-test-patch_5.9.9-mon-test-patch.orig.tar.gz existant
dpkg-source: info: construction de linux-5.9.9-mon-test-patch dans linux-5.9.9-mon-test-patch_5.9.9-mon-test-patch-1.diff.gz
dpkg-source: avertissement: ignoring deletion of file .scmversion
dpkg-source: avertissement: le fichier de différences modifie les fichiers amont suivants :
 .clang-format
 .cocciconfig
 .config.old
 .get_maintainer.ignore
 .mailmap
 CREDITS
 MAINTAINERS
 README
dpkg-source: info: choisissez le format « 3.0 (quilt) » pour utiliser des modifications séparées et documentées dans les sources amont, voir dpkg-source(1)
dpkg-source: info: construction de linux-5.9.9-mon-test-patch dans linux-5.9.9-mon-test-patch_5.9.9-mon-test-patch-1.dsc
dpkg-source: avertissement: information manquante pour le champ de sortie Standards-Version
 debian/rules build
...
 





Puis, une longue compilation où deux messages d'erreur apparaissent, mais pas en rouge :


...
  UPD     include/generated/asm-offsets.h
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  CC      init/main.o
  HOSTCC  usr/gen_init_cpio
  CC      certs/system_keyring.o
make[4]: ***  Aucune règle pour fabriquer la cible « debian/certs/debian-uefi-certs.pem », nécessaire pour « certs/x509_certificate_list ». Arrêt.
make[4]: *** Attente des tâches non terminées....
  CC      mm/filemap.o
  UPD     include/generated/compile.h
  CC      kernel/sched/core.o
  CC      arch/x86/entry/vdso/vma.o
  CC      fs/notify/inotify/inotify_fsnotify.o
  CC      fs/notify/dnotify/dnotify.o
  GEN     usr/initramfs_data.cpio
  SHIPPED usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  AR      usr/built-in.a
  CC      kernel/sched/loadavg.o
make[3]: *** [Makefile:1796 : certs] Erreur 2
make[3]: *** Attente des tâches non terminées....
...
 




Enfin, après toute la compilation, vient les messages d'erreur en rouge :


...
  CC      fs/fhandle.o
  CC      fs/dcookies.o
  CC [M]  fs/binfmt_misc.o
  CC [M]  fs/mbcache.o
  AR      fs/built-in.a
make[2]: *** [debian/rules:6 : build] Erreur 2
dpkg-buildpackage: erreur: debian/rules build subprocess returned exit status 2
make[1]: *** [scripts/Makefile.package:77 : deb-pkg] Erreur 2
make: *** [Makefile:1535 : deb-pkg] Erreur 2
 



Qu'en pensez-vous ? Merci pour votre aide !

Dernière modification par prog-amateur (28-11-2020 17:51:51)

Hors ligne

#7 28-11-2020 19:28:31

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

prog-amateur a écrit :

Je fais make menuconfig, puis je sauvegarde ("save") et je sors ("exit"), alors que j'ai déjà copié mon .config modifié dans le dossier : est-ce conforme (est-ce que ça n'annule pas mes modif) ?


Rien compris, désolé.
De ce que j'en sais, quand tu "save" ça récrit le .config, point barre.

prog-amateur a écrit :

D'abord il y a des avertissements en orange :

Dommage, on n'a pas la couleur...
Et sinon, ces avertissements ressemblent plutôt à des information, on passe

prog-amateur a écrit :

Puis, une longue compilation où deux messages d'erreur apparaissent, mais pas en rouge :

make[4]: ***  Aucune règle pour fabriquer la cible « debian/certs/debian-uefi-certs.pem », nécessaire pour « certs/x509_certificate_list ». Arrêt.
make[3]: *** [Makefile:1796 : certs] Erreur 2
 

Ça, c'est pas bon du tout, "Arrêt".

prog-amateur a écrit :

Enfin, après toute la compilation, vient les messages d'erreur en rouge :

make[2]: *** [debian/rules:6 : build] Erreur 2
dpkg-buildpackage: erreur: debian/rules build subprocess returned exit status 2
 

Et là on a une ligne "googlable", qui nous permet de trouver cette lecture et ça tombe bien, c'est ici que ça a été discuté -- et résolu, d'après ce que j'ai parcouru à la va-vite.


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

#8 28-11-2020 19:35:18

Debian Alain
Membre
Lieu : Bretagne
Distrib. : sid (unstable) / bullseye (stable)
Noyau : Linux sid 6.4.0-3-amd64
(G)UI : Gnome X.org (X11) / GDM3
Inscription : 11-03-2017
Site Web

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

prog-amateur , tu as pensé regarder ce tuto ? :

https://debian-facile.org/doc:systeme:kernel:compiler

Hors ligne

#9 29-11-2020 12:23:36

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

jpt a écrit :

"ça ne fonctionne pas" n'est pas un message d'erreur valide pour pouvoir faire avancer le schmilblik


Eh ! Mon texte !

jpt a écrit :

Il est vrai que certains n'ont pas honte de balancer toute la sortie d'un dmesg ou d'un cat /var/log/Xorg.log.0 quand 2 ou 3 lignes suffiraient


A condition de savoir quelles sont les 2 ou 3 lignes pertinentes. Si le demandeur s'adresse à un forum, c'est a priori parce qu'il ne sait pas.

prog-amateur a écrit :

Je fais make menuconfig, puis je sauvegarde ("save") et je sors ("exit"), alors que j'ai déjà copié mon .config modifié dans le dossier : est-ce conforme (est-ce que ça n'annule pas mes modif) ?


Oui, "make menuconfig" lit les options du fichier .config lorsqu'il démarre donc prend en compte les changements précédents du fichier.

prog-amateur a écrit :

make[4]: ***  Aucune règle pour fabriquer la cible « debian/certs/debian-uefi-certs.pem », nécessaire pour « certs/x509_certificate_list ».


Je suspecte que tu n'as pas modifié l'option CONFIG_SYSTEM_TRUSTED_KEYS dans .config.

As-tu bien compris le format du fichier diff ?
"<" préfixe une ligne du fichier original (à supprimer)
">" préfixe une ligne du fichier final (à ajouter)

Par contre la première colonne de ">" n'a rien à faire dans un fichier diff.

Dernière modification par raleur (29-11-2020 12:24:42)


Il vaut mieux montrer que raconter.

Hors ligne

#10 30-11-2020 12:08:26

prog-amateur
Membre
Inscription : 19-12-2018

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

Alors, juste un message pour vous confirmer que je vous ai tous lu et je vous en remercie (jpt : merci pour le lien, Debian Alain : merci aussi pour le lien, raleur : merci pour ton aide, tu m'as bien éclairé sur le format d'un fichier .diff !).

J'ai essayé hier vos astuces, j'ai également l'impression que c'était l’histoire des clés et il manquait aussi une dépendance bien que je n'ai pas reçu de message d'erreur explicite sur ça.
Bref, ça a compilé jusqu'au bout ! ... sauf que j'ai raté une commande : j'ai téléchargé le kernel 5.9.9 du coup ça ne démarre pas évidemment.
J'ai donc purgé la version 5.9.9 et je suis repassé en 5.9.0-3 comme avant. J'espère trouver un peu de temps pour recommencer proprement avec les bonnes commandes et vous tenir au courant, encore merci.

Hors ligne

#11 07-12-2020 14:48:33

prog-amateur
Membre
Inscription : 19-12-2018

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

Bon, je reviens vers vous pour vous confirmer que j'ai non seulement pu compiler debian avec le patch résolvant le problème de luminosité, mais j'ai aussi réussi à le faire démarrer. Il y avait 2 problèmes différents :

1. Ça ne bootait pas (dans GRUB : error: /boot/vmlinuz-5.9.11-generic has invalid signature) :
La compilation du kernel de mon précédent était réussie, mais le GRUB affichait le message d'erreur (c.f. ligne ci-dessus) car il y avait un problème de clé de sécurité : solution intermédiaire en attendant quelque chose de pérenne : désactiver le Secure Boot dans le BIOS.

2. Les informations des conseils venant de sources différentes, je mélangeais les étapes, ce qui faisait des doublons. Je propose donc ma façon de faire qui a fonctionné :


# 1. Installation des paquets nécessaires
sudo apt install --reinstall build-essential fakeroot dpkg-dev perl libssl-dev bc gnupg dirmngr libncurses5-dev libelf-dev flex bison

# 2. Faire un répertoire de compilation et y aller
mkdir ~/compilation && cd ~/compilation

# 3. Télécharger le kernel
apt search linux-source

# 4. Installer celui qui est affiché
sudo apt-get install linux-source-5.9

# 5. Décompresser les sources et s'y déplacer dans le répertoire
tar -xaf /usr/src/linux-source-5.9.tar.xz && cd linux-source-5.9

# 6. Copier la config de l'appareil
cp /boot/config-5.9.0-4-amd64 .config

# 7. Modifier le .config avec le patch (le patch est dans le dossier parent) et répondre ".config" à la question "quel fichier patcher ?"
patch -n -p1 < ../patch.diff



Le fichier patch.diff contient les informations suivantes :

diff /home/tv/Documents/Applications/Config_hp/config-5.9.0-4-amd64 .config
5c5
< CONFIG_CC_VERSION_TEXT="gcc-10 (Debian 10.2.0-19) 10.2.0"
---
> CONFIG_CC_VERSION_TEXT="gcc (Debian 10.2.0-19) 10.2.0"
4134c4134
< CONFIG_I2C_DESIGNWARE_PCI=m
---
> CONFIG_I2C_DESIGNWARE_PCI=y
8327c8327
< # CONFIG_PWM_CRC is not set
---
> CONFIG_PWM_CRC=y
9138c9138
< CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/debian-uefi-certs.pem"
---
> CONFIG_SYSTEM_TRUSTED_KEYS=""
9296,9302c9296
< CONFIG_DEBUG_INFO=y
< # CONFIG_DEBUG_INFO_REDUCED is not set
< # CONFIG_DEBUG_INFO_COMPRESSED is not set
< # CONFIG_DEBUG_INFO_SPLIT is not set
< # CONFIG_DEBUG_INFO_DWARF4 is not set
< # CONFIG_DEBUG_INFO_BTF is not set
< # CONFIG_GDB_SCRIPTS is not set
---
> # CONFIG_DEBUG_INFO is not set




Ensuite on termine :

# 8. Préparation du kernel sources (à l'écran bleu faire exit, ça prend en compte les précédents changements du .config)
make menuconfig

# 9. Enfin on compile de manière optimisée (surtout ne pas oublier de taper la touche Entrée pour valider les questions)
make deb-pkg -j8 LOCALVERSION=-mon-test-patch

# 10. Et normalement 4 fichiers .deb devraient apparaître dans le dossier parent, il faut les installer avec :

dpkg -i linux-image-5.9.11-mon-test-patch_5.9.11-mon-test-patch-1_amd64.deb
dpkg -i linux-headers-5.9.11-mon-test-patch_5.9.11-mon-test-patch-1_amd64.deb



J'espère que ça va aider les débutants comme moi à mieux comprendre comment compiler une version de Debian.

Dernière modification par prog-amateur (07-12-2020 14:50:02)

Hors ligne

#12 07-12-2020 16:56:09

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

prog-amateur a écrit :

1. Ça ne bootait pas (dans GRUB : error: /boot/vmlinuz-5.9.11-generic has invalid signature) :
La compilation du kernel de mon précédent était réussie, mais le GRUB affichait le message d'erreur (c.f. ligne ci-dessus) car il y avait un problème de clé de sécurité : solution intermédiaire en attendant quelque chose de pérenne : désactiver le Secure Boot dans le BIOS.


C'est normal car ton noyau n'est pas signé avec la clé de Debian.
Pour pouvoir activer le secure boot, il faudrait signer ton noyau avec ta propre clé, et déclarer celle-ci à GRUB et/ou au firmware UEFI. Je n'en sais pas plus, je n'ai jamais étudié le sujet.


Il vaut mieux montrer que raconter.

Hors ligne

#13 07-12-2020 18:40:01

jpt
Banni(e)
Distrib. : Debian 10.8
Noyau : Linux 5.7.10 (backports)
(G)UI : LXDE
Inscription : 12-09-2020

Re : [Résolu] Besoin d'aide pour recompiler le noyau Linux pour ma Debian

Salut,

prog-amateur a écrit :

# 10. Et normalement 4 fichiers .deb devraient apparaître dans le dossier parent, il faut les installer avec :

dpkg -i linux-image-5.9.11-mon-test-patch_5.9.11-mon-test-patch-1_amd64.deb
dpkg -i linux-headers-5.9.11-mon-test-patch_5.9.11-mon-test-patch-1_amd64.deb



J'espère que ça va aider les débutants comme moi à mieux comprendre comment compiler une version de Debian.

Bien joué, mais je ne vois que 2 fichiers, ça risque de perturber les débutants...

Et sinon, s'il y en a vraiment 4 (et seulement 4), en se positionnant dans le dossier parent à coups de cd, tu devrais pouvoir faire dpkg -i *.deb


AMD Ryzen3 3200G sur Gigabyte B450M & Make Love Not War

Hors ligne

Pied de page des forums