Forum Linux.noyau [compilation] 3 questions pour compiler mon 1er noyau sous OpenSuse !

Posté par  .
Étiquettes :
0
4
nov.
2008
Bonsoir tousse-toutes,


J'ai 3 petites choses à régler avant de roxoriser des mamans huitres avec mon kernel à moi qu'il sera tout beau (sachant que j'ai passé 1h30 à lire l'aide de chaque module avant de le virer implacablement hier soir, pour me mitonner un .config aux petits ognons) :)

1°) Nettoyer /usr qui a saturé suite à un précédent essai :
--------------------------------------------------------------------------------

En un mot comme en cent, j'ai été lourdement optimiste sur l'espace nécessaire, ce qui a aboutit à ceci :

tar: kernel-2.6.22.190.1le-kernel-du-yoj/./drivers/net/sis900.h: ne peut write: Aucun espace disponible sur le périphérique


Mais le plus bête c'est que make clean & make proper ne me nettoient pas ça correctement !! La partition reste à 100% d'occupation et je ne me vois pas trop aller faire le ménage à grand coup de rm -Rf * .

Comment puis-je faire le vide de manière intelligente et "rapide" ?

2°) Choisir un autre répertoire pour compiler que /usr/src :
--------------------------------------------------------------------------------

Comme je l'ai indiqué, je n'ai plus trop de place dans mon /usr et mes tentatives de compiler dans mon répertoire /home après y avoir copié les sources ont toutes misérablement échoué (même en root, même en copiant en mode preserve !???).

Donc je voulais savoir quel était le règlage à employer pour que l'espace nécessaire au processus de compilation soit cherché ailleurs que dans le répertoire où sont mes sources (à savoir /usr/src donc...).

A mon avis, cela devrait être dans le makefile et c'est mon dernier problème...

3°) Modifier son Makefile pour en faire quelque chose de bien :
--------------------------------------------------------------------------------------

... la syntaxe de ce fichier, c'est du bas-papou ou du crypto-moluques, en tout cas, ce n'est pas une langue que je pratique...

J'ai du mal à voir où régler le niveau d'optimisation (-s02 ou -s03 à terme, si je prends confiance en moi...).

Je n'ai pas compris comment fixer mon architecture (je ne peux pas utiliser -march=native compte tenu de ma version de gcc : 4.2.1 < 4.3). Donc ça devrait être du -march=athlon-xp en ce qui me concerne mais où fixer cette variable !? Je pense avoir identifié +/- le "secteur" concerné :

ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=

# Architecture as present in compile.h
UTS_MACHINE := $(ARCH)

KCONFIG_CONFIG ?= .config-yoj01

# SHELL used by kbuild
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi ; fi)

HOSTCC = gcc
HOSTCXX = g++
HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
HOSTCXXFLAGS = -O2


Mais je n'en suis pas certain !? Ou alors il y a d'autres fichiers importants à éditer, type kbuild ???

Amis insomniaques, vous l'aurez compris, j'ai quelques bases mais au moment de faire un grand pas dans l'abîme, tout;m'effraie, tout m'inquiète ! Saurez-vous me rassurer ??

Merci dans tous les cas et bon vent !!

Yojik77
  • # lien symbolique ?

    Posté par  . Évalué à 1.

    Salut
    2°) Tu peux faire un lien
    /home/user/src vers /usr/src

    David.
    • [^] # Re: lien symbolique ?

      Posté par  . Évalué à 1.

      Là je vais passer pour une nouille mais j'assume...

      De /home/user/src vers /usr/src ou de /usr/src vers /home/user/src ??

      Pour parler clair quand je fais un

      ln -vs /home/usr/src /usr/src

      Je me retrouve avec un lien symbolique /usr/src/src (forcément !)...

      Mais quand je fais un

      ln -vs /usr/src /home/usr/

      ..et bien cela capote ! Encore qu'au début, je passais par un lien vers le lien symbolique /usr/src/linux et que cela me posait d'autres problèmes vu que j'utilisais "make rpm" et que cette commande a besoin de répertoire */packages à la racine du dossier de compilation (du genre /usr/src/packages).

      La commande "make rpm" continue cependant de protester (ce qu'elle ne faisait pas quand je l'invoquais directement dans /usr/src) en raison de l'absence d'une archive de source type kernel-yoj1*.tar.

      Donc normalement, quand je lance mon "make menuconfig" dans /usr/src il me prépare un jeu de sources correspondant à mon .config.

      Mais quand je procède de même dans le lien symbolique /home/yoj/src -> /usr/src/ là, rien ne va plus !?!!

      Ou alors je m'emmêle en cherchant à faire un lien symbolique alors que ce n'est pas le but ??

      ---

      Arff :-( à force de jouer avec des liens en tout sens, j'ai écrasé tout mon /usr/src par un répertoire vide /home/usr/src...je suis bon pour re-télécharger les sources..la forme olympique moi ce soir :-(

      Gute Nacht und gute luck !

      Yoj'
      --
  • # Tout ça pour... ?

    Posté par  (site web personnel) . Évalué à 5.

    1) connais rien d'autres que make clean
    2) dé-tar les sources dans le répertoire de ton choix, ça n'a aucune importance (/usr/src, c'est une convention (FHS))
    3) Tu t'y connais vraiment en optimisation de C/compilation ?
    Parce que je doutes qu'il y ai un quelconque intérêt à alller trifouiller comme ça...

    Autant choisir la sub-architecture quivabien dans la config du kernel, tweaker deux trois options et bidules, ok, mais alors rempalcer les options du compilo dans le makefile du kernel linux...

    Autant faire du LFS, non ?
    • [^] # Re: Tout ça pour... ?

      Posté par  . Évalué à 1.

      1°) J'ai fini par comprendre. En invoquant "make rpm", la compilation se fait dans un répertoire de même niveau, packages/BUILDS/.

      Pour être plus clair, l'arborescence de /usr/src sur ma SuSe :

      /usr/src/
      ...............linux/ (lien symbolique vers le répertoire linux-2.6.28-***)
      ...............linux-obj/
      ...............packages/
      ..................................BUILDS/
      ..................................SOURCES/
      ..................................SRPMS/
      ..................................RPMS/

      Et bien les résidus de compilation étaient dans packages/BUILDS, donc je pouvais toujours m'acharner dans le répertoire "voisin" linux/ à coup de make clean et make proprer....


      3°) Non je n'y connais pas grand chose mais j'avais trouvé une doc Gentoo québécoise plutôt explicite...

      Ceci dit je suis un grand nigaud parce que vu le temps que j'ai passé à peaufiner mon .config, j'avais quand même trouvé le moyen de manquer le sous-menu "Type de processeur"...

      Forcément, une fois réglé le type de processeur dans ce menu, la suite va tout de suite mieux ;-p

      No comment, ...faudrait pas se lever....

      Yoj'
  • # Architecture

    Posté par  . Évalué à 2.

    Je n'ai pas compris comment fixer mon architecture
    La configuration du noyau permet comme dit plus haut de spécifier la bonne architecture pour laquelle le noyau sera compilé. Si tu veux jouer avec, c'est dans arch/x86/Makefile_32.cpu
    Mais bon, c'est rare qu'on en ait besoin en plus vu les différentes architectures déjà prévues dans la config du noyau. Personnellement, je ne m'en suis servi qu'une seule fois, pour un processeur AMD geode dont le support est tout neuf dans gcc-4.3.

Suivre le flux des commentaires

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