View previous topic :: View next topic |
Author |
Message |
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Mon Jul 05, 2010 9:35 pm Post subject: [Hard-core Geek] Gentoo From Scratch ! [RESOLU][SCRIPT] |
|
|
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 |
|
|
CryoGen Veteran
Joined: 11 Feb 2004 Posts: 1426 Location: Bamako - Mali - Afrique
|
Posted: Tue Jul 06, 2010 9:58 pm Post subject: |
|
|
Héhé, bonne continuation _________________ - CryoGen` on #gentoofr@irc.freenode.net
- ~amd64 / KDE4
- I'm the bone of my sword... |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Wed Jul 07, 2010 5:51 am Post subject: |
|
|
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 |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Thu Jul 08, 2010 7:41 pm Post subject: |
|
|
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 |
|
|
gglaboussole l33t
Joined: 17 May 2005 Posts: 641 Location: Monbalen (47),France
|
Posted: Fri Jul 09, 2010 6:53 pm Post subject: |
|
|
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 _________________ On m'a dit que la terre tourne, alors j'attends que ma maison passe par ici... |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Fri Jul 09, 2010 9:25 pm Post subject: |
|
|
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
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 |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Thu Jul 15, 2010 7:14 pm Post subject: |
|
|
Je crois que je tiens le bout
Création du stage1 en cours sur AMD64 _________________ Kind regards,
Xavier Miller |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Mon Jul 19, 2010 11:51 pm Post subject: |
|
|
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 |
|
|
d2_racing Bodhisattva
Joined: 25 Apr 2005 Posts: 13047 Location: Ste-Foy,Canada
|
Posted: Tue Jul 20, 2010 3:04 am Post subject: |
|
|
C'est clair que ça va prendre un Wiki.
Une LFS avec Portage, ça devrait bien s'entretenir |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Tue Jul 20, 2010 6:23 am Post subject: |
|
|
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 |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Tue Jul 20, 2010 7:05 pm Post subject: |
|
|
J'ai passé le gros noeud
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 |
|
|
Da_Risk n00b
Joined: 13 Jul 2006 Posts: 28 Location: Paris
|
Posted: Mon Jul 26, 2010 8:28 am Post subject: |
|
|
Alors moi je dis Felicitations !!!!
Je m'en vais tester tout ca dans une vm _________________ 1 + 1 = 3 |
|
Back to top |
|
|
d2_racing Bodhisattva
Joined: 25 Apr 2005 Posts: 13047 Location: Ste-Foy,Canada
|
Posted: Mon Jul 26, 2010 1:54 pm Post subject: |
|
|
Good good, ça avance bien ton truc |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Mon Jul 26, 2010 1:57 pm Post subject: |
|
|
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 |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Mon Jul 26, 2010 9:09 pm Post subject: |
|
|
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 ? _________________ Kind regards,
Xavier Miller |
|
Back to top |
|
|
d2_racing Bodhisattva
Joined: 25 Apr 2005 Posts: 13047 Location: Ste-Foy,Canada
|
Posted: Tue Jul 27, 2010 2:25 pm Post subject: |
|
|
Et puis, est-ce que cela a fonctionné ? |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Tue Jul 27, 2010 5:30 pm Post subject: |
|
|
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 |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Wed Jul 28, 2010 3:16 am Post subject: |
|
|
\o/ |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Wed Jul 28, 2010 8:08 am Post subject: |
|
|
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 |
|
|
d2_racing Bodhisattva
Joined: 25 Apr 2005 Posts: 13047 Location: Ste-Foy,Canada
|
Posted: Wed Jul 28, 2010 9:09 pm Post subject: |
|
|
Beau travail |
|
Back to top |
|
|
Poussin l33t
Joined: 08 Jun 2007 Posts: 659 Location: Liège
|
Posted: Wed Jul 28, 2010 10:09 pm Post subject: |
|
|
ah si j'étais la moitié moins doué que toi |
|
Back to top |
|
|
d2_racing Bodhisattva
Joined: 25 Apr 2005 Posts: 13047 Location: Ste-Foy,Canada
|
Posted: Thu Jul 29, 2010 1:54 am Post subject: |
|
|
Avec de la patience et de la volonté, on peut accomplir de grande chose. |
|
Back to top |
|
|
Poussin l33t
Joined: 08 Jun 2007 Posts: 659 Location: Liège
|
Posted: Thu Jul 29, 2010 8:21 am Post subject: |
|
|
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 |
|
|
d2_racing Bodhisattva
Joined: 25 Apr 2005 Posts: 13047 Location: Ste-Foy,Canada
|
Posted: Thu Jul 29, 2010 11:48 am Post subject: |
|
|
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 |
|
Back to top |
|
|
xaviermiller Bodhisattva
Joined: 23 Jul 2004 Posts: 8720 Location: ~Brussels - Belgique
|
Posted: Thu Jul 29, 2010 11:53 am Post subject: |
|
|
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 |
|
|
|