Forum Linux.noyau fakeroot et cross compilation kernel depuis amd64 pour i386 ou i686

0
27
mar.
2015

Bonjour,

j'ai un PC type desktop relativement puissant et un portable MSI Wind U100.

Je voudrais compiler un kernel depuis les sources de kernel.org pour le portable sur mon desktop.

J'arrive à compiler les sources de kernel.org sans souci sur le desktop pour le desktop grâce à ma recette, mais je cherche à comprendre comment modifier ma recette pour compiler sur le desktop pour le portable.

Pour le moment j'ai trouvé une méthode que j'ai légèrement modifiée et j'ai réussi à obtenir un paquet deb linux-image-3.19.3-20150326_1+i_amd64.deb en faisant :

make-kpkg clean
cp ../config-3.16.0-4-686-pae .config && yes "" | linux32 make oldconfig
export CONCURRENCY_LEVEL=4
fakeroot linux32 make-kpkg  --cross-compile - --arch=i386 --initrd --revision=1+i --append-to-version=-`date +%Y%m%d` kernel-image

La compilation se passe bien, et d'après ce qui est dit j'ai bien un kernel 32bit mais étiqueté 64bit :

At this point you have a 32bit kernel inside a package labeled for 64bit arch

il dit de faire ensuite :

fakeroot deb-reversion -k bash ../linux-image-3.19.3-20150326_1+i_amd64.deb
dch warning: Previous package version was Debian native whilst new version is not
root@debian:/tmp/deb-reversion.sNgmX9/package# nano DEBIAN/control ## ici on remplace Architecture: amd64 par Architecture: i386
exit

Sauf que j'ai systématiquement l'erreur suivante :

mv: impossible d'évaluer " ../dpkg-name: info: déplacement de " package.deb\ " en " ./linux-image-3.19.3-20150326_1+i-0LOCAL.1_i386.deb\ " ": Aucun fichier ou dossier de ce type

il y a bien un bug de deb-reversion de 2009 qui semble correspondre.

D'où mes questions suivantes :
Dans la ligne de commande fakeroot je mets --arch=i386 l'architecture du portable (dont le .config debian du kernel actuel se nomme config-3.16.0-4-686-pae) c'est i386 ou i686?
Est-ce que je suis sur la bonne piste?
il y aurait-il un moyen de faire autrement ou mieux, par exemple en mettant d'autres options à la commande fakeroot ou make-kpkg et sans utiliser deb-reversion?

D'avance merci et bon week-end!

  • # mieux, je ne sais pas, autrement, oui

    Posté par . Évalué à 2.

    il y aurait-il un moyen de faire autrement ou mieux, par exemple en mettant d'autres options à la commande fakeroot ou make-kpkg et sans utiliser deb-reversion?

    le but est de modifié le fichier CONTROL dans lequel tu precises pour quelle archi est fait le paquet,

    un paquet .deb ce n'est qu'une archive qui peut etre decompressée, modifiée puis recompressée.
    et cela semble etre ce que cherche à faire 'deb-reversion"

    si deb-reversion ne fonctionne pas, tu peux faire la meme chose à la main,
    par contre je me souviens l'avoir fait, mais je ne retrouve pas mes notes.

    • [^] # Re: mieux, je ne sais pas, autrement, oui

      Posté par (page perso) . Évalué à 1.

      merci pour la réponse.

      J'ai essayé de modifier le script deb-reversion mais sans succès.

      J'ai donc cherché à extraire le .deb en ligne de commande et ce qui se fait en un clic-droit "extraire ici" en mode graphique est un peu plus long en ligne de commande :

      mkdir linux-image-3.19.3-20150326_1+i_i386 && cd linux-image-3.19.3-20150326_1+i_i386
      ar x ../linux-image-3.19.3-20150326_1+i_amd64.deb
      mkdir DEBIAN && tar xf control.tar.gz -C DEBIAN && rm control.tar.gz
      tar xf data.tar.xz && rm data.tar.xz
      ##à ce moment j'ai bien l'équivalent d'une extraction par clic-droit "extraire ici" en mode graphique, il me reste à éditer DEBIAN/control et à recréer un .deb
      nano linux-image-3.19.3-20150326_1+i_i386/DEBIAN/control ## ici on remplace Architecture: amd64 par Architecture: i386
      cd ..
      dpkg-deb -b linux-image-3.19.3-20150326_1+i_i386

      J'ai installé mon linux-image-3.19.3-20150326_1+i_i386.deb sur le portable et ça a fonctionné du premier coup!

      Je ne sais pas pourquoi mais je pensais qu'extraire le .deb puis éditer le fichier DEBIAN/control allait créer des erreurs type md5 alors que les md5 du fichier DEBIAN/md5sums ne concernent que les fichiers de /boot, /lib et /usr de l'archive .deb

      il me reste à élucider 1 point :
      il y aurait-il un moyen d'avoir directement un deb étiqueté i386, par exemple en mettant d'autres options à la commande fakeroot ou make-kpkg et sans utiliser deb-reversion ou extraire le deb, le modifier puis le recréer?

      wind0w$ suxX, GNU/Linux roxX!

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.