web-dev-qa-db-fra.com

Comment construire son propre noyau, en remplaçant +1 par la version du numéro de révision?

Je fais face à une période difficile avec Linux 3.13 de Trusty mais, c’est un autre sujet ( http://www.mail-archive.com/[email protected]/msg06775.html =), j’ai donc décidé de relayer le Linux 3.16 d’Utopic.

De plus, je devrai signer ma version Linux avec ma clé GPG et la télécharger plus tard sur mon PPA, mais je ne parviens pas à insérer +1 dans Linux revision version ... Quelqu'un peut-il m'aider avec cela? ?!

Voici la procédure à suivre pour le renvoyer manuellement (ce qui fonctionne tel quel sans cogner +1 à la version revision):

Instructions de: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

1- Ajouter le deb-src d'Utopic au sources.list de Trusty:

deb-src http://us.archive.ubuntu.com/ubuntu/ utopic main restricted universe multiverse

2- Exécutez les commandes suivantes:

mkdir ~/linux/source -p
cd ~/linux/source
Sudo apt-get install fakeroot
Sudo apt-get build-dep linux
apt-get source linux
cd linux-3.16.0/
debuild -uc -us
cd ..
Sudo dpkg -i linux-headers-3.16.0-4_3.16.0-4.9_all.deb linux-headers-3.16.0-4-generic_3.16.0-4.9_AMD64.deb linux-image-3.16.0-4-generic_3.16.0-4.9_AMD64.deb linux-image-extra-3.16.0-4-generic_3.16.0-4.9_AMD64.deb

3- Fait! Linux 3.16 d'Utopic, compilé et installé dans Trusty! Première phase d'accord ...

Mais maintenant, je dois modifier sa version revision, comme ceci: "3.16.0-5.0". Pour le signer avec mon GPG et le télécharger sur mon PPA.

Ensuite, pour cela, avant de le compiler et de l’empaqueter, j’ai édité le fichier "debian changelog":

cd linux-3.16.0/
vi debian.master/changelog

...ajouter:

linux (3.16.0-5.0) trusty; urgency=low

  [ Thiago Martins ]

  * Backporting it to Trusty

 -- Thiago Martins <[email protected]>  Sat, 19 Jul 2014 20:42:13 -0300

Maintenant, la commande debuild ne parvient pas à le conditionner, l'erreur suivante apparaît à la fin du processus:

debuild
...
Use of uninitialized value $filename in concatenation (.) or string at /usr/share/Perl5/Debian/Debhelper/Dh_Lib.pm line 410.
dh_systemd_start
Can't stat debian/linux-tools-3.16.0-5: No such file or directory
 at /usr/bin/dh_systemd_start line 127.
Can't stat debian/linux-cloud-tools-3.16.0-5: No such file or directory
 at /usr/bin/dh_systemd_start line 127.
Can't stat debian/linux-image-3.16.0-5-generic: No such file or directory
 at /usr/bin/dh_systemd_start line 127.
Can't stat debian/linux-image-extra-3.16.0-5-generic: No such file or directory
...
...
Can't stat debian/vlan-modules-3.16.0-5-generic-di: No such file or directory
 at /usr/bin/dh_systemd_start line 127.
Can't stat debian/ipmi-modules-3.16.0-5-generic-di: No such file or directory
 at /usr/bin/dh_systemd_start line 127.
Debug: install-indep
Debug: binary-indep
dh_installchangelogs -i
dh_installdocs -i
dh_compress -i
dh_fixperms -i
dh_installdeb -i
flock -w 60 /home/tmartins/linux/source/linux-3.16.0/debian/.LOCK dh_gencontrol -i
dh_md5sums -i
dh_builddeb -i
dpkg-deb: building package `linux-source-3.16.0' in `../linux-source-3.16.0_3.16.0-5.0_all.deb'.
dpkg-deb: building package `linux-doc' in `../linux-doc_3.16.0-5.0_all.deb'.
dpkg-deb: building package `linux-headers-3.16.0-5' in `../linux-headers-3.16.0-5_3.16.0-5.0_all.deb'.
dpkg-deb: building package `linux-tools-common' in `../linux-tools-common_3.16.0-5.0_all.deb'.
dpkg-deb: building package `linux-cloud-tools-common' in `../linux-cloud-tools-common_3.16.0-5.0_all.deb'.
Debug: install-perarch
# Add the tools.
...
...
dpkg-deb: building package `linux-tools-3.16.0-5' in `../linux-tools-3.16.0-5_3.16.0-5.0_AMD64.deb'.
dh_strip -plinux-cloud-tools-3.16.0-5
dh_installchangelogs -plinux-cloud-tools-3.16.0-5
dh_installdocs -plinux-cloud-tools-3.16.0-5
dh_compress -plinux-cloud-tools-3.16.0-5
dh_fixperms -plinux-cloud-tools-3.16.0-5
dh_shlibdeps -plinux-cloud-tools-3.16.0-5
dh_installdeb -plinux-cloud-tools-3.16.0-5
flock -w 60 /home/tmartins/linux/source/linux-3.16.0/debian/.LOCK dh_gencontrol -plinux-cloud-tools-3.16.0-5
dh_md5sums -plinux-cloud-tools-3.16.0-5
dh_builddeb -plinux-cloud-tools-3.16.0-5
dpkg-deb: building package `linux-cloud-tools-3.16.0-5' in `../linux-cloud-tools-3.16.0-5_3.16.0-5.0_AMD64.deb'.
Debug: module-check-generic
install -d /home/tmartins/linux/source/linux-3.16.0/debian.master/abi/3.16.0-5.0/AMD64
find /home/tmartins/linux/source/linux-3.16.0/debian/build/build-generic/ -name \*.ko | \
                sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > /home/tmartins/linux/source/linux-3.16.0/debian.master/abi/3.16.0-5.0/AMD64/generic.modules
II: Checking modules for generic...previous or current modules file missing!
   /home/tmartins/linux/source/linux-3.16.0/debian.master/abi/3.16.0-5.0/AMD64/generic.modules
   /home/tmartins/linux/source/linux-3.16.0/debian.master/abi/3.16.0-4.9/AMD64/generic.modules
make: *** [module-check-generic] Error 1
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
debuild: fatal error at line 1364:
dpkg-buildpackage -rfakeroot -D -us -uc failed

Que dois-je de plus besoin de changer, de bump +1 pour ma version de Linux (de 4.9 à 5.0)? Donc, le processus debuild finira bien… Je pense qu'il y a quelque chose à voir avec abi, mais je ne suis ni un mainteneur du noyau Ubuntu Linux (ni un codeur), alors je ne le fais pas. t savoir comment procéder à partir d'ici ...

J'apprécie vraiment toute aide!

Merci d'avance!

3
ThiagoCMC

La construction échoue lors de la vérification du module, ce qui, à mon avis, est dû au fait que /home/tmartins/linux/source/linux-3.16.0/debian.master/abi/3.16.0-4.9 n'existe pas. Vous pouvez ignorer la vérification en utilisant le paramètre skipmodule=true. Quand je construis avec fakeroot debian/rules, je vais faire ceci:

$ fakeroot debian/rules binary-headers binary-generic skipmodule=true

Ce paramètre devrait également s'appliquer à debuild.

Mais à un stade ultérieur, la construction peut échouer à nouveau lors de la vérification ABI. Vous devrez donc également utiliser skipabi=true. Ainsi, la commande complète deviendra:

$ fakeroot debian/rules binary-headers binary-generic skipmodule=true skipabi=true
1
Anthony Wong

J'ai rencontré la même erreur en essayant de construire mon propre noyau Ubuntu.

J'avais mis à jour debian.master/changelog à:

linux (3.13.0-107.154+studog-01) trusty; urgency=low

La construction a échoué (paraphrasé, j'ai perdu la sortie originale):

find /home/studog/linux-3.16.0/debian/build/build-generic/ -name \*.ko | \
            sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > /home/studog/linux-3.16.0/debian.master/abi/3.16.0-studog-0.0/AMD64/generic.modules
II: Checking modules for generic...previous or current modules file missing!

Notez que l'extraversion n'était pas tout à fait correcte dans la référence de chemin tentée, bien que le chemin correct (debian.master/abi/3.13.0-107.154 + studog-01) existe bel et bien. J'ai changé le changelog pour être à la place

linux (3.13.0-107.154+studog01) trusty; urgency=low

et cela a fonctionné. Il semble que le système de compilation ne bénéficie pas de versions supplémentaires contenant des tirets.

La solution de contournement d'Anthony Wong avec skipmodule et skipabi a également permis de corriger le problème, mais j'ai préféré changer la version supplémentaire.

0
studog