Même si vous trouverez plusieurs documentation traitant de l'installation de ces deux distributions, voici ma maigre contribution. Sait-on jmais, cela pourrait servir à d'autres.

De quoi avons nous besoin ?

  • D'une machine
  • D'un livecd pour démarrer
  • De temps et de patience

N'oubliez pas que Funtoo est une distribution source, c'est à dire que chaque paquetage va être compilé à partir des sources téléchargées. Voilà qui paraît difficile au premier abord, mais portage, le système de gestion de paquetage de Gentoo va grandement nous faciliter la vie.

La machine qui va être torturée pour l'écriture de ce billet est ma machine principale, qui, au moment où je commence la rédaction est en cours d'installation. Ainsi, vous aurez tout en direct en quelque sorte. Cette machine est un Core 2 Quad Q6600 équipée de 4 Go de RAM avec deux disques SATA de 160 Go.

Cette petite documentation présuppose que vous ayez quelques notions Linux ou d'informatique en général :) MAis n'importe qui un peu courageux devrait pouvoir le suivre.

Démarrage

Avant toute chose, allez donc chercher le System Rescue CD qui va vous permettre de démarrez la machine et d'avoir un environnement à peu près convivial pour l'installation. Une fois gravé, démarrez votre machine e fournissant les instructions suivantes au CD:

rescue64 setkmap=fr

Attention, vous avez à ce moment là un clavier QWERTY, il vous faudra donc tapper rescue64 setk,qp=fr

Quand le CD aura fini de démarrer, tapez

net-setup eth0 pour configurer votre carte réseau. Il suffit de répondre aux questions et une fois la configuration terminée, de vérifier que le réseau est bien disponible en tapant:

root@sysresccd /root % ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1a:92:50:2c:33  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: 2a01:e35:2e61:a420:21a:92ff:fe50:2c33/64 Scope:Global
          inet6 addr: fe80::21a:92ff:fe50:2c33/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:328165 errors:0 dropped:0 overruns:0 frame:0
          TX packets:196725 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:471116582 (449.2 MiB)  TX bytes:17505032 (16.6 MiB)
          Interrupt:251 Base address:0x6000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@sysresccd /root % 

Vous obtenez quelque chose de similaire ? un ping www.google.com donne:

root@sysresccd /root % ping -c4 www.google.com
PING www.l.google.com (209.85.227.99) 56(84) bytes of data.
64 bytes from wy-in-f99.google.com (209.85.227.99): icmp_seq=1 ttl=244 time=65.8 ms
64 bytes from wy-in-f99.google.com (209.85.227.99): icmp_seq=2 ttl=244 time=64.2 ms
64 bytes from wy-in-f99.google.com (209.85.227.99): icmp_seq=3 ttl=244 time=64.7 ms
64 bytes from wy-in-f99.google.com (209.85.227.99): icmp_seq=4 ttl=244 time=64.9 ms

--- www.l.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 64.276/64.963/65.864/0.630 ms

C'est parfait, on va pouvoir continuer :)

Vous pouvez dès maintenant taper startx pour lancer l'environnement graphique, avoir accès à un navigateur et revenir vite fait sur mon blog pour suivre le reste des instructions :)

Partitionnement

Partitionons nos disques. Comme je l'ai dit plus haut, nous allons utiliser du RAID logiciel. En l'occurrence, pas de fioritures, nous allons faire un mirroir de chaque partition pour gagner en sécurité. Le but n'est pas ici la performance. Mais, si vous aviez 4 disques à utiliser, je vous conseille fortement d'utiliser du RAID 10 à la place du RAID 1 que nous allons mettre en place.

Nous allons nous servir de fdisk pour créer les partitions. Cela peut paraitre un peu rustre au premier abord, mais vous verrez, c'est finalement assez simple.

Le plan de partitionnement est les suivant:

    Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          33      265041   fd  Linux raid autodetect
/dev/sdb2              34         555     4192965   fd  Linux raid autodetect
/dev/sdb3             556        4471    31455270   fd  Linux raid autodetect
/dev/sdb4            4472       19457   120375045   fd  Linux raid autodetect

Ce qui donne en gros:

Partition Point de montage type FS Taille (MB)
sda1        /boot        Primary        Linux raid autodetect        271.44
sda2        swap         Primary        Linux raid autodetect        4293.60
sda3        /            Primary        Linux raid autodetect        32210.20
sda4        /home        Primary        Linux raid autodetect        123264.05
root@sysresccd /root % fdisk /dev/sda

The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19457, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-19457, default 19457): 33

Command (m for help): p

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0009d33d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          33      265041   83  Linux

Nous avons ici créé une partition primaire qui se termine au cylindre 55 du premier disque. cette partition servira à accueillir le noyau et les fichiers nécessaires à grub, ce sera /boot

Rendons la partition active pour signale au BIOS qu'elle est bootable et changeons son type pour qu'elle soit correctement reconnue par le raid.

Command (m for help): a
Partition number (1-4): 1

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Créons la partion de swap:

/Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (34-19457, default 34): 
Using default value 34
Last cylinder, +cylinders or +size{K,M,G} (34-19457, default 19457): 555

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Nous avons ici créé la partition de swap et changé son type en Linux raid autodetect. En effet, fdisk crée par défaut des partition pouvant accueillir un système de fichier Linux tel que ext3.

Vous pouvez maintenant créer les deux autres partitions qui seront la racine / et votre partition home.

Une fois le premier disque partitioné, partitionez le second avec exactement les mêmes valeurs. C'est pourquoi j'utilise fdisk, afin d'avoir directement les cylindres occupés par les partitions pour pouvoir facilement recréer les nouvelles.

Construction du RAID

Vos partitions sont crées. Bien, maintenant nous allons construire le raid.

Il faut d'abord créer les noeuds de périphériques dans /dev, un noeud par partition, et oui, nous faisons un miroir de la swap aussi. Comme ça, en cas de crash violent d'un disque, les programmes qui auraient éventuellement écrit en swap pourraient continuer à fonctionner :) Voilà qui permettrait de changer le disque à chaud sans arréter le système. Amusant non ? :)

mknod /dev/md1 b 9 1
mknod /dev/md2 b 9 2
mknod /dev/md3 b 9 3
mknod /dev/md4 b 9 4

Bon, les noeuds de périphériques sont créés, assemblons les partitions.

mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
mdadm --create /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4

Ah, le raid est créé, maintenant, laissons mdadm synchroniser les disque et écrire ses meta-données. Vous pouvez vérifier l'avancement du processus avec la commande cat /proc/mdstat

Par exemple, voici le résultat de cette commande pendant la synchronisation sur ma machine:

root@sysresccd /root % cat /proc/mdstat 
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md4 : active raid1 sdb4[1] sda4[0]
      120374976 blocks [2/2] [UU]
      [==============>......]  resync = 72.9% (87852416/120374976) finish=10.8min speed=49885K/sec
      
md3 : active raid1 sdb3[1] sda3[0]
      31455168 blocks [2/2] [UU]
      	resync=DELAYED
      
md2 : active raid1 sdb2[1] sda2[0]
      4192896 blocks [2/2] [UU]
      
md1 : active raid1 sdb1[1] sda1[0]
      264960 blocks [2/2] [UU]
      
unused devices: <none>
root@sysresccd /root %

Il aura fallu pas loin d'une demie heure pour synchroniser la partition home. Rappelons qu'elle fait pas loin de 125 Go

Formattage des partitions

Nous allons utiliser ext3 comme type de système de fichiers. Même si ext4 est disponible et marqué comme stable, les quelques tests que j'ai pu réaliser de mon côté mon apporté quelques bugs gênants. Si vous voulez tenter le diable, essayez ext4 :)

Cependant, la partition /boot sera elle formattée en ext2, nous n'avons pas besoin de la journalisation sur une partition qui ne sera montée que les rares fois où vous recompilerez un noyau.

root@sysresccd /root % mke2fs -L BOOT /dev/md1
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=BOOT
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
66264 inodes, 264960 blocks
13248 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
33 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185

Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

root@sysresccd /root % mkswap -L SWAP /dev/md2
Setting up swapspace version 1, size = 4192892 KiB
LABEL=SWAP, UUID=1533012c-91b5-4dd5-8943-30708c55bf67

root@sysresccd /root % mkfs.ext3 -L SLASH /dev/md3
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=SLASH
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1966080 inodes, 7863792 blocks
393189 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
240 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

root@sysresccd /root % mkfs.ext3 -L HOME /dev/md4
mke2fs 1.41.4 (27-Jan-2009)
Filesystem label=HOME
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
7528448 inodes, 30093744 blocks
1504687 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
919 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
root@sysresccd /root %

Les partition sont maintenant prêtes à accueillir l'installation proprement dite. Mais avant cela, il faut les monter pour y accéder.

root@sysresccd /root % mount /dev/md3 /mnt/gentoo 
root@sysresccd /root % mkdir /mnt/gentoo/boot       
root@sysresccd /root % mkdir /mnt/gentoo/home
root@sysresccd /root % mount /dev/md1 /mnt/gentoo/boot
root@sysresccd /root % mount /dev/md4 /mnt/gentoo/home 
root@sysresccd /root % swapon /dev/md2

Installation de la base du système

Il nous faut maintenant télécharger le stage 3 de funtoo, qui va nous permettre de démarrer notre installation.

Pour cela, allez sur le site de funtoo et choisissez le stage correspondant à votre architecture. Pour moi, cela sera la core2 qui correspond à ma machine.

root@sysresccd /root % wget http://funtoo.org/linux/funtoo/core2/funtoo-core2-2009.04.19/stage3-core2-2009.04.19.tar.bz2
--2009-04-21 18:58:31--  http://funtoo.org/linux/funtoo/core2/funtoo-core2-2009.04.19/stage3-core2-2009.04.19.tar.bz2
Resolving funtoo.org... 70.86.41.106
Connecting to funtoo.org|70.86.41.106|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 129503204 (124M) [application/x-bzip2]
Saving to: `stage3-core2-2009.04.19.tar.bz2'

 3% [==>                                                                                               ] 4,770,906    213K/s  eta 9m 17s

Quand le téléchargement est fini, nous décompactons l'archive dans le répertoire /mnt/gentoo

root@sysresccd /root % tar xjf funtoo-core2-2009.04.19/stage3-core2-2009.04.19.tar.bz2 -C /mnt/gentoo

Il nous faut maintenant récupérer l'archive contenant l'arbre portage. C'est cet arbre qui permet d'installer et de désinstaller les paquetages. Les familiers de FreeBSD reconnaîtrons là l'héritage des ports si pratiques.

root@sysresccd /root % wget http://funtoo.org/linux/funtoo/snapshots/portage-current.tar.bz2
--2009-04-21 19:03:05--  http://funtoo.org/linux/funtoo/snapshots/portage-current.tar.bz2
Resolving funtoo.org... 70.86.41.106
Connecting to funtoo.org|70.86.41.106|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 214989159 (205M) [application/x-bzip2]
Saving to: `portage-current.tar.bz2.1'

 0% [                                                                                                  ] 1,350,729    350K/s  eta 11m 34s

Et la décompacter dans le répertoire /mnt/gentoo/usr

root@sysresccd /root % tar xjf portage-current.tar.bz2 -C /mnt/gentoo/usr

Il est temps de se préaprer au chroot. Cette manipulation va nous permettre de faire de notre disque dur notre système presque réel. Pour se faire, il nous manque quelques systèmes de fichier à monter avant de procéder.

Le chroot

Hop, montons ce qui nous manque et entrons dans le chroot

root@sysresccd /root % cp /etc/resolv.conf /mnt/gentoo/etc/
root@sysresccd /root % mount -t proc none /mn/gentoo/proc 
root@sysresccd /root % mount -o bind /dev /mnt/gentoo/dev
root@sysresccd /root % chroot /mnt/gentoo /bin/bash
sysressccd / # env-update
>>> Regenerating /etc/ld.so.cache...
sysresccd / # source /etc/profile
sysresccd / # export PS1="(chroot) $PS1"
(chroot) sysresccd / #

Et voilà ! Nous sommes sur notre nouvelle installation. Il nous faut configurer les quelques fichiers indispensables à notre distribution. D'abord, le make.conf. Ce fichier va conditionner toutes les optimisations et les dépendences des paquetages que nous allons installer.

L'éditeur de texte installé par défaut étant nano et non vi, éditons le fichier avec ce dernier:

(chroot) sysresccd / # nano /etc/make.conf

Et nous obtenons, après édition, quelque chose qui ressemble à ceci:

  GNU nano 2.1.9                                File: /etc/make.conf  

# These settings were set by the metro build script that automatically built this stage.
# Please consult /etc/make.conf.example for a more detailed example.

ACCEPT_KEYWORDS="~amd64"
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -pipe"
CXXFLAGS="$CFLAGS"
MAKEOPTS="-j5"

USE="7zip a52 aac acpi archive bash-completion cdda cddb cdrom cdrtools clamav
     cleartype corefonts cpudetection dvdnav fat ffmpeg fftw firefox firefox3
     flac fluidsynth fuse gnutls hal hddtemp id3tag ipfilter java java6
     javascript joystick jpeg2k kde kdehiddenvisibility lame libnotify live
     matroska mjpeg mmxext mp3tunes mp4 mp4live mpeg2 mplayer msn musepack
     musicbrainz network nfs ntfs ntp nvidia offensive ogg123 openal opengl
     openssl phonon plasma posix postscript qt3 qt3support qt4 rar rdesktop
     real realmedia replaygain samba sdl sensord sse3 ssse3 theora threads
     thumbnail twolame upnp usb v4l vim-syntax wavpack webkit webpresence X
     x264 xcomposite xscreensaver xv xvid zeroconf"

INPUT_DEVICES="evdev"
VIDEO_CARDS="vesa nv nvidia"
LINGUAS="fr en"
GENTOO_MIRRORS="http://mirror.ovh.net/gentoo-distfiles/ http://mirror.cambrium.nl/pub/os/linux/gentoo/ \
http://ftp.uni-erlangen.de/pub/mirrors/gentoo"


                                                            [ Wrote 24 lines ]
^G Get Help            ^O WriteOut            ^W Where Is            ^V Next Page           ^U UnCut Text          M-| First Line
^X Exit                ^R Read File           ^Y Prev Page           ^K Cut Text            ^C Cur Pos             M-? Last Line

Ne vous inquiétez pas pour les entrées USE, INPUT_DEVICES ou autres VIDEO_CARDS, ces sections seront remplies plus loin.

Ce qu'il est important de positionner dans un premier temps sont les entrées CXXFLAGS et MAKEOPTS. L'entrée CXXFLAGS correspond aux optimisations passées pour les programmes C++, ici, nous positionnons les mêmes que pour les programmes en C. L'entrée MAKEOPTS correspond aux options passées à make lors de la compilation. Nous nous contentons d'un -j5, correspondant au nombre de processeur de la machine +1. Ayant un Core2Quad, donc, 4 coeurs, je la positionne à -j5

Maintenant, configurons l'heure de la machine. Ceci est très important car cela garanti la cohérence du système. Le système n'aime pas trouver des fichiers créés dans le futur :) Comme je suis en France, mon fuseau horaire est Paris.

(chroot) sysresccd / # date
Tue Apr 21 20:02:01 Local time zone must be set--see zic manual page 2009
(chroot) sysresccd / # cp /usr/share/zoneinfo/Europe/Paris /etc/localtime
(chroot) sysresccd / # date
Tue Apr 21 22:02:22 CEST 2009
(chroot) sysresccd / #

Voilà, nous sommes à l'heure :) Le premier qui dit que je suis un geek pour être devant ma machine à cette heure là n'aura pas forcément tord :)

Nom d'hôte de la machine

Une machine anonyme, ce n'est pas amusant. Franchement, des machines appelées localhost il y en a beaucoup, par contre, une machine qui s'appelle comme la votre, il y en a peut-être moins :)

(chroot) sysresccd # cd /etc
(chroot) sysresccd etc # echo "127.0.0.1 tagada.youplaboum.net tagada localhost" > hosts
(chroot) sysresccd etc # sed -i -e 's/HOSTNAME.*/HOSTNAME="tagada"/' conf.d/hostname
(chroot) sysresccd etc # hostname tagada
(chroot) sysresccd etc # hostname -f
tagada.youplaboum.net
(chroot) sysresccd etc #

Bien sûr, tagada et youplaboum.net sont à remplacer par ce que vous désirez comme noms de machine et de domaine.

Passer à Funtoo

Pour l'instant, nous n'avons pas vraiment utilisé les spécificités de Funtoo. Il est temps de remédier à cela. Première chose à faire, utiliser l'arbre portage de Funtoo. Nous allons le récupérer avec Git.

(chroot) sysresccd etc # cd /usr/portage/
(chroot) sysresccd portage # git checkout funtoo.org
Checking out files: 100% (119154/119154), done.
Switched to branch 'funtoo.org'
(chroot) sysresccd etc #

Après cela, mettons à jour l'abre de portage avec la commande suivante:

(chroot) sysresccd etc # emerge --sync

Si le résultat de la commande est le suivant, après quelques dizaines (Qui a dit centaines) de lignes:

 * An update to portage is available. It is _highly_ recommended
 * that you update portage now, before any other packages are updated.

 * To update portage, run 'emerge portage' now.

(chroot) sysresccd portage #

Vous savez ce qu'il vous reste à faire.

(chroot) sysresccd portage # emerge portage

Le bon profil

Le profil va définir quel type d'installation vous voulez effectuer. Il existe des profils pour les serveurs, des profils à la sécurité renforcée, des profils orientés multimédias, à vous de choisir celui qui vous correspond le mieux pour l'utilisation que vous allez faire de votre machine. Pour ma part, je choisis un profil multilib, c'est à dire que des programmes assurant la compatibilité pour les programmes 32 Bits vont être installés. Je preds un peu de place au profit d'une utilisation possible de programmes qui n'ont pas encore migré vers le 64 Bits.

 (chroot) sysresccd ~ # ln -snf /usr/portage/profiles/default/linux/amd64/2008.0/desktop /etc/make.profile

Je vous engage à fureter dans les répertoires profiles pour trouver celui qui vous correspond

Il est temps de passer à la fameuse variable USE que nous avons laissée de côté tout à l'heure.

Une manière simple de faire, mais un peu longue, consiste à installer ufed qui va vous permettre de choisir précisément vos USE. Maintenant, vous savez installer les programmes, lancez donc un:

(chroot) sysresccd ~ # emerge ufed

Son utilisation est assez intuitive, vous choisissez les USE que vous voulez en les cochant. Si vous voulez un environnement kde par exemple, choisisez qt qt4 kde X, pour gnome, mettez plutôt gtk gnome. Là aussi, c'est en fonction de vos goûts. Sachez cependant que vous ne risquez rien en ne choisissant pas de USE, vous pourrez toujours les rajouter au fur et à mesure de votre découverte de Gentoo / Funtoo.

Maintenant, vous désirez certainement que votre gentoo vous parle dans la langue de Molière plutôt que dans celle de "Chat-Qui-Expire". Nous allons donc éditer le fichier /etc/locale.gen qui commande une partie de la localisation.

Il vous suffit d'avoir un fichier de ce style:

# /etc/locale.gen: list all of the locales you want to have on your system
#
# The format of each line:
# <locale> <charmap>
#
# Where <locale> is a locale located in /usr/share/i18n/locales/ and
# where <charmap> is a charmap located in /usr/share/i18n/charmaps/.
#
# All blank lines and lines starting with # are ignored.
#
# For the default list of supported combinations, see the file:
# /usr/share/i18n/SUPPORTED
#
# Whenever glibc is emerged, the locales listed here will be automatically
# rebuilt for you.  After updating this file, you can simply run `locale-gen`
# yourself instead of re-emerging glibc.

en_US ISO-8859-1
en_US.UTF-8 UTF-8
fr_FR@euro ISO-8859-15
fr_FR ISO-8859-1
fr_FR.UTF-8 UTF-8

Fichier que vous éditerez avec nano, vous n'avez toujours pas vi ;)

Profitez-en pour rajouter la variable LINGUAS à votre fichier /etc/make.conf.

Générons les locales avec locale-gen

(chroot) sysresccd ~ # locale-gen 
* Generating 5 locales (this might take a while) with 1 jobs
*  (1/5) Generating en_US.ISO-8859-1...                                                                                                  [ok]
*  (2/5) Generating en_US.UTF-8...                                                                                                       [ok]
*  (3/5) Generating fr_FR.ISO-8859-15@euro...                                                                                            [ok]
*  (4/5) Generating fr_FR.ISO-8859-1...                                                                                                  [ok]
*  (5/5) Generating fr_FR.UTF-8...                                                                                                       [ok]
* Generation complete
(chroot) sysresccd ~ #

Éditez le fichier /etc/conf.d/keymaps et changez la valeur de la variable keymap en fr-latin98

Éditez le fichier /etc/conf.d/consolefont et changez la valeur de la variable consolefont en lat9w-16

Créez un fichier /etc/env.d/02locales dans lequel vous positionnerez la variable LANG=fr_FR.UTF-8

Exécutez env-update et voilà. Votre Funtoo parlera un peu plus français :)

Passons à l'étape suivante, la compilation du noyau.

Compiler son noyau

LE grand mythe. Compiler son noyau. Vous verrez, ce n'est pas si difficile que ça.

Afin de commencer, vous allez devoir récupérer le plus d'informations possibles sur votre matériel. Vous pouvez déjà, avec un lsmod obtenir le nom des modules (drivers) chargés par le CD au démarrage. Ceci va vous donner une petite idéed des options qu'il faudra choisir pour al configuration du noyau. Bien sûr, le live cd devant fonctionner sur le maximum de machines il y a beaucoup de drivers chargés pour du matériel que vous ne possédez pas. Qu'à cela ne tienne. Utilisez lspci hors du chroot pour avoir une idée plus concrête des entrailles de votre machine. Par exemple, voici la sortie d'un lspci exécuté sur ma machine:

root@sysresccd /root % lspci
00:00.0 Host bridge: Intel Corporation 82P965/G965 Memory Controller Hub (rev 02)
00:01.0 PCI bridge: Intel Corporation 82P965/G965 PCI Express Root Port (rev 02)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev f2)
00:1f.0 ISA bridge: Intel Corporation 82801HB/HR (ICH8/R) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801HB (ICH8) 4 port SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation GeForce 8600 GT (rev a1)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)

Grace à ceci, nous savons que moi contrôleur disque SATA est un intel ICH8, que pour l'audio c'est encore du Intel ICH8 HD, que ma carte réseau est une Realtek 8111/8168 et que ma carte vidéo est une nVidia GeForce 8600GT. Je sais en plus que j'ai un graveur de DVD, une webcam, un clavier et une souris USB, et une bonne vie.lle imprimante sur le port parallèle.

Avec toutes ces informations, je vais être à même de compiler un noyau adapté à ma configuration.

Si vous désirez utiliser lspci plus tard, installez le avec un emerge pciutils

D'abord, téléchargeons et décompressons les sources du noyau, avec un:

(chroot) sysresccd ~ # emerge gentoo-sources

Cette commande va télécharger le noyau Linux ainsi que tous les patchs spécifiques à gentoo et installer le tout dans le répertoire /usr/src/linux

Nous savons que nous avons une configuration de noyau utilisable comme base, celle du live cd. Elle va nous servir de point de départ pour nous faire un noayu aux petits oignons. Déplacez vous dans le répertoire des source puis récupérez la configuration du noyau courrant en faisant:

(chroot) sysresccd ~ # cd /usr/src/linux
(chroot) sysresccd  linux # zcat /proc/config.gz > .config

Oui, vous avez bien lu, le noyau peut stocker sa configuration dans le répertoire /proc. Nous l'avons donc récupérée :)

Maintenant, vous allez exécuter un:

(chroot) sysresccd  linux # make menuconfig

Cette commande va vous proposer une interface pseudo graphique qui va vous permettre de choisir les options que vous voulez voir incluse dans votre noyau. Vous vous déplacerez dans l'interface avec la touche tabulation (Celle avec les deux flêches à côté du A :) ) Et vous pourrez utiliser les touches entrée, espace et les touches fléchées pour vous déplacer et valider les options. Il vous faut savoir que quand une ligne commence avec une étoile *, l'option est configurée dans le noyau, quand elle commence avec un M elle est hors du noyau, en module, qui se chargera si besoin est et quand elle commence par _, l'option n'est pas sélectionnée et ne sera donc pas disponible.

Il vous faut impérativement choisir les options suivantes directement dans le noyau:

 Device Drivers  --->
Multi-device support (RAID and LVM)  --->
[*] Multiple devices driver support (RAID and LVM)
  <*>   RAID support
  < >     Linear (append) mode (NEW)
  <*>     RAID-0 (striping) mode
  <*>     RAID-1 (mirroring) mode
  < >     RAID-10 (mirrored striping) mode (EXPERIMENTAL) (NEW)
  < >     RAID-4/RAID-5 mode (NEW)
  < >     RAID-6 mode (NEW)
  < >     Multipath I/O support (NEW)
  < >     Faulty test module for MD (NEW)

File systems  --->
<*> Second extended fs support
[*]   Ext2 extended attributes
[*]     Ext2 POSIX Access Control Lists
[*]     Ext2 Security Labels
[*]   Ext2 execute in place support
<*> Ext3 journalling file system support
[*]   Ext3 extended attributes
[*]     Ext3 POSIX Access Control Lists 
[*]     Ext3 Security Labels
<M> The Extended 4 (ext4) filesystem
[*]   Enable ext4dev compatibility
[*]   Ext4 extended attributes (NEW)
[*]     Ext4 POSIX Access Control Lists
[*]     Ext4 Security Labels

Sans ces options, vous ne pourrez pas démarrer votre machine. En effet, votre kernel ne pourra pas reconnaitre le RAID ni le système de fichiers sur lequel sont installés vos fichiers. Plutôt génant.

Après, libre à vous de choisir les options en fonction de votre matériel. N'oubliez pas de bien lire les pages d'aide disponibles quand vous ne comprenez pas l'option. Souvent on y trouve des conseils du genre: Si vous ne savez pas ce que cela veut dire, mettez choisissez oui, ça vous servira :)

Une fois vos options choisies, sauvegardez la configuration et quittez.

Vous pouvez maintenant taper:

(chroot) sysresccd  linux # make && make modules_install

Ces deux commandes vont compiler votre noyau et ses modules puis installer ces derniers. Nous installerons le noyau un peu plus tard.

Passons à la configuration du système, puisque vous n'avez pour l'instant qu'une base, il faut néanmoins qu'elle soit prête pour quand vous commencerez à réellement utiliser votre Funtoo.

Configuration du système

D'abord, éditions le fichier /etc/fstab. Ce fichier contient la description de vos différentes partitions et vous permet d'avoir accès à celles-ci. Il configure aussi d'autres options telles que le dump, mais nous laisserons cela de côté.

Faites un nano /etc/fstab et éditez le fichier pour qu'il ressemble à celui là:

# /etc/fstab: static file system information.
#
# noatime turns off atimes for increased performance (atimes normally aren't
# needed; notail increases performance of ReiserFS (at the expense of storage
# efficiency).  It's safe to drop the noatime options if you want and to
# switch between notail / tail freely.
#
# The root filesystem should have a pass number of either 0 or 1.
# All other filesystems should have a pass number of 0 or greater than 1.
#
# See the manpage fstab(5) for more information.
#

# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.
/dev/md1                /boot           ext2            noauto,noatime  1 2
/dev/md2                none            swap            sw              0 0
/dev/md3                /               ext3            noatime         0 1
/dev/md4                /home           ext3            noatime         0 2
                                                                           
                                                                           
/dev/cdrom              /mnt/cdrom      auto            noauto,ro       0 0
/dev/fd0                /mnt/floppy     auto            noauto          0 0

Suavegardez et quittez, et voilà, ça, c'est fini.

Passons à la configuration du réseau. Il nous faut éditer le fichier /etc/conf.d/net

# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /usr/share/doc/openrc/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).
 
# Utilisation du DHCP
eth0="dhcp"
dhcp_eth0="nonis"            
 
# Adresse fixe
#config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
#routes_eth0="default via 192.168.0.1"

Comme vous le voyez, j'utilse le dhcp pour configurer ma carte réseau. Vous pourriez préférer une adresse fixe, vois avez la syntaxe présentée aussi.

Donnons un mot de passe à root

(chroot) sysresccd ~ # passwd root
New UNIX password: UnMotDePasse
Retype new UNIX password: UnMotDePasse
passwd: password updated successfully

Il nous faut configurer la manière dont la date va être gérée en éditant le fichier /etc/conf.d/hwclock. Rajoutez à la fin la variable TIMEZONE=Europe/Paris ou le fuseau horaire vous correspondant.

 # Set CLOCK to "UTC" if your system clock is set to UTC (also known as
# Greenwich Mean Time).  If your clock is set to the local time, then
# set CLOCK to "local".  Note that if you dual boot with Windows, then
# you should set it to "local".
clock="UTC"

# If you want to set the Hardware Clock to the current System Time
# during shutdown, then say "YES" here.
# You normally don't need to do this if you run a ntp daemon.
clock_systohc="NO"

# If you wish to pass any other arguments to hwclock during bootup,
# you may do so here. Alpha users may wish to use --arc or --srm here.
clock_args=""
       
TIMEZONE="Europe/Paris"

Passons à l'installation des outils système.

Installation des outils système

En premier lieu, il vous faut les outils de gestion du raid. Nous allons donc les installer:

(chroot) sysresccd ~ # emerge mdadm

Maintenant, il vous faut le système de journalisation et le démon cron

(chroot) sysresccd ~ # emerge metalog vixie-cron
rc-update add metalog default
* metalog added to runlevel default
(chroot) sysresscd ~ # rc-update add vixie-cron default
* vixie-cron added to runlevel default

Personnellement, j'utilise metalog comme démon de journalisation, mais vous préférerez peut-être syslog-ng, surtout si vous connaissez déjà ce dernier.

Installation du chargeur de démarrage

Maintenant, nous allons installer GRUB qui va permettre de démarrer la machine. Il permet de choisir sur quel version du noyau démarrer et peut même lancer d'autre systèmes d'exploitation.

Commençons par installer GRUB avec un emerge grub

Il est temps d'installer le noyau.

 (chroot) sysresccd ~ # cd /usr/src/linux
(chroot) sysresccd linux # make install

Maintenant, les fichiers du noyau sont copiés dans le répertoire /boot

Nous pouvons donc configurer GRUB. Éditez le fichier /boot/grub/grub.conf et rajoutez ceci

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz 

title Gentoo Linux           
root (hd0,0) 
kernel /boot/nom_du_fichier_du_noyau root=/dev/md3

nom_du_fichier_du_noyau est le nom du fichier qui commence par vmlinuz situé dans le répertoire /boot

GRUB est configuré, mais il n'est pas encore complètement installé. Il doit se trouver dans le MBR du disque, c'est à dire la toute première partie du disque qui est appelée par le BIOS au démarrage de la machine.

Invoquez GRUB en tapant:

(chroot) sysresccd ~ # grub

Puis suivez les instructions suivantes:

    GNU GRUB  version 0.97  (640K lower / 7168K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  18 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+18 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... suc
ceeded
Done.

grub> root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd1)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  18 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd1) (hd1)1+18 p (hd1,0)/boot/grub/stage2 /boot/grub/menu.lst"... suc
ceeded
Done.

grub>quit

Grub est désormais installé sur les deux disques. Ainsi, si un des deux disques meurt, nous pourrons redémarrer même en mode dégradé le temps d'aller acheter un nouveau disque :)

Redémarrage.

Voilà, la base du système est installée. C'est (enfin) fini :)

Quittez le chroot, démontez les partitions et redémarrez la machine en ayant sorti le cd.

(chroot) sysresccd ~ # exit
sysresccd ~ % umount /mnt/gentoo/boot
sysresccd ~ % umount /mnt/gentoo/home
sysresccd ~ % umount /mnt/gentoo/proc
sysresccd ~ % umount /mnt/gentoo/dev
sysresccd ~ % umount /mnt/gentoo
sysresccd ~ % reboot

Bon, et maintenant ??

Vous l'avez vu, emerge est l'outil qui va vous permettre d'installer et de désinstaller des paquetages. La documentation Gentoo en donne un très bon mode d'emploi.

Bon, vous savez vous servir d'emerge. Soit :) Mais vous êtes toujours devant une bête ligne de commande.

Ils vous faut un envirronement de bureau. KDE, Gnome, XFCE, E17, Fluxbox, vous avez le choix. Regardez les captures d'écran et lancez vous.

Pour l'installation et la configuration de ces différents environnements de bureau, je vous engage à lire les documentations suivantes:

Cependant, une partie de la configuration nécessite que nous nous attardions un peu dessus, et ce, quelque soit votre choix d'environnement de bureau. Il s'agit de...

La configuration de X

Les drivers compilés pour X dépendent des variables INPUT_DEVICES et VIDEO_CARDS définies dans le fichier /etc/make.conf.

Les pilotes propriétaires pour les cartes nvdia sont: x11-drivers/nvidia-drivers

Les pilotes propriétaires pour les cartes ati sont x11-drivers/ati-drivers

Depuis quelques temps maintenant, si vous utilisez Hal dans vos USE flags, vous pouvez n'utiliser que le driver evdev pour vos périphériques d'entrée, c'est à dire souris, clavier, tablette graphique, etc, Tous ces périphériques sont configurés automatiquement par Hal, mais pour le clavier, c'est malheureusement un clavier QWERTY qui sera configuré par défaut. Pour récupérer un clavier français, il vous faut éditer le fichier /etc/hal/fdi/policy/10-xinput-configuration.fdi Ce fichier devra contenir les lignes suivantes:

<?xml version="1.0" encoding="UTF-8"?>
<!--
Section "InputDevice"
   Driver "evdev"
   Option "XkbLayout" "fr"
   Option "XkbModel" "pc105"
   Option "XkbVariant" "oss"
EndSection
-->
<deviceinfo version="0.2">
   <match key="info.capabilities" contains="input.keyboard">
      <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
      <merge key="input.x11_options.XkbModel" type="string">pc105</merge>
      <merge key="input.x11_options.XkbVariant" type="string">oss</merge>
   </match>
</deviceinfo>

Ce fichier configure un clavier français, azerty, utilisant la variante oss dont vous trouverez une représentation ci-dessous

Clavier oss

Une fois le fichier édité, pensez à relancer hal. Ce dernier ne sait pas encore relire à la volée les modifications faites à sa configuration.

/root@localhost ~ # etc/init.d/hald restart
* Stopping Hardware Abstraction Layer daemon...                    [ok]
* Starting Hardware Abstraction Layer daemon...                    [ok]

Vous pouvez maintenant découvrir Gentoo / Funtoo.

Amusez-vous bien.