[Résolu] compiler kernel + modules sans installer

Salut,

D’habitude pour compiler un nouveau kernel j’utilise la méthode debian (make-kpkg) pour générer un paquet. Cette fois-ci je voudrais générer un binaire du kernel pour un autre système que celui sur lequel il est compilé, et donc ne pas l’installer. Il faut aussi que j’incorpore un module qui n’est pas fournit dans l’archive officielle du noyau. Avec:

$ make mrproper && make menuconfig $ make
j’obtiens le binaire du noyau (bzImage), mais qu’en est-il des modules, ils sont inclus dans bzImage?

Sinon pour le module supplémentaire, je décompresse la tarball et ça me donne l’aborescense ./modules/atl2, mais a partir de là je patauge (la doc du module donne les étapes pour compiler un .deb ou pour installer le module, ce n’est pas ce que je veux).

Bref, quelle est la marche a suivre pour compiler un kernel avec modules supplémentaires sans l’installer?

Merci bcp :slightly_smiling:

[Edit: j’ai oublié de préciser, le kernel compilé est utilisé par un bootloader PXE (un peu comme grub): il y a une option “kernel /path/vers/bzImage”, mais je ne sais pas quoi faire des modules en fait]

Il y a un truc que je ne comprends pas: ce n’est pas une debian pour laquelle tu compiles ?
Parceque ce n’est pas parceque tu utilises make-kpkg que tu installes forcément. Quand tu fais le make-kpkg, ça te génère des .deb que tu peux transporter sur une autre machine, mais pour installer, il faut que tu décide de faire les dpkg -i qui vont bien, non ?

Sinon, pour répondre plus précisément à ta question, tu peux compiler le bzImage, et l’installer ailleurs, et pour ce qui est de compiler les modules, c’est juste un make modules. Ensuite, pour les installer sur la machine ou tu les compiles, tu fais juste un make modules_install, et ça te les déploie là ou il faut dans /lib/modules/<…>/ . Par contre pour le transporter sur une autre machine, je ne vois pas trop, à part faire un tar de ce qui est installé aprés, dans cette arborescence, comment on peut les recopier ailleurs.
C’est pour ça aussi que la “méthode debian” est parfaite :wink:

Hello mattotop,

merci pour ta réponse :slightly_smiling:

J’aimerai bien pouvoir utiliser make-kpkg qui fait les choses plus simplement, mais il va falloir que je laisse de côté la méthode debian pour le coup car le kernel sert simplement d’image statique pour un installeur debian. La machine sur laquelle debian sera installée est équipée d’une configuration hardware un peu particulière (pas de disque dur entre autres) et comme je n’ai pas de clé USB je vais tenter une netinstall.

Malheuresement l’installeur réseau dispo sur les miroirs officiels debian possède un kernel qui ne reconnait pas le controleur ethernet de la machine, et l’installation a besoin du module pour se dérouler jusqu’au bout…
Donc il va falloir fournir à l’installeur un kernel doté du bon module, c’est un peu le bazar :smiley:

Entre temps j’ai appris quelques trucs:

  • les modules doivent etre incorporés à initrd
  • pour compiler un module sans l’installer: make SUBDIRS=/path/vers/module modules (à partir des sources du noyau)

Reste a trouver un outil pour générer le initrd correspondant au nouveau kernel et ça devrait le faire… :slightly_smiling:

:arrow_right: mkinitrd

Ce serait plutot mkinitramfs, avec les noyaux actuels.
Quoi qu’il en soit, si je ne me trompe pas, ça met dans l’initrd les modules puisés dans /lib/modules de toutes façons.

Par contre, si tu mets en dur dans le noyau tout les modules nécessaires à accèder au / de ton installer (les controleurs pour l’accés au CDrom, et la gestion de l’iso9660), tu peux te passer d’initrd.

Sinon, si ton problême est d’installer >une< machine, mais si tu as par contre un liveCD linux autre qui boote et reconnait ta carte, plutot que de remasteriser un CD d’install, tu peux faire ton install depuis le livecd en utilisant la méthode en debootstrap (cf les annexes de la doc d’install).

La machine cible n’a pas non plus de lecteur CD-ROM, mais je vais quand même utiliser debootstrap comme tu me l’a conseillé (+ chroot) pour avoir une mini-debian sur laquelle déployer le kernel & initrd.
En espérant que l’installeur arrive à booter sur ce kernel après (architectures différentes entre la machine qui compile et la machine à installer…).

Dans l’hypothèse ou je me passe d’initrd il faudrait mettre en dur tous les modules sans exception non? Si j’ai bien compris les modules sont stockés dans l’initrd, à moins qu’il y aie moyen de les regrouper ailleurs.

C’est-à-dire lancer debootstrap depuis l’installeur une fois que la machine a booté? Y a moyen d’avoir accès à une console pendant l’installation (la carte ethernet est détectée très tot)?

Merci encore pour ton aide.

Tu ne peux pas bêtement démonter le disque dur? C’est un peu brutal mais ça t’économisera du temps…non?

Sinon, quand je te parlais de la méthode d’install en debootstrap, c’est ça:
debian.org/releases/stable/i … 03.html.fr

J’étais parti dans la mauvaise direction, voila la doc que je cherchais:
http://wiki.debian.org/DebianInstaller/Modify/CustomKernel