Linux from scratch

initials 76 -  
 initials 76 -
Salut à tous ;)

Je m'intéresse à LFS car je voudrais bien créer mon système Linux entièrement personnalisé.

Je me posais quelques questions avant de me lancer dans l'aventure...

LFS est ce le bon chemin pour au bout du compte:

-Avoir le tout dernier noyaux 2.6.30.4
-Avec uniquement les dernières versions de mes logiciels favoris
-Choisir mon gestionnaire de logiciels favoris entre Dpkg,Yum,Pacman et autres
-Avoir un système stable avec le stricte nécessaire

Ne serais ce pas identique de démarrer sur une image Arch ou Debian minimale et d'y compiler le dernier noyaux
ainsi que les derniers logiciels?

Le PDF que j'ai commencé à lire est très fascinant :)

Merci pour vos lumières.

--
If you want to go quickly, go alone. If you want to go far, go together.

67 réponses

  • 1
  • 2
  • 3
  • 4
Résumé de la discussion

Le débat porte sur Linux From Scratch (LFS) comme méthode pour créer un système Linux totalement personnalisé, avec des questions sur l’obtention du tout dernier noyau et l’intégration des logiciels récents. Des échanges comparent LFS à démarrer à partir d’une image minimale Arch ou Debian et d’y compiler les dernières versions, tout en visant la stabilité et une gestion logicielle adaptée. En pratique, les retours évoquent une courbe d'apprentissage prononcée et une gestion des mises à jour délicate, ce qui peut dissuader ceux qui cherchent simplicité tout en offrant une maîtrise avancée.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Ne serais ce pas identique de démarrer sur une image Arch ou Debian minimale et d'y compiler le dernier noyaux
    Le plaisir de te casser la tête de faire de A à Z, tu le laisses à qui?

    Tu parle de PDF depuis le site de LFS ?!
    1
    1. initials 76
       
      Salut ;)

      "Le plaisir de te casser la tête de faire de A à Z, tu le laisses à qui? "


      Oui, donc démarrer sur une image minimale c'est pas pareil, je viens de comprendre qu'avec LFS on démarre encore plus tôt (à zero quoi) et on doit construire tout l'arbre système sois même, ok vu :)

      "Tu parle de PDF depuis le site de LFS ?! "

      Oui la version Française du livre 6.4,


      bon y'a plus qu'a me lancer, merci ;)
      0
  2. initials 76
     
    Re,

    bon, quelque chose ne colle pas :(

    Partitionnement et création d'un point de montage d'un système de fichiers ext3 pas de problèmes.

    Il est monté dans /media/LFS/

    ensuite:

    "Les paquets et les correctifs téléchargés doivent être stockés quelque part où ils seront facilement disponibles,....."
    "Vous pouvez utiliser le répertoire $LFS/sources"
    "Pour créer ce répertoire, lancez, en tant qu'utilisateur root, avant de commencer la session de téléchargement :"
    mkdir -v $LFS/sources


    (ha?bon, ok il doit être créé sur ma racine à moi et pas encore sur la partition d'installation.....)
    "Donnez le droit d'écriture et le droit sticky sur ce répertoire"
    chmod -v a+wt $LFS/sources


    (chouette, ici je comprend que "a+wt" remplacent 777)

    ====>Je remarque qu'un nouveau répertoire nomé "sources" se trouve à la racine de ma Archlinux....Je continue et j'y colle tous les programmes demandés, de autoconf à zlib, en passant par binutils et gcc...Et surtout mon noyaux :)))

    chapitre suivant: CONFIGURER LA VARIABLE $LFS

    =====> À mon avis ils auraient du commencer par là, c'est une intuition.
    export LFS=/media/LFS

    et
    echo $LFS

    revoie bien:
    /media/LFS

    Ça roule.

    Créer le répertoire "tools"
    mkdir -v $LFS/tools


    ====> ha! cette fois ci un nouveau répertoire apparemment sur la racine de la nouvelle partition....À mon avis je vais devoir revenir en arrière et recommencer le répertoire "sources" au bon endroit... :S

    création du lien symbolique /tools dans votre système hôte:
    l
    n -sv $LFS/tools /


    je reviens en arrière pour "sources":

    mkdir -v $LFS/sources
    chmod -v a+wt $LFS/sources
    cp /sources/* /media/LFS/souces
    rm -Rf /sources/*
    rmdir /sources


    C'est rentré dans l'ordre...mais bon.

    ajouter l'utilisateur lfs:
    groupadd lfs
    useradd -s /bin/bash -g lfs -m -k /dev/null lfs
    passwd lfs
    chown -v lfs $LFS/tools  <===lfs devient le proprio de "tools"
    chown -v lfs $LFS/sources <====et celui de "sources" aussi

    ensuite je me connecte en tant sue "lfs"
    su - lfs

    À ce moment la lfs est sur le système hôte
    lfs@basile~:

    Configurer l'environnement et un nouveau bash-profile:
    cat > ~/.bash_profile << "EOF"
    >exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
    >EOF

    Créez maintenant le fichier .bashrc :
    cat > ~/.bashrc << "EOF"
    >set +h
    >umask 022
    >LFS=/media/LFS
    >LC_ALL=POSIX
    >PATH=/tools/bin:/bin:/usr/bin
    >export LFS LC_ALL PATH
    >EOF

    Enfin, pour avoir un environnement complètement préparé pour la construction des outils temporaires, chargez le
    profil de l'utilisateur tout juste créé :

    source ~/.bash_profile

    et la lfs se trouve dans son répertoire:
    lfs~$:


    Donc la tout va bien on est dans le "home" de lfs et on viens de créer son environnement.

    Le problème survient ensuite:(hé oui c'était trop beau)

    Installation de Binutils

    mkdir -v ../binutils-build


    ====> Pas les droits suffisants!

    Je dois compiler binutils en tant que "lfs" mais il me faut les droits root pour créer les répertoires..

    J"utilises donc:

    su -c 'mkdir -v ../binutils-build'

    Ça passe en root, mais à ce moment la je ne suis pas sur que le répertoire se trouve au bon endroit :S
    Bref je m'arrange pour qu'il se trouve bien à /media/LFS/ puisque je suppose que c'est la qu'il doit se trouver, ou peut être dans /tools ??? :(

    J'essaie la compilation
    CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
        --prefix=/tools --disable-nls --disable-werror


    C'est en lisant la commande que j'ai remarqué qu'il fallait décompresser les archives, on ne l'avais pas dit....
    ../binutils-2.18/configure

    no such file or directory
    , qu'est ce que je m'amuse :)))

    Je crois qu'on devrais d'abord m'expliquer ou décompresser les archives,et que signifient les deux points avant le slash lorsqu'on crée ou se place dans un répertoire :)
    exemple
    ../binutils-builds

    C'est à cause de ça que je ne sais plus ou je me trouve :(
    Et si lfs dans son environnement et en ayant créer des liens symboliques mais sans les droits root peut vraiment créer les bons répertoires au bon endroit?

    Je n'abandonnerai pas, mais je reprend depuis zero ;))

    Merci pour vos lumières :)

    0
  3. initials 76
     
    Zut un message complet(3) à disparu :(
    Je viens de passer 30 minutes à le rédiger pour rien :S
    0
  4. Nic0
     
    Salut

    de tout façon avec arch puisque c'est en roll release tu te retrouve avec les derniers programmes, et le dernier kernel (compilé, mais rien ne t'empèche de le faire).
    De plus comme il n'y as aucun environnement graphique par défaut, tu es vraiment libre (pour ma part openbox/pypanel/conky) et basta :p

    Je suppose que tu as de bonne connaissance pour te lancé dans ce genre d'aventure.

    Je dis juste que les raisons que tu as avancé ne sont pas selon moi les bonnes, si tu t'y connais très bien (tu compiles des kernels le matin avec le café au lait) c'est bien, sinon, pas certain que tu obtienne vraiment quelque chose de bien stable,

    je le dis une fois encore les raisons que tu donnes, avoir le dernier kernel, une distrib minimaliste et légère, ainsi que les dernière logiciels sortie corresponde tout à fait à archlinux

    bon courage en espérant t'avoir été utile.
    0
    1. initials 76
       
      Salut Nico, et merci pour les conseils ;)

      Oui, c'est utile, j'aime bien Arch, c'est d'ailleurs depuis ma Arch que je commence mon LFS.

      C'est vrai qu'elle est légère et minimaliste, le top du top.

      Je démarre LFS, quitte à obtenir un système instable, afin d'en apprendre beaucoup plus, car effectivement, je ne compile pas des kernels au déjeuner en buvant du café ;-D

      Disons que j'ai réussi à terminer ma Archlinux avec ce que je voulais dessus, j'en suis déjà fier,
      mais bon, je me lance à l'eau avec LFS, c'est sur que ça va me prendre du temps avant d'avancer d'un centimètre
      mais c'est tout benef pour moi :)

      Encore merci pour tes conseils ;)
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
         
        Salut,

        (compilé, mais rien ne t'empèche de le faire).
        Si tu n'as pas encore compilé un kernel, vu que tu t'intéresses à LFS alors rends toi plaisir. Il ne faut pas sauter ça ;-))
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,
    (chouette, ici je comprend que "a+wt" remplacent 777)

    Pas tout à fait ;-)
    Effectivement le résultat obtenu est 1777 mais sous le capot se passe autre chose ;-)

    a - All (Propriétaire, Groupe, Autres)
    + - ajoute droits
    w - Write (seulement) - octal (Propriétaire - 200, Groupe 20, Autres 2)
    t - sTicky bit - octal 1000
    Ce qui dit en fait que pour tout le monde donner le droit Write et sTicky bit ce qui donne en octal
    1000 + 200 + 20 + 2 = 1222

    Prenons 3 exemples

    1. les droits sur répertoire sont dr-xr-xr-x ce qui veut dire
    propriétaire  400+0+100  =500
    groupe        40+0+10    = 50
    autres        4+0+1      =  5
    Total                    =555

    Avec a+wt en fait on fait l'additin de 1222 + 755 = 1777

    2. les droits sur répertoire sont drwxr-xr-x ce qui veut dire
    propriétaire  400+200+100=700
    groupe        40+0+10    = 50
    autres        4+0+1      =  5
    Total                    =755


    Avec a+wt en fait on fait l'addition de 1022 + 755 = 1777
    Cette fois le propriétaires a déjà les droits d'écriture, donc le droits sera modifié au groupe et aux autres.

    3. a+wt -> résultat final différent de 1777, les droits sur répertoire sont drwx------
    lami20j@debian:~$ ls -ld rrr
    drwx------ 2 lami20j lami20j 4096 aoû  9 10:01 rrr
    lami20j@debian:~$ chmod -v a+wt rrr
    Le mode d'accès de `rrr' a été modifié à 1722 (rwx-w--wT).
    lami20j@debian:~$ ls -ld rrr
    drwx-w--wT 2 lami20j lami20j 4096 aoû  9 10:01 rrr


    Donc tu vois que cette fois on n'obtiens pas 1777
    En octal au debut
    propriétaire  400+200+100=700
    groupe        0+0+0      =  0
    autres        0+0+0      =  0
    Total                    =700


    Avec a+wt en fait on va additionner 1022 + 700 = 1722

    Conclusion :

    "a+wt" ne remplacent pas 777 même si en fonction des droits déjà existants a+wt permettra de compléter les droits pour arriver au final à 1777
    0
    1. initials 76
       
      Salut lami20j :)

      Merci pour ces précisions sur chmod et sur les valeurs 8-)

      ,à mon avis en reprenant à zéro je serai moins perdu dans ce que lfs fait et l'endroit ou il pose ses répertoire.

      J'utiliserai des ls -l pour retrouver les répertoires après création, je comprendrai mieux l'usage de ../

      Bon Dimanche ;)
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
         
        Salut,

        ../ c'est le répertoire parent
        ./ c'est le répertoire courant

        Donc tu montes d'un cran si tu veux dans l'arborescence
        lami20j@debian:~/rep$ ls -l
        total 4
        -rw-r--r-- 1 lami20j lami20j 6 aoû  9 13:18 fic
        lami20j@debian:~/rep$ cat fic
        salut
        lami20j@debian:~/rep$ ls -l ./
        total 4
        -rw-r--r-- 1 lami20j lami20j 6 aoû  9 13:18 fic
        lami20j@debian:~/rep$ cat ./fic
        salut
        lami20j@debian:~/rep$ ls -l ../rep/
        total 4
        -rw-r--r-- 1 lami20j lami20j 6 aoû  9 13:18 fic
        lami20j@debian:~/rep$ cat ../rep/fic
        salut
        
        0
      2. initials 76 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Ok, donc en te trouvant dans /rep

        c'est idem de faire:
        cat fic

        et
        cat ../rep/fic


        sauf que l'usage de ../ oblige à donner le nom du répertoire parent, vu ;)

        Je m'y remet.
        0
  7. Urielxx Messages postés 223 Statut Membre 46
     
    Salut initials 76,

    Bon courage pour ta découverte de la LFS, mais assure-toi de bien connaitre les bases de Linux/UNIX avant de te lancer dans l'exercice. Ca vaut peut-etre le coût de te familiariser un peu avec le shell (bash) et les commandes GNU/Linux en général au préalable si tu ne veux pas être frustré ou dégouté, parce que faire une LFS 'est assez long et nécessite un peu de maitrise préalable du sujet ! Par contre, c'est un excellent moyen de comprendre un système Linux dans le détail (au lieu de rentrer dans les guéguerres de distributions Linux).

    J'ai déjà fait plusieurs LFS (je suis ingénieur système Linux), mais ça date un peu, je ne peux que te conseiller de la patience, et surtout de bien bien lire et suivre la doc pas à pas : elle est (était) généralement bien faite pour ça. Par contre, le moindre oubli peut avoir des conséquences par la suite (genre si tu oublies un patch, ou une modification dans un script...)

    Par contre, la LFS présente un gros désavantage par rapport à des distributions classiques : elle est difficile à maintenir. Par exemple, si tu veux installer un nouveau produit, tu te retrouves vite à devoir chercher toutes les dépendances à la main, certaines lib devront être ugpradées, et ça impactera d'autres produits qui ne marcheront plus, etc, etc. Tout ce travail est habituellement fait par les distributeurs, qui vérifient les compatibilités de produits entre eux et packagent le tout. Exemple: si tu veux installer firefox, tu devras compiler toutes les libs qui sont utilisées, dont X11 (plusieurs dizaines de Meg de sources) et d'autres, et tu en auras pour des heures de compilations (je suis sérieux).

    Par expérience, je te conseille donc d'avoir un dual boot avec une distrib linux "classique", et ta LFS à coté, afin de ne pas devoir passer des heures à regarder des trucs se compiler sous pretexte que tu veux lire un DVD ou autre opération qui se font en 5 minutes sur une distrib.

    Celà dit, tu m'as l'air d'être très motivé ! Tu pourrais devenir un professionnel du sujet si tu poursuis dans cette voie !

    Bon courage à toi !
    0
    1. initials 76
       
      Salut Urielxx ;)

      C'est cool de me motiver,
      justement à propos de ce que tu conseillait au niveau des patches et de la doc à suivre strictement,
      j'ai pris la liberté de téléchargé des versions plus neuves de tous les logiciels, je me suis dit que de cette façon, je ne m'en tiendrais pas au copier/coller des lignes de compilation et je devrais ainsi les éditer de façon à compiler les nouvelles versions par rapport au livre.

      Je cite en exemple binutils,gcc,glibc,sed,grep,bash et le noyaux desquels j'ai pris les dernières versions
      (parfois jusqu'a 3 versions supérieures)


      ....Trop gourmand trop vite? :)

      "Par expérience, je te conseille donc d'avoir un dual boot avec une distrib linux "classique", et ta LFS à coté"

      Yes, je fais la LFS depuis ma Arch qui est elle terminée avec un 2.6.29....mais je ne veux pas encore y compiler un 2.6.30 j'aurais trop peur de l'abîmer.

      Donc LFS c'est le bon exercice à faire comme vous dites ;))

      @+
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
         
        Re,

        j'ai pris la liberté de téléchargé des versions plus neuves de tous les logiciels,

        Toutefois tu n'as pas tenu compte de leur recommandation ;-)
        Vu que tu ne l'as jamais fait, alors peut être qu'il faudra les écouter ;-))

        Nous vous recommandons fortement de ne pas utiliser de versions supérieures car les commandes de construction pour une version pourraient ne pas fonctionner avec une version plus récente. Les versions plus récentes pourraient aussi avoir des problèmes nécessitant des contournements. Ces derniers seront développés et stabilisés dans la version de développement du livre.
        0
      2. initials 76 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Re,

        "Toutefois tu n'as pas tenu compte de leur recommandation ;-)
        Vu que tu ne l'as jamais fait, alors peut être qu'il faudra les écouter ;-)) "


        Oui c'est vrai :S

        C'est beaucoup plus précis que je ne le croyais, on ne fait pas n'importe quoi avec n'importe quoi.

        Pour le moment la compilation de gcc avance bien et le make ne retourne pas encore de messages d'erreurs.

        Si à la fin j'obtiens un système stable, ce sera comme au poker: la chance du débutant :)
        0
      3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
         
        Re,

        Ben, non, il n'y a pas la chance. C'est toi qui est fort ;-)))
        0
  8. initials 76
     
    Bon apparemment je m'y suit retrouvé plutôt bien et il y avait une incohérence dans la doc lfs:

    "La documentation de Binutils recommande de construire Binutils en dehors du répertoire des sources, c'est-à-dire
    dans un répertoire de construction dédié :"


    donc en root (puisque lfs n'as pas les droits pour créer ce répertoire)
    su -c 'mkdir -v ../binutils-build'

    ensuite on se place dedans,mais entre temps on y a décompresser bintuil-2.19.tar.bz2
    cd ../binutils-build

    donc dans ce répertoire j'ai: bintuils-2.19 décompressé.

    Et pour compiler la commande donnée est:

    CC="gcc -B/usr/bin/" ../binutils-2.19/configure \
        --prefix=/tools --disable-nls --disable-werror


    Hors c'est normal que j'ai un "no such file or directory"

    puisqu'il faut entrer:
    CC="gcc -B/usr/bin/" ./binutils-2.19/configure \
        --prefix=/tools --disable-nls --disable-werror


    sans remonter d'un répertoire pour bintuils-2.19 puisqu'avec cd je suis déjà dans le répertoire parent (merci lami20j)

    Et la c'est passé, j'ai un début de début de début de système:
    lfs:~$ ls -l $LFS/tools/
    total 24
    drwxr-xr-x 2 lfs lfs 4096 Aug  9 16:42 bin
    drwxr-xr-x 4 lfs lfs 4096 Aug  9 16:40 i686-pc-linux-gnu
    drwxr-xr-x 2 lfs lfs 4096 Aug  9 16:40 include
    drwxr-xr-x 2 lfs lfs 4096 Aug  9 16:40 info
    drwxr-xr-x 2 lfs lfs 4096 Aug  9 16:40 lib
    drwxr-xr-x 3 lfs lfs 4096 Aug  9 16:40 man
    


    Voyons la suite :)

    0
  9. initials 76
     
    Yop :)

    Pour gcc c'est passé aussi (après 5h de compilation)

    lfs:~$ ls -l $LFS/tools/
    total 32
    drwxr-xr-x 2 lfs lfs 4096 Aug  9 22:16 bin
    drwxr-xr-x 4 lfs lfs 4096 Aug  9 16:40 i686-pc-linux-gnu
    drwxr-xr-x 3 lfs lfs 4096 Aug  9 22:10 include
    drwxr-xr-x 2 lfs lfs 4096 Aug  9 22:17 info
    drwxr-xr-x 6 lfs lfs 4096 Aug  9 22:17 lib
    drwxr-xr-x 3 lfs lfs 4096 Aug  9 22:10 libexec
    drwxr-xr-x 4 lfs lfs 4096 Aug  9 22:10 man
    drwxr-xr-x 4 lfs lfs 4096 Aug  9 22:17 share


    Je continue :)

    Tiens j'apprends une nouvelle commande:
    make mrproper


    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      Tu peux faire tout simplement ls -l /tools (enfin je suppose que tu as crée le lien symbolique ;-) )
      0
    2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      make mrproper n'est pas nécessaire dans ton cas vu que tu viens de commencer ;-)
      0
    3. initials 76 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      Re ;)

      Merci pour l'info.

      Je remarque que la présence de "root" est capitale pour pouvoir poursuivre, notamment pour certaines commandes, malgré qu'a chaque fois je met le mode 1777 et que j'attribue le nouveau répertoire à lfs...

      Exemple avec: Installation de Linux API Headers
      ce n'est pas renseigné dans la doc, mais pour les commandes suivantes:
      (dans le répertoire du nouveau noyau)
      make headers_check
      make INSTALL_HDR_PATH=dest headers_install
      cp -rv dest/include/* /tools/include

      En préparation à la compilation de glibc, il faut l'action de root pour ces deux ci:
      su -c 'make headers_check'
      su -c 'make INSTALL_HDR_PATH=dest headers_install'


      Idem pour le 'make' de glibc, sous peine d'avoir un stop avec error 2 dû à des restriction de permissions sur certains fichiers/répertoires :-/ ????

      Obligé de lancer (depuis le répertoire ../glibc-build)
      su -c 'make'


      est ce du au fait de l'utilisation d'outils du système hôte qui appartiennent à root?


      sûrement je pense...
      0
    4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
       
      Re,

      Affiche le résultat de
      ls -l /mnt/lfs
      
      0
    5. initials 76 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
       
      En fait j'ai monté LFS dans /media et non dans /mnt comme dans la doc (je suis chi**t :)))

      [initials@Basile /]$ ls -l /media/LFS
      total 24
      drwx------  2 root root 16384 2009-08-08 22:06 lost+found
      drwxrwxrwt  4 lfs  root  4096 2009-08-09 22:45 sources
      drwxrwxrwt 10 lfs  root  4096 2009-08-09 22:10 tools

      0
  10. bob031 Messages postés 8228 Statut Membre 473
     
    Bonjour,

    Très bien !

    Bon courage ....

    :-)
    0
    1. initials 76
       
      Salut bob :)

      C'est gentil de passer ;)

      @+
      0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Au cas où si tu rencontreras des soucis avec les paquets de versions plus récente ici tu trouveras les paquets utilisé pour LFS
    ftp://mirror.cict.fr/lfs/lfs-packages/development/
    On monte d'un cran et tu as même l'archive tar ;-)
    ftp://mirror.cict.fr/lfs/lfs-packages/
    0
    1. initials 76
       
      Excellent, il y à l'archive de la version 6.4 avec le noyau 2.6.27.4

      Merci ;)
      0
  12. Urielxx Messages postés 223 Statut Membre 46
     
    Concernant les versions à utiliser, je conseillerais quand même de ne pas tenter de changer. Je l'ai déjà fait pour la glibc et quelques autres produits, et ça a été une horreur pour avoir un système stable. Après, vu que tu es motivé, c'est toi qui voit ;-)
    0
    1. initials 76
       
      Re ;)

      Je te crois sur parole, je tente le coup pour au moins le finir, après je recommence si il le faut mais avec de meilleures bases :)

      0
  13. initials 76
     
    Bonsoir à tous,

    blocage ici lors du déplacement de l'éditeur de liens :(

    Ce n'est pas vraiment dans son déplacement, mais ensuite lors de l'édition du fichier specs de gcc avec sed:

    gcc -dumpspecs | sed 's@/lib/ld-linux.so.2@/tools&@g' \
      > `dirname $(gcc -print-libgcc-file-name)`/specs


    ===> pas de fichier de ce type :-/

    et c'est capital pour la suite de l'édition:

    GCC_FIXED=`dirname $(gcc -print-libgcc-file-name)`/include-fixed &&
    find ${GCC_FIXED}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; &&
    rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_FIXED}/*` &&
    unset GCC_FIXED


    et de la vérification de l'ensemble des outils:

    echo 'main(){}' > dummy.c
    cc dummy.c
    readelf -l a.out | grep ': /tools'


    qui doivent répondre:
    [Requesting program interpreter:
        /tools/lib/ld-linux.so.2]


    Sans ça impossible d'utiliser mes nouveaux outils ;)

    edit: effectivement (après un './configure')
    checking for C compiler default output file name... configure: error: C compiler cannot create executables


    Je cherche aussi de mon côté.

    Bonne nuit :)

    0
    1. initials 76
       
      C'est bon j'ai trouvé :))))

      Sur cette excellente page:
      http://www.mingw.org/wiki/SpecsFileHOWTO
      GCC will produce a specs file via the following command.

      gcc -dumpspecs > specs


      Sauf que je l'ai éditée en fonction de l'endroit ou mon gcc cherchais ce fichier:
      lfs:~$ gcc -dumpspecs > $LFS/tools/lib/gcc/i686-pc-linux-gnu/4.4.1/specs
      


      Et la sortie de la commande de vérification des outils est bien:
      lfs:~$ readelf -l a.out | grep ': /tools'
            [Requesting program interpreter: /tools/lib/ld-linux.so.2]
      


      Et cette fois ci le './configure' pour tcl8 est parti :))))

      0
  14. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Juste pour voir, affiche le résultat de la commande (exécute là dans une autre console)
    gcc -dumpspecs 
    0
    1. initials 76
       
      Bonjour,ok ;)

      C'est assez long :

      lfs:~$ gcc -dumpspecs
      *asm:
      %{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}   %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}
      
      *asm_debug:
      %{!g0:%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}}} %{fdebug-prefix-map=*:--debug-prefix-map %*}
      
      *asm_final:
      
      
      *asm_options:
      %{--target-help:%:print-asm-header()} %a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}
      
      *invoke_as:
      %{!S:-o %|.s |
       as %(asm_options) %|.s %A }
      
      *cpp:
      %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
      
      *cpp_options:
      %(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w} %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*} %{undef} %{save-temps:-fpch-preprocess}
      
      *cpp_debug_options:
      %{d*}
      
      *cpp_unique_options:
      %{C|CC:%{!E:%eGCC does not support -C or -CC without -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*&F*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{!MT:%{!MQ:%{MD|MMD:%{o*:-MQ %*}}}}}}} %{remap} %{g3|ggdb3|gstabs3|gcoff3|gxcoff3|gvms3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{fmudflap:-D_MUDFLAP -include mf-runtime.h} %{fmudflapth:-D_MUDFLAP -D_MUDFLAPTH -include mf-runtime.h} %{E|M|MM:%W{o*}}
      
      *trad_capable_cpp:
      cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}
      
      *cc1:
      %(cc1_cpu) %{profile:-p}
      
      *cc1_options:
      %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*&ansi&trigraphs} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{--help=*:--help=%(VALUE)} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{fmudflap|fmudflapth:-fno-builtin -fno-merge-constants} %{coverage:-fprofile-arcs -ftest-coverage}
      
      *cc1plus:
      
      
      *link_gcc_c_sequence:
      %{static:--start-group} %G %L %{static:--end-group}%{!static:%G}
      
      *link_ssp:
      %{fstack-protector:}
      
      *endfile:
      %{ffast-math|funsafe-math-optimizations:crtfastmath.o%s}    %{mpc32:crtprec32.o%s}    %{mpc64:crtprec64.o%s}    %{mpc80:crtprec80.o%s}    %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s
      
      *link:
      %{!static:--eh-frame-hdr} -m %(link_emulation) %{shared:-shared}   %{!shared:     %{!ibcs:       %{!static: 	%{rdynamic:-export-dynamic} 	%{!dynamic-linker:-dynamic-linker %(dynamic_linker)}} 	%{static:-static}}}
      
      *lib:
      %{pthread:-lpthread}    %{shared:-lc}    %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}
      
      *mfwrap:
       %{static: %{fmudflap|fmudflapth:  --wrap=malloc --wrap=free --wrap=calloc --wrap=realloc --wrap=mmap --wrap=munmap --wrap=alloca} %{fmudflapth: --wrap=pthread_create}} %{fmudflap|fmudflapth: --wrap=main}
      
      *mflib:
      %{fmudflap|fmudflapth: -export-dynamic}
      
      *link_gomp:
      
      
      *libgcc:
      -lgcc
      
      *startfile:
      %{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}    crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}
      
      *switches_need_spaces:
      
      
      *cross_compile:
      0
      
      *version:
      4.4.1
      
      *multilib:
      . ;
      
      *multilib_defaults:
      
      
      *multilib_extra:
      
      
      *multilib_matches:
      
      
      *multilib_exclusions:
      
      
      *multilib_options:
      
      
      *linker:
      collect2
      
      *link_libgcc:
      %D
      
      *md_exec_prefix:
      
      
      *md_startfile_prefix:
      
      
      *md_startfile_prefix_1:
      
      
      *startfile_prefix_spec:
      
      
      *sysroot_spec:
      --sysroot=%R
      
      *sysroot_suffix_spec:
      
      
      *sysroot_hdrs_suffix_spec:
      
      
      *cc1_cpu:
      %{mcpu=*:-mtune=%* %n`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
      } %<mcpu=* %{mintel-syntax:-masm=intel %n`-mintel-syntax' is deprecated. Use `-masm=intel' instead.
      } %{mno-intel-syntax:-masm=att %n`-mno-intel-syntax' is deprecated. Use `-masm=att' instead.
      }%{march=native:%<march=native %:local_cpu_detect(arch)   %{!mtune=*:%<mtune=native %:local_cpu_detect(tune)}} %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}
      
      *link_emulation:
      elf_i386
      
      *dynamic_linker:
      %{muclibc:%{mglibc:%e-mglibc and -muclibc used together}/lib/ld-uClibc.so.0;:/lib/ld-linux.so.2}
      
      *link_command:
      %{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) %l %{pie:-pie} %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}    %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}    %{static:} %{L*} %(mfwrap) %(link_libgcc) %o    %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib)    %{fprofile-arcs|fprofile-generate|coverage:-lgcov}    %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}
      
      lfs:~$ 

      0
  15. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Aussi
    dirname $(gcc -print-libgcc-file-name)
    0
    1. initials 76
       
      Re,

      Voila :)

      lfs:~$ dirname $(gcc -print-libgcc-file-name)
      /media/LFS/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.4.1
      lfs:~$ 


      Il est au bon endroit?
      0
  16. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Et ça

    gcc -dumpspecs | sed 's@/lib/ld-linux.so.2@/tools&@g'  > `dirname $(gcc -print-libgcc-file-name)`/specs_test

    Si tu as une erreur affiche le résultat sinon affiche le résultat de
    find /media/LFS -name '*spec*'
    0
    1. initials 76
       
      Voila,
      lfs:~$ gcc -dumpspecs | sed 's@/lib/ld-linux.so.2@/tools&@g'  > `dirname $(gcc -print-libgcc-file-name)`/specs_test
      lfs:~$ 


      aussi:
      lfs:~$ find /media/LFS -name '*spec*'

      Dans laquelle liste de réponses on trouve:
      /media/LFS/tools/lib/gcc/i686-pc-linux-gnu/4.4.1/specs_test
      /media/LFS/tools/lib/gcc/i686-pc-linux-gnu/4.4.1/specs


      :)
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
         
        Re,

        blocage ici lors du déplacement de l'éditeur de liens :(
        ..............
        ===> pas de fichier de ce type :-/


        Comment tu as eu ce blocage alors? ;-)

        Je pense que tu as du faire une erreur dans la commande puisque tu viens de me montrer qu'elle fonctionne ;-)

        La morale de l'histoire ;-)
        Quand tu as une erreur il faut copier la commande que tu as tapé pas celle du manuel qui semble être bonne ;-)
        0
      2. initials 76 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Salut :)

        À mon avis nos réponses se sont croisée:

        ce matin

        :))

        Sorry d'avoir suivi ensuite sans rien dire, mais comme je ne comprend pas tout, je pensait que tu faisait d'autres vérifications :|
        0
      3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
         
        Re,

        Ben, non justement.
        Tu as du faire une autre bidouille pour y arriver quand la commande de manuel fonctionne très bien.
        Tu vois ce que je veux dire?

        Dans ton message 30 tu disais que la commande de manuel ne fonctionne pas.
        Ben, à priori elle fonctionne selon ton message 42.
        0
      4. initials 76 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Exact, au départ elle ne fonctionnait pas, car d'après ce que je crois avoir compris, specs n'avait pas été généré par défaut par gcc.

        J'ai trouvé sur une page web sur gcc une commande qui génère un fichier specs et ça à résolu mon problème de "no such file or directory"

        et j'ai pu ensuite suivre la doc et utiliser sed pour éditer ce fichier :)

        Quand il s'agit de codage, "j'essaye de comprendre" mais je n'ai aucune idée d'où j'ai les pieds ;)

        C'est ça qui est chouette, même si c'est pas un jeu.

        Mais en tout cas merci énormément de me suivre.

        ;)
        0
  17. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Juste pour te dire que jusqu'à ce moment je n'ai eu aucune erreur ni d'être obligé d'installer en root (je parle pour kernel)

    lfs@debian:/mnt/lfs/sources$ gcc -dumpspecs | sed 's@/lib/ld-linux.so.2@/tools&@g' \
    > > `dirname $(gcc -print-libgcc-file-name)`/specs
    lfs@debian:/mnt/lfs/sources$ find /mnt/lfs/ -name '*specs*' 2>/dev/null
    /mnt/lfs/tools/lib/libgomp.spec
    /mnt/lfs/tools/lib/gcc/i686-pc-linux-gnu/4.3.2/specs
    et la suite
    lfs@debian:/mnt/lfs/sources$ echo 'main(){}' > dummy.c
    lfs@debian:/mnt/lfs/sources$ cc dummy.c
    lfs@debian:/mnt/lfs/sources$ readelf -l a.out | grep ': /tools'
          [Requesting program interpreter: /tools/lib/ld-linux.so.2]
    lfs@debian:/mnt/lfs/sources$
    
    0
    1. initials 76
       
      Je viens de comprendre ma bourde au niveau du mélange des propriétaire:

      Je travaille avec lfs dans le terminal, mais comme un grosbourrin, je décompresse graphiquement avec initials.

      Donc lfs propriétaire de l'archive, initials propriétaire du répertoire issu de l'archive.

      D'où mes problèmes de permissions.

      Je mériterais des baffes :)

      Bon, la je vais sûrement y passer ma soirée (voir même plus)
      J'ai une erreur dans le make de la seconde passe de gcc.

      /media/LFS/tools/bin/../lib/gcc/i686-pc-linux-gnu/4.4.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lcloog
      collect2: ld returned 1 exit status
      make[2]: *** [cc1-dummy] Error 1
      make[2]: Leaving directory `/home/gcc-build/gcc-4.4.1/host-i686-pc-linux-gnu/gcc'
      make[1]: *** [all-gcc] Error 2
      make[1]: Leaving directory `/home/gcc-build/gcc-4.4.1'
      make: *** [all] Error 2


      Je dois trouver pourquoi il ne trouve pas -lcloog
      J'y replonge ;)

      Encore merci pour la patience.
      0
  18. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    je décompresse graphiquement avec initials.
    Au début dans le manuel, il est bien préciser de travailler en lfs.
    Perso, je te conseille d'utiliser uniquement la console.
    0
  19. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Bon, la je vais sûrement y passer ma soirée (voir même plus)
    Toujours en vie ;-DDDD
    0
    1. initials 76
       
      Salut :)

      Oui toujours en vie, et cette fois ci en "restart" en suivant bien ce qui est écrit dans le livre et en utilisant les logiciels conseillés et en suivant les conseils des anciens.

      On va nulle part sans ;)

      Je m'accroche, je réapparaîtrai lorsque je serai de nouveau au delà de la deuxième passe de gcc.

      J'espère que je ne fais perdre son temps à personne ;)
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > initials 76
         
        Re,

        Chez moi c'est passé sans problèmes ;-)
        0
      2. initials 76 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Je te crois, mais comme j'avais pris gcc-4.4.1 au lieu de gcc-4.3.2 .....

        On ne fais pas (à mon niveau) n'importe quoi avec n'importe quoi :)

        Ça me fera les pieds :D
        0
  20. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    J'espère que tu n'as pas mélanger encore les droits.
    En fait au début l'ordre est plutôt comme ça

    export LFS=/mnt/lfs
    mkdir -pv $LFS
    mount -v -t ext3 /dev/$1 $LFS
    
    mkdir -v $LFS/sources
    chmod -v a+wt $LFS/sources
    mkdir -v $LFS/tools
    ln -sv $LFS/tools /
    groupadd lfs
    useradd -s /bin/bash -g lfs -m -k /dev/null lfs
    passwd lfs
    chown -v lfs $LFS/tools
    chown -v lfs $LFS/sources
    
    su - lfs
    cd $LFS/sources
    wget ftp://mirror.cict.fr/lfs/lfs-packages/lfs-packages-6.4.tar
    tar xf lfs-packages-6.4.tar


    Comme ça on es sûr que lfs est propriétaire des archives, pour ne plus avoir ton histoire de compilation en root pour le kernel
    0
    1. initials 76
       
      Re ;)

      "J'espère que tu n'as pas mélanger encore les droits."

      Non pas de danger je ne quitte plus le terminal et je décompresse et copie avec lfs depuis $LFS/sources (lequel contenu lui appartient à 100%) jusqu'a son /home/lfs qui lui appartient complètement aussi.

      Plus besoin de root désormais.

      Dans la doc, ce qui induit en erreur (quand on à pas compris l'usage de ../)
      C'est à ce moment ci:

      Lorsqu'on est fraîchement connecté en tant que lfs on se trouve dans son répertoire.

      Hors la première commande donnée pour créer un répertoire est:
      mkdir -v ../binutils/build

      Ce qui revient en fait à remonter d'un cran à coté des répertoire lfs et initials dans /home
      Et c'est fatalement que root doit intervenir.
      Hors le but (et j'ai compris ça ensuite) est de créer tous les répertoires hors sources dans /home/lfs/
      Donc la bonne commande départ pour moi est (depuis lfs)
      mkdir -v ./binutils-build


      Je recommence sur de meilleures bases et plus proprement :)


      0
  21. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Dans la doc, ce qui induit en erreur (quand on à pas compris l'usage de ../)
    C'est à ce moment ci:

    Lorsqu'on est fraîchement connecté en tant que lfs on se trouve dans son répertoire.

    Hors la première commande donnée pour créer un répertoire est:

    mkdir -v ../binutils/build


    Je pense que tu n'as pas compris.

    Donc la bonne commande départ pour moi est (depuis lfs)

    mkdir -v ./binutils-build

    Pas du tout, les commandes dans le livres sont correctes. Je les ai exécutées sans rien changer.
    C'est vrai qu'on peut tout changer, mais ça ne vaut pas le coup.
    Le répertoire de travail est /mnt/lfs/sources
    Si on se connecte en lfs c'est puisque lfs a des droits sur /mnt/lfs/sources et /mnt/lfs/tools

    En fait quand tu te connecte en lfs tu te trouveras en /home/lfs
    Ce que ne dit pas le livre c'est de faire un cd /mnt/lfs/sources pour se positionner dans le répertoire sources qui sera le répertoire de travail.
    su - lfs
    cd /mnt/lfs/sources

    C'est en ce moment que tu dois commencer.

    Encore une chose.
    Avant toute opération de configuration, patcher, compilation le livre suppose que tu as decompressé déjà l'archive et tu as fait un cd.

    Prenons le cas de binutils

    donc dans /mnt/lfs/sources tu as binutils-2.18.tar.bz2

    Donc tu es dans /mnt/lfs/sources
    tar xjf binutils-2.18.tar.bz2
    cd binutils-2.18

    et quand tu fais (donc tu te trouves en ce moment dans /mnt/lfs/sources/binutils-2.18 ) , il faut faire comme ça avec chaque archive (c'est l'étape N° 1)
    mkdir -v ../binutils-build


    En fait tu vas créer le répertoires binutils-build dans /mnt/lfs/sources qui est le répetoire parent de binutils-2.18

    A ne pas oublier qu'après la compilation et installation tu dois supprimer /mnt/lfs/sources/binutils-build et /mnt/lfs/sources/binutils-2.18
    0
    1. initials 76
       
      "Ce que ne dit pas le livre c'est de faire un cd /mnt/lfs/sources pour se positionner dans le répertoire sources qui sera le répertoire de travail."

      Argh!

      Bon, c'est passé grâce aux liens symboliques crées vers /tools ...heureusement (et par deux fois)
      À la prochaine je me positionne dans /sources c'est vrai que c'est plus cohérent que dans /home/lfs

      Mais:
      "La documentation de GCC recommande de ne pas construire GCC dans le répertoire des sources mais dans un répertoire de construction dédié"

      M'a induit en erreur :S

      C'est vrai que cette doc est très instructive, je plussoie, mais dédiées à ceux qui savent la lire...
      Avant d'appliquer le patch pour binutils comme donné en toute première ligne sur la doc,
      il faut avoir utilisé quelques fois cp, tar -jxf et mv....


      0
  • 1
  • 2
  • 3
  • 4