Linux from scratch

Fermé
Utilisateur anonyme - 8 août 2009 à 00:33
 Utilisateur anonyme - 26 août 2009 à 22:10
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.

A voir également:

67 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
8 août 2009 à 09:23
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
Utilisateur anonyme
8 août 2009 à 11:24
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
Utilisateur anonyme
9 août 2009 à 02:11
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
Utilisateur anonyme
9 août 2009 à 02:16
Zut un message complet(3) à disparu :(
Je viens de passer 30 minutes à le rédiger pour rien :S
0
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
Utilisateur anonyme
9 août 2009 à 13:12
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
9 août 2009 à 13:15
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
9 août 2009 à 10:26
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
Utilisateur anonyme
9 août 2009 à 13:19
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
9 août 2009 à 13:24
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
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
9 août 2009 à 15:37
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
Urielxx Messages postés 190 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 25 juin 2013 46
9 août 2009 à 15:01
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
Utilisateur anonyme
9 août 2009 à 15:50
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
9 août 2009 à 18:36
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
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
9 août 2009 à 19:39
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
9 août 2009 à 19:43
Re,

Ben, non, il n'y a pas la chance. C'est toi qui est fort ;-)))
0
Utilisateur anonyme
9 août 2009 à 16:52
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
Utilisateur anonyme
9 août 2009 à 22:24
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
9 août 2009 à 22:49
Re,

Tu peux faire tout simplement ls -l /tools (enfin je suppose que tu as crée le lien symbolique ;-) )
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
9 août 2009 à 22:53
Re,

make mrproper n'est pas nécessaire dans ton cas vu que tu viens de commencer ;-)
0
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
9 août 2009 à 23:38
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
9 août 2009 à 23:44
Re,

Affiche le résultat de
ls -l /mnt/lfs
0
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
9 août 2009 à 23:54
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
bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
9 août 2009 à 22:30
Bonjour,


Très bien !


Bon courage ....

:-)
0
Utilisateur anonyme
9 août 2009 à 22:32
Salut bob :)

C'est gentil de passer ;)

@+
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
9 août 2009 à 23:52
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
Utilisateur anonyme
9 août 2009 à 23:59
Excellent, il y à l'archive de la version 6.4 avec le noyau 2.6.27.4

Merci ;)
0
Urielxx Messages postés 190 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 25 juin 2013 46
10 août 2009 à 00:56
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
Utilisateur anonyme
10 août 2009 à 02:06
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
Utilisateur anonyme
10 août 2009 à 02:14
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
Utilisateur anonyme
10 août 2009 à 10:52
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 août 2009 à 11:08
Re,

Juste pour voir, affiche le résultat de la commande (exécute là dans une autre console)
gcc -dumpspecs 
0
Utilisateur anonyme
10 août 2009 à 13:42
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 août 2009 à 13:52
Re,

Aussi
dirname $(gcc -print-libgcc-file-name)
0
Utilisateur anonyme
10 août 2009 à 14:37
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 août 2009 à 15:01
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
Utilisateur anonyme
10 août 2009 à 15:06
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
10 août 2009 à 15:10
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
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
10 août 2009 à 16:17
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
10 août 2009 à 18:32
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
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
10 août 2009 à 20:50
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 août 2009 à 20:02
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
Utilisateur anonyme
10 août 2009 à 20:57
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
10 août 2009 à 21:09
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
11 août 2009 à 09:56
Salut,

Bon, la je vais sûrement y passer ma soirée (voir même plus)
Toujours en vie ;-DDDD
0
Utilisateur anonyme
11 août 2009 à 14:19
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > Utilisateur anonyme
11 août 2009 à 14:24
Re,

Chez moi c'est passé sans problèmes ;-)
0
Utilisateur anonyme > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
11 août 2009 à 14:34
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
11 août 2009 à 14:48
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
Utilisateur anonyme
11 août 2009 à 15:26
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
11 août 2009 à 15:37
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
Utilisateur anonyme
11 août 2009 à 15:50
"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