Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Hard-core Geek] Gentoo From Scratch ! [RESOLU][SCRIPT]
View unanswered posts
View posts from last 24 hours

Goto page 1, 2, 3  Next  
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Mon Jul 05, 2010 9:35 pm    Post subject: [Hard-core Geek] Gentoo From Scratch ! [RESOLU][SCRIPT] Reply with quote

Hello,

J'essaie de créer un Gentoo à partir de zéro, soit un "Gentoo From Scratch", et ce, à partir d'un script qui automatise les étapes.
A l'issue des tests, ce script sera publié pour information.

Ce script est assez délicat, et il est hautement recommandé de maîtriser LinuxFromScratch et Gentoo à partir d'un stage1.

Situation au 27/07/2010: opération réussie.

Voici les étapes de base :

  • Dans le manuel LinuxFromScratch 6.6, appliquer texto les chapitres 1 à 5
    pour les x86_64, permuter "lib64" et "lib", afin de respecter le baselayout de Gentoo
  • Dans le chapitre 6, suivre les instructions, mais en installant tout dans /tools et en n'appliquant pas "Re-Adjusting the Toolchain" qui sera fait lors du stage 0 de Gentoo. Dans le Chapitre 6, je n'ai finalement installé que : gmp mpfr zlib file pkg-config libtool autoconf automake
  • Installer, en s'inspirant du chapitre 6 : Python, rsync, wget
  • Installer Portage (voir code après). Dommage qu'il n'y ait pas de ./configure et Makefile, il faut tout faire à la main !
  • Amender la toolchain de LinuxFromScratch pour la rebasculer de /tools vers /bin
  • Emerger quelques paquets nécessaires (entre autres xz-util), plus ceux qui vont casser des dépendances circulaires
  • Compiler glibc et binutils
  • Ajuster ld.so.conf
  • Compiler gcc
  • recompiler ce qui a été emergé (pour être sûr)
  • emerger le stage 1
  • couper les ponts avec LinuxFromScratch (supprimer des liens symboliques et /tools)
  • bootstrapper
  • emerge -e system


Et voilà !
Le code est disponible sur mon site : http://www.xaviermiller.be/glfs/glfs.sh
_________________
Kind regards,
Xavier Miller


Last edited by xaviermiller on Fri Aug 20, 2010 5:59 pm; edited 4 times in total
Back to top
View user's profile Send private message
CryoGen
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1426
Location: Bamako - Mali - Afrique

PostPosted: Tue Jul 06, 2010 9:58 pm    Post subject: Reply with quote

Héhé, bonne continuation 8)
_________________
- CryoGen` on #gentoofr@irc.freenode.net
- ~amd64 / KDE4
- I'm the bone of my sword...
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Wed Jul 07, 2010 5:51 am    Post subject: Reply with quote

Merci :)

Je suis arrivé dans un stage3, je vais recommencer en diminuant la partie "LFS", et surtout, en installant tout dans un répertoire annexe (/tools), pour ne rien avoir dans /bin, /usr, .... à part 2-3 liens symboliques indispensables (/bin/sh par exemple).
Puis, supprimer les paquets non nécessaires, pour n'avoir que
- toolchain
- python
- portage
- librairies indispensables

on approche... :)
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Thu Jul 08, 2010 7:41 pm    Post subject: Reply with quote

Situation du jour : vu que ça se passe relativement bien en compilant LinuxFromScratch, puis portage, je passe à l'étape suivante : ne compiler que le strict minimum dans un répertoire qui ne polluera pas le système (/tools).
Et là, je galère avec le linker et les dynamic libraries. Dès que ldconfig se fait appeler, c'est la cata par après (C cannot create executables & co).

Apparemment, je dois un peu potasser la configuration de binutils, gcc et glibc ; j'ai un peu trop supprimé de code venant de LinuxFromScratch...
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
gglaboussole
l33t
l33t


Joined: 17 May 2005
Posts: 641
Location: Monbalen (47),France

PostPosted: Fri Jul 09, 2010 6:53 pm    Post subject: Reply with quote

Bravo pour ta motivation...
Avec ce soleil en plus... (même en Belgique ?)
Je suis un nostalgique du Stage 1, j'ai installé 4 Gentoo à partir du stage1 alors qu'il n'était plus soutenu, grâce à une doc officielle imprimée et précieusement conservée...
Finalement le seul stage3 de ma vie ce fut pour mon I7 et une installation à partir d'un stage funtoo et d'un live cd systemrescuecd...
Linux from scratch m'intéresse vivement surtout depuis que j'ai repris des études informatiques en fongécif...mais toujours relégué à plus tard faute de temps...
Alors merci à toi pour en faire l'expérience et la partagée... bon courage :wink:
_________________
On m'a dit que la terre tourne, alors j'attends que ma maison passe par ici...
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Fri Jul 09, 2010 9:25 pm    Post subject: Reply with quote

De mon côté, j'ai commencé avec une SuSE issue d'un jeu de CD Linux (*** Linux, je ne me souviens plus du nom). C'était en 1997. Puis j'ai découvert la joie de compiler un kernel (sur un K6 233, ça prenait des heures).

Puis LFS, je ne sais plus quand, vers 2000 à peu près. J'ai construit 2 machines : un routeur (le K6 avec un modem ADSL), et une workstation (un Athlon Thunderbird 533). Et arrivé à un environnement graphique (Gnome), je me suis dis : "ouf, mais que faire s'il y a une mise à jour ?". J'ai découvert Gentoo en 2004 (d'après mon profil).Toujours installé à partir d'un stage1.

Vu que le stage1 n'était plus à jour et que j'ai eu des soucis avec ceux de funtoo (des paquets différents comme perl, ...), j'ai regardé rapidement catalyst pour me rendre compte qu'un stage 1 c'est :
Code:
ROOT=/newroot USE="-* build" emerge -1 --nodeps baselayout
ROOT=/newroot USE="-* build" emerge --avec-les-options-qui-faut $(grep -v "\#" /usr/portage/profiles/default/linux/packages.build)


Je me suis dit : "et quid si on installait Portage manuellement sur une autre distro ?"

Et de là mon idée de Gentoo/LFS 8)

Pour le moment, je patauge dans ma tentative de ne prendre que le minimum de LFS, sa toolchain + libs de base. J'ai du un peu trop sucrer des choses, car la toolchain générée est corrompue.
Je vais repartir de LFS 6.6, et on verra.

La chaleur aide, on ne peut pas faire grand chose, à part faire la moule à la maison, enfermé dans le noir...
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Thu Jul 15, 2010 7:14 pm    Post subject: Reply with quote

Je crois que je tiens le bout :D
Création du stage1 en cours sur AMD64 :)
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Mon Jul 19, 2010 11:51 pm    Post subject: Reply with quote

Tu réalises que t'es en train de t'engager a nous rédiger une doc d'instal stage 0 là? :)

En tout cas bon courage, c'est une initiative sympa, car LFS ça devient vite dur a entretenir avec le temps!
Back to top
View user's profile Send private message
d2_racing
Bodhisattva
Bodhisattva


Joined: 25 Apr 2005
Posts: 13047
Location: Ste-Foy,Canada

PostPosted: Tue Jul 20, 2010 3:04 am    Post subject: Reply with quote

C'est clair que ça va prendre un Wiki.

Une LFS avec Portage, ça devrait bien s'entretenir :P
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Tue Jul 20, 2010 6:23 am    Post subject: Reply with quote

Oui, je devrai rédiger un article complet expliquant les problèmes rencontrés et solutions apportées.

Pour l'instant, je bute avec les liens dynamiques : le stage 1 se linke avec LinuxFromScratch, et c'est pas bien du tout : une fois que je coupe le lien avec LFS, ça casse...

Je vais devoir potasser la doc de binutils et gcc...
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Tue Jul 20, 2010 7:05 pm    Post subject: Reply with quote

J'ai passé le gros noeud 8)
Un stage 1 a été généré, je recommence mon script en le laissant tourner jusqu'au stage 3. YES !!!

Après, test en partant d'autre chose qu'un Gentoo (donc exit SystemRescueCD), par exemple le CD de LinuxFromScratch ou Ubuntu.

Pour info, voici les étapes :

  • suivre les instructions pour LinuxFromScratch, mais en changeant 2 petites choses :

    • en x86_64, permuter lib64 et lib au niveau des liens, sinon baselayout se casse la figure
    • tout configurer avec --prefix=/tools, en ne prenant que le nécessaire (pas besoin de grub, inetutils, ...)

  • installer portage dans /tools:

    Code:
    mkdir -p /tools/share/portage/config
    mkdir -p /tools/lib/portage
    cp -a bin pym /tools/lib/portage
    for f in archive-conf dispatch-conf emaint emerge-webrsync env-update etc-update fixpackages quickpkg regenworld
    do
        ln -s ../lib/portage/bin/$f /tools/sbin/$f
    done
    ln -s env-update /tools/sbin/update-env
    ln -s etc-update /tools/sbin/update-etc
    cp cnf/make.globals cnf/sets.conf /tools/share/portage/config
    for f in ebuild egencache emerge portageq repoman
    do
        ln -s ../lib/portage/bin/$f /tools/bin/$f
    done
    cp -r cnf/logrotate.d /etc
    cp cnf/dispatch-conf.conf /etc
    cp cnf/etc-update.conf /etc
    ln -s ../tools/share/portage/config/make.globals /etc/make.globals
    old_pwd=$PWD
    cd $ROOT/etc
    case $(uname -m) in
        i?86)
       ln -s ../usr/portage/profiles/default/linux/x86/10.0 /etc/make.profile
       ;;
        x86_64)
       ln -s ../usr/portage/profiles/default/linux/amd64/10.0/no-multilib /etc/make.profile
       ;;
    esac
    echo USE=\"-fortran -berkdb -hal\" > /etc/make.conf
    echo ACCEPT_KEYWORDS=\"~$(case $(uname -m) in i?86) echo x86 ;; x86_64) echo amd64;; esac)\" >> /etc/make.conf
    echo CHOST=\"$(uname -m)-pc-linux-gnu\" >> /etc/make.conf
    echo MAKEOPTS=\"$MAKEOPTS\" >> /etc/make.conf
    cat >> /etc/make.conf << "EOF"
    CFLAGS="-O2 -pipe -fomit-frame-pointer -march=native -mtune=native"
    CXXFLAGS="${CFLAGS}"
    LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--hash-style=gnu -Wl,--as-needed"
    EMERGE_DEFAULT_OPTS="--with-bdeps n --root-deps"
    FEATURES="candy parallel-fetch"
    SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
    EOF
    mkdir /etc/portage
    echo  sys-apps/portage > /etc/portage/package.unmask
    cd $ROOT/usr
    if [[ -f $DISTFILES/portage-snapshot.tar.bz2 ]]
    then
        echo --- unpacking Portage snapshot...
        tar xpf $DISTFILES/portage-snapshot.tar.bz2 || exit 1
    fi
    mkdir -p $ROOT/usr/portage/distfiles
    if [[ -f $DISTFILES/portage-distfiles.tar ]]
    then
        echo --- unpacking some distfiles...
        cd $ROOT/usr/portage/distfiles
        tar xf $DISTFILES/portage-distfiles.tar || exit 1
    fi
    cd $old_pwd

    if [[ ! $(grep portage /etc/passwd) ]]
    then
        echo portage:x:250:250:portage:/var/tmp/portage:/bin/false >> /etc/passwd
    fi
    if [[ ! $(grep portage /etc/group) ]]
    then
        echo portage::250:portage >> /etc/group
    fi
    emerge --info || exit 1;
    emerge  --sync || echo ignored;

  • construire le stage 1
    Code:
        ROOTPATH="/usr/bin:/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin" ROOT=$ROOT USE="-* build" emerge -1 --noreplace --nodeps baselayout || exit 1
        ROOTPATH="/usr/bin:/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin" emerge -1 --nodeps baselayout || exit 1
        export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/tools/lib

        ROOTPATH="/usr/bin:/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin" USE="-* build" emerge -1 --nodeps --noreplace automake-wrapper automake pax-utils xz-utils sandbox file linux-headers timezone-data glibc openrc portage || exit 1
        cat > /etc/locale.gen <<"EOF"
    en_US ISO-8859-1
    en_US.UTF-8 UTF-8
    fr_BE ISO-8859-1
    fr_BE@euro ISO-8859-15
    fr_BE.UTF-8 UTF-8
    EOF
        env-update || exit 1
        source /etc/profile
        export PATH=$PATH:/tools/bin
        ROOTPATH="/usr/bin:/bin:/sbin:/usr/sbin:/tools/bin:/tools/sbin" USE="-* xml" emerge -1e $(grep -v "\#" /usr/portage/profiles/default/linux/packages.build) || exit 1



Le reste, c'est comme pour un stage 1:
Code:
/usr/portage/scripts/bootstrap.sh && emerge -e system

_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
Da_Risk
n00b
n00b


Joined: 13 Jul 2006
Posts: 28
Location: Paris

PostPosted: Mon Jul 26, 2010 8:28 am    Post subject: Reply with quote

Alors moi je dis Felicitations !!!! :D
Je m'en vais tester tout ca dans une vm :)
_________________
1 + 1 = 3
Back to top
View user's profile Send private message
d2_racing
Bodhisattva
Bodhisattva


Joined: 25 Apr 2005
Posts: 13047
Location: Ste-Foy,Canada

PostPosted: Mon Jul 26, 2010 1:54 pm    Post subject: Reply with quote

Good good, ça avance bien ton truc :P
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Mon Jul 26, 2010 1:57 pm    Post subject: Reply with quote

Ouiche.

Mais je patauge toujours dans la toolchain : le stage1 généré pointe vers le mauvais "ld-linux", et ne chroote pas.
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Mon Jul 26, 2010 9:09 pm    Post subject: Reply with quote

J'ai trouvé : il faut "amender" les spécifications de GCC pour pointer vers /lib(64)/ld-linux.so. De là, ça semble aller, la toolchain est stabilisée et pointe à nouveau vers /lib(64).

Je lance le script pour la nuit, on va voir où il arrivera : dans le chroot du stage3 ou crashé avant ? 8)
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
d2_racing
Bodhisattva
Bodhisattva


Joined: 25 Apr 2005
Posts: 13047
Location: Ste-Foy,Canada

PostPosted: Tue Jul 27, 2010 2:25 pm    Post subject: Reply with quote

Et puis, est-ce que cela a fonctionné ?
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Tue Jul 27, 2010 5:30 pm    Post subject: Reply with quote

C'est tout bon !!!!!

Le stage 3 a planté, "comme d'habitude", suite à une dépendance circulaire avec shadow, ce qui arrive systématiquement avec un stage1.
Mais c'est bien un stage 2 "pur Gentoo", qui ne dépend plus des outils "LinuxFromScratch"

Prochaine étape : simplifier en minimisant les paquets à compiler "à la mano", vérifier les pré-requis du système hôte et télécharger les paquets nécessaires... puis publier le tout..
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3519
Location: Alsace (France)

PostPosted: Wed Jul 28, 2010 3:16 am    Post subject: Reply with quote

\o/
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Wed Jul 28, 2010 8:08 am    Post subject: Reply with quote

Comme tu dis ;)

Par contre, c'est toujours aussi galère de partir d'un stage 1 : dépendances circulaires, voire même self-dépendance (des modules python dans cracklib qui nécessitent que cracklib soit installé -- vais devoir ouvrir un bug à ce sujet).
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
d2_racing
Bodhisattva
Bodhisattva


Joined: 25 Apr 2005
Posts: 13047
Location: Ste-Foy,Canada

PostPosted: Wed Jul 28, 2010 9:09 pm    Post subject: Reply with quote

Beau travail :P
Back to top
View user's profile Send private message
Poussin
l33t
l33t


Joined: 08 Jun 2007
Posts: 659
Location: Liège

PostPosted: Wed Jul 28, 2010 10:09 pm    Post subject: Reply with quote

ah si j'étais la moitié moins doué que toi :oops:
Back to top
View user's profile Send private message
d2_racing
Bodhisattva
Bodhisattva


Joined: 25 Apr 2005
Posts: 13047
Location: Ste-Foy,Canada

PostPosted: Thu Jul 29, 2010 1:54 am    Post subject: Reply with quote

Avec de la patience et de la volonté, on peut accomplir de grande chose.
Back to top
View user's profile Send private message
Poussin
l33t
l33t


Joined: 08 Jun 2007
Posts: 659
Location: Liège

PostPosted: Thu Jul 29, 2010 8:21 am    Post subject: Reply with quote

Ca reste un niveau de maitrise de gentoo et de l'archinechture gnu/linux que je n'ai pas encore :)

Amender la toolchain, je ne sais déjà pas ce que ça veut dire :p

Mais c'est certain, d'ici quelques mois, je vais avoir un peu de temps, je tenter LFS. Dommage qu'il n'y ait plus de doc et le nécessaire pour gentoo stage[1|2]. Je savais que j'aurais du essayer ça jadis ^^

Faut que je tente debian aussi (bouuuhouuuuu), ça peut être utile, c'est rare de devoir administrer du gentoo au boulot :) Mais je suis tellement habitué à cette philosophie gentoo, une fois installé, sauf gros pépin, tu ne dois plus jamais faire que des mises à jours, que passer à autre chose tiens du calvère :). Avec les debian-like tu peux te brosser...
Back to top
View user's profile Send private message
d2_racing
Bodhisattva
Bodhisattva


Joined: 25 Apr 2005
Posts: 13047
Location: Ste-Foy,Canada

PostPosted: Thu Jul 29, 2010 11:48 am    Post subject: Reply with quote

J'ai jamais tenté une LFS, mais il parraît que c'est bien, sauf que pour les majs c'est l'enfer.

Sauf, si on arrive à faire une LFS avec portage :P
Back to top
View user's profile Send private message
xaviermiller
Bodhisattva
Bodhisattva


Joined: 23 Jul 2004
Posts: 8706
Location: ~Brussels - Belgique

PostPosted: Thu Jul 29, 2010 11:53 am    Post subject: Reply with quote

Je vais ajouter le téléchargement des paquets nécessaires, puis publierai le script.
Comme ça, vous pourrez l'essayer.

Pour l'instant, j'ai des soucis en chrootant dans des live CD non Gentoo, je devrai voir en vrai ce que ça donne.
_________________
Kind regards,
Xavier Miller
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum