Installation d'une Gentoo

Librement inspiré de la doc officielle, avec les ajouts des problèmes que j'ai rencontré.

la doc officielle


Le boot

  • Install depuis le minimal-cd (cd de 100mo avec système de fichier compressé)

Je déconseille l'install depuis un live-cd, qui va installer plein de binaires pas forcéments à jour (voire même un vieil environnement de compilation blend-386 tout foireux).

  • Booter depuis le minimal-cd (noyau: gentoo ou gentoo-nofb)
  • Choisir la résolution (80x50 conviendra très bien à un moniteur 17 pouces)
  • Choisir le clavier (si erreur ou regrets, loadkeys fr depuis le shell)
  • Changer le password root (important)

# passwd


  • Mise en place réseau, identification de l'interface

# lspci (suivi éventuellement d'un modprobe pour le driver de la carte réseau)


  • Activation de la carte réseau, au choix:

soit net-setup ethX

soit, si on veut le faire à la main

ifconfig ethX ip_machine
route add default gw ip_passerelle
echo nameserver ip_dns > /etc/resolv.conf


Pour poursuivre l'installation depuis un autre PC, c'est le moment de lancer le serveur ssh (facultatif): /etc/init.d/sshd/start


Création du système de fichier

Bon, tout le monde sait partitionner avec fdisk ?

Rien de spécial à raconter ici aux vieux routards de la Slackware, qui doivent avoir l'habitude maintenant.


  • Formater les partitions

mkfs.ext3 pour un FS journalisé

mke2fs -j /dev/partition qui fait la même chose que ci-dessus


  • Créer le swap

mkswap /dev/votre_partition suivi d'un swapon

# mount /dev/partition_systeme /mnt/gentoo


(ce qui suit n'est à faire que si vous avez créé une partition dédiée au boot)

# mkdir /mnt/gentoo/boot
# mount dev/partition_de_boot /mnt/gentoo/boot


Installation du stage3 (système de fichier minimal Gentoo)

  • Vérifier que la date est bonne (au format UTC)

# date

Eventuellement pour corriger la date:

date MMDDhhmmYYYY


  • Installation du stage3

Se mettre à la racine de votre future partition système:

# cd /mnt/gentoo

Lancer links sur la liste des miroirs Gentoo

# links http://www.gentoo.org/main/en/mirrors.xml

Choisir un serveur dans un pays proche/fiable.

Aller dans releases/x86 (ou votre architecture: amd64, ppc, etc..): /current/stages.

Choisir le stage3 voulu (en général, stage3-i686, et 'D' pour le charger). L'archive fait un peu plus de 100mo.

Remonter à la racine des serveurs

Aller dans snapshots et reprendre la dernière archive Portage. (environ 40mo)

Quitter links, et dépacker l'archive afin d'obtenir le système de fichiers, et l'arborescense Portage.

Attention à garder les permissions pour le système de fichiers (flag -p de tar)

# tar xjpf stage3*
# cd /mnt/gentoo/usr
# tar xjf portage


Chroot du système et configuration de base

# cd /
# mount -t proc proc /mnt/gentoo/proc
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
# chroot /mnt/gentoo /bin/bash

Attention! A partir du "chroot", on n'a plus que "nano" comme éditeur de texte.

Si on a fait le chroot sur la machine d'installation, et qu'on prend la main par la suite avec ssh depuis une autre machine, il faudra bien sûr refaire le chroot.


Rêglages divers

  • Mise à jour des fichiers de config

# env-update && source /etc/profile


Rêglage du fuseau horaire (pour la France):

# cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
# nano /etc/confd./clock (mettre TIMEZONE="Europe/Paris")


Vérifier que tout est correct avec # date

Si ce n'est pas la bonne date (par exemple, date affiche 17h30 alors qu'il est 15h30 au moins d'aout), il faut rêgler à nouveau la date de l'horloge, puis faire un

# hwclock --systohc

qui reglera l'horloge hardware en utilisant l'heure système.


Note pour les utilisateurs d'un dual-boot MS-Windows
  • Si vous avez un Windows installé sur votre machine, ce petit malfaisant se permet de modifier l'horloge système.
  • Dans ce cas, il vous faudra abandonner l'UTC dans la config Gentoo, et modifier /etc/conf.d/clock
    • Il faut prévenir le système qu'il doit utiliser l'heure locale et abandonner les fuseaux.
# Dans /etc/conf.d/clock
#CLOCK="UTC"
CLOCK="local"



host et domain

# cd /etc

Editer le fichier "hosts". Syntaxe:

"127.0.0.1 mybox.at.myplace mybox localhost"

décomposition des 4 champs:

127.0.0.1
mybox.at.myplace = FQDN
mybox = host alias
localhost = host

Editer conf.d/hostname, et remplacer le localhost par le nom de la machine. HOSTNAME="youplala"


Networking

éditer le fichier /etc/conf.d/net

créer un lien symbolique sur ce fichier, pour désigner l'interface:

# ln -s net net.eth0

mettre dans net les infos minimales:

config_eth0=( "192..../24" )
routes_eth0=( "default via ip_passerelle" )

# rc-update add net.eth0 default pour que tout ça soit chargé au boot.


si besoin, ajouter le chargement automatique du module de la carte réseau:

# echo r8169 >> /etc/modules.autoload.d/kernel-2.6


Eventuellement, ajouter le lancement de sshd au boot:

rc-update add sshd default


Editer le fichier /etc/fstab

(exemple pour ceux qui ont une partition pour /boot, sinon, enlever la première ligne)

/dev/hda1   /boot     ext2    noauto,noatime     1 2
/dev/hda3   /         ext3    noatime            0 1
/dev/hda2   none      swap    sw                 0 0
proc        /proc     proc    defaults           0 0

nb : si vous n'avez pas un disque ATA branché en primaire sur le premier controleur, adaptez le nom du device.

à propos de proc : son ajout n'est pas nécessaire, l'installeur de Gentoo est censé s'en charger.

à propos de l'ordre des lignes ci dessus : j'ai repris cet exemple de la doc officielle, mais on m'a signalé que l'ordre de montage était important, et que boot devrait se trouver après le montage de la partition root (donc, il faudrait permuter les deux premières lignes de l'exemple)


Juste au cas où, vérifier que ces fichiers sont corrects:

/etc/rc.conf (nb unicode se paramètre ici)

/etc/conf.d/rc

/etc/conf.d/keymaps


Récupération des sources du noyau et compilation

  • Récupérer les sources

# emerge gentoo-sources (pour les sources du noyau patché Gentoo)

OU

# emerge vanilla-sources (pour les sources "officielles" de kernel.org)

OU encore

# wget (adresse des sources sur kernel.org)

  • compilation du noyau

Juste pour info, les étapes de compilation:

# cd /usr/src/linux
# make menuconfig
# make
# make modules_install
# cp arch/i386/boot/bzImage /boot/kernel

nb: les utilitaires liés au noyau (comme iptables) vont utiliser gentoo-sources ou vanilla-sources.


make.conf

Il est temps de se préocupper de l'épine dorsale de votre Gentoo, j'ai nommé /etc/make.conf

Au minimum, mettre les flags pour votre CPU avant de compiler quoi que ce soit (ça marchera sans, mais l'utilisation optimale de votre matériel est un des interets de la Gentoo).

  • Pour les flags optimum par architecture

liste des flags de compilation Gentoo


  • Ajouter également

FEATURES="parallel-fetch ccache"


  • On peut également positionner les USE généraux (directives générales, et donc non liées à un seul paquet).

Exemple pour mon serveur:

USE="unicode -kde -qt3 -qt4 -arts -eds -esd -gnome -gstreamer -gtk"



Installer un syslogger et un daemon cron

Par défaut, rien n'est loggé, et cron n'est pas encore installé aux commandes.

Note: les démons cron ont besoin d'un serveur mail. Par défaut, c'est ssmtp qui est installé (on peut bien sûr en mettre un autre par la suite).

J'utilise vixie-cron et syslog-ng, mais ce ne sont pas les seuls disponibles. Ils sont relativement répandus et on trouve facilement de la doc à leur sujet.

# emerge syslog-ng vixie-cron
# rc-update add syslog-ng default
# rc-update add vixie-cron default



Créer un utilisateur

Ne faites pas comme les admins windows, arrêtez de vous logger en root !

# adduser -g users -G lp,wheel,audio,cdrom,portage,cron -m jseb
# passwd jseb



Utilitaires indispensables:

emerger gentoolkit (contient notamment equery, euse, revdep-rebuild)

emerger portage-utils (contient les commandes q : qcache, qatom, qgrep, ...)

emerger eix (recherche rapide dans l'arbre portage)


udev

avant de rebooter, il est imporant de emerger udev.

emerge -uav udev

le paramètre -u signifie update (fait plus de choses qu'un simple emerge).


Préparation du boot

Et maintenant, redémarrez votre... hmmm... STOP! on n'a pas de boot!

# emerge grub

Edition de la config: /boot/grub/grub.conf

Exemple pour disque dur ATA, avec partition système Gentoo située sur la première partition physique du disque.

default 0
timeout 10
title=Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/hda1


puis continuer dans l'interface de gestion de grub:

# grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit


On reboote !

  • Si vous êtes croyant, c'est le moment des prières à votre déité. Les mécréants se contenteront de croiser les doigts.


Boudiou, il veut pas de mon password root !

En cas de problèmes pour se logger (mot de passe root non accepté)

(merci à Frédéric pour l'astuce)

ajouter à la ligne de paramètres grub: init=/bin/bash

On arrive sur un shell root sans password:

# mount / -o remount,rw
# passwd
# mount / -o remount,ro
# exit (on a un kernel panic à ce stade, car on a quitté l'unique programme du noyau)



Pas la peine de laisser mijoter

Voila, c'est prêt. Dès que possible, installez ccache et distcc pour accélérer la compilation.

Plus qu'à lire la doc de Portage et commencer à compiler vos packages.

C'est le moment également de ressortir vos cartes de la région pour aller vous promener, si vous décidez de compiler KDE et Gnome :-)