Salut,
Je cherche à compiler un noyau Linux à partir d'une machine pour une autre. Il ne s'agit pas ici d'architectures exotiques. La machine compilant est un Intel Core i5 M 520 (Fedora) et celle à qui est destiné le noyau, un Intel Dual Core E2180 (Debian), 64 bits tous les deux.
L'idée est donc à la manière des distributions de créer un noyau utilisant une architecture générique (ou du moins le PGCD des deux ;) et d'avoir au final une archive tar
qu'il ne restera plus qu'à extraire sur la machine cible.
La question est donc, comment obtenir un tel environnement de compilation ?
# Cross compilation
Posté par Marotte ⛧ . Évalué à -2. Dernière modification le 19 décembre 2011 à 20:28.
J'ai pas vraiment saisi ton besoin en fait. Pourrais-tu nous expliquer quel est ton besoin réel ?
Ce que tu cherches à faire c'est de la compilation croisée.
Sinon pour le PGDC je dirai que l'utilisation de VESA est un must.
Si la configuration de la compilation de ton kernel doit prendre en compte plusieurs architectures (et surtout la prise en compte de plusieurs configurations pour une même architecture), le mieux c'est de tout coller en module, non ?
[^] # Re: Cross compilation
Posté par Spack . Évalué à 1. Dernière modification le 19 décembre 2011 à 20:45.
Oui au final, je pense qu'il s'agit de compilation croisée. Cependant, l'architecture d'origine n'est pas si différente de l'architecture cible.
Au final je voudrais savoir comment monter un environnement de compilation pour produire un binaire (bzImage) pour ma cible sachant qu'il n'y a pas de grandes différences et accessoirement faire en sorte que lorsque je tape
make modules_install
que l'installation soit faite dans un répertoire que je pourrai compresser pour la distribution.PS: Si ça peut clarifier la chose comment font les distributions pour produire un noyau amd64 qui tourne partout (sans surprises) ? Je pense que la solution que je cherche devrais se rapprocher de ça...
[^] # Re: Cross compilation
Posté par Marotte ⛧ . Évalué à 2. Dernière modification le 19 décembre 2011 à 20:49.
Bah en laissant un max de fonctionnalités/pilotes disponibles sous forme de module ?
[^] # Re: Cross compilation
Posté par bubar🦥 (Mastodon) . Évalué à 3. Dernière modification le 21 décembre 2011 à 03:02.
c'est suffisant mais s'il veut faire ça propre il devra ré-générer quelques fichiers s'il le fait dans l'ordre décrit. Ce n'est pas nécessaire au bon fonctionnement de ce type de machine, puisque le système va très bien se débrouiller tout seul, mais c'est quant même mieux d'éviter de se retrouver avec des spécificités d'une machine sur une autre. Et ça peut éventuellement éviter qu'il se retrouve avec un initrd foiré (en utilisant un outil automatique de la distro) car fait ensuite sur un noyau installé comme ça.
Perso je partirai au plus simple, c'est souple et rapide :
--> ne pas faire de make {modules,}install sur la machine de compilation
--> mais le déporter sur les machines cibles.
Donc réaliser le tarball servant au déploiement avec/depuis l'arborescence du noyau + modules compilés. (et non sur les résultats de make {modules,}install) ça évite de refaire des roues très bien faites, et ça évite les éventuels pb cités plus haut.
ps : Spack : une fois que ta procédure de déploiement est en place, tu peux automatiser le process initial pour la récupération des kernels qui t'intéressent avec l'outil ketchup par exemple. (et, j'imagine, y appliquer les patchs)
bisous
[^] # Re: Cross compilation
Posté par NeoX . Évalué à 0.
editer le makefile pour mettre un parametre custom dans le nom du noyau
tu auras alors un /boot/vmlinuz-mon-noyau-custom, /lib/modules-mon-noyau-custom
...
à toi ensuite de compresser tout ca pour le mettre sur l'autre machine
[^] # Re: Cross compilation
Posté par Plinn . Évalué à 0.
Pour viser une architecture donnée :
(de x86_64 à x86_64 dans ton cas)
puis
éventuellement :
ou
Si tu veux compiler le kernel dans un autre répertoire que celui des sources :
Si tu veux installer les modules dans un autre répertoire :
(sinon il installe dans /lib/modules/kernel/)
# Tentative de réponse.
Posté par detail_pratique . Évalué à 1.
Version bobotrankil :
Une installation de Debian dans un chroot sur ta Fedora (yum install debootstrap), avec le minimum pour compiler, et obtenir de beaux linux-image_Spack_rev0016.8.NN.XX.deb.
Transférer, dpkg -i linux-image_Spack_rev0016.8.NN.XX.deb
Version Kerouac, déjà répondu.
[^] # Re: Tentative de réponse.
Posté par Spack . Évalué à 1.
Ah pas mal l'idée du debootstrap. En tout cas je m'attendais à une mise en place plus complexe mais bon j'ai vu trop gros... :D
# Pas de cross-compilation
Posté par Sébastien Koechlin . Évalué à 4.
Il n'y a pas d'environnement de cross-compilation a mettre en place puisque tu as la même architecture sur les deux machines.
Tu peux compiler ton noyau sur une machine, et au lieu de l'installer, faire un gros tar du kernel produit, des modules et éventuellement des fichiers annexes (.config, map...).
Si tu souhaites faire un paquet debian (un .deb) qui s'installe sur la debian et qui facilite l'installation (configuration automatique du système de boot; ménage de tous les fichiers à la désintallation...), alors je ne pense pas que les outils soient packagés sous Fedora; le mieux est d'installer une mini-debian dans un chroot avec les paquets nécessaires.
[^] # Re: Pas de cross-compilation
Posté par Spack . Évalué à 4.
Merci, c'est un peu sur le point de l'architecture que je coinçais je pensais que la compilation aurait pu activer des extensions supportés par le processeur compilant mais pas par l'autre.
Au final, j'ai compilé mon noyau et ça passe bien.
[^] # Re: Pas de cross-compilation
Posté par Sébastien Koechlin . Évalué à 2.
Ce n'est pas le cas, tu peux choisir, au moment où tu configures ton noyau, les optimisations et les restrictions à appliquer.
[^] # Re: Pas de cross-compilation
Posté par detail_pratique . Évalué à 2.
Et debootstrap permet justement d'installer de quoi se chrooter directement, de taper apt-get install debian-history gcc bison whatever && apt-get source linux-imageXX, sans plus de soucis.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.