mise à jour: 05/2024
Pour démarrer une machine, n'importe quel ISO de Live CD Linux peut faire l'affaire mais vous êtes sûr d'avoir tous les outils nécessaires sur le 'Minimal Installation CD' ou le 'LiveGUI USB image' disponibles sur la page de téléchargement Gentoo.
L'un des principes de base de la Gentoo, c'est de vous laisser le choix mais j'ai fait ces choix pour vous ;) . Pour avoir plus de détails, n'hésitez pas à vous reporter à l'excellente documentation en ligne: Gentoo AMD68 Handbook. Il faudra bien sûr adapter la configuration du noyau à votre hyperviseur si vous n'utilisez pas Qemu/KVM ('lspci -k' vous listera les périfériques et les pilotes utilisés) ou utiliser genkernel (voir la doc sus-mentionnée).
S'il n'y a pas de serveur DHCP sur votre réseau (à adapter à votre configuration réseau):
# ip -c a
# ip a add 192.168.0.6/24 dev enp1s0
# ip route add default via 192.168.0.1
# ip link set enp1s0
# emacs /etc/resolv.conf
nameserver 192.168.0.1 nameserver 208.67.222.222 |
# ping -c 3 gentoo.org
Si vous avez besoin d'effectuer l'installation via ssh (par exemple, pour profiter de votre clavier bépo ou pour faire facilement des copier/coller) :
# passwd
# rc-service sshd start
# ip -c a
Pas besoin de l'UEFI
Table de partition utilisée :
/boot | 512Mo | ext2 |
swap | 4096Mo | sw |
/ | reste du disque | ext4 |
Préparation du disque :
# parted -a optimal /dev/vda
(parted)mklabel msdos
(parted)unit mib
(parted)mkpart primary 1 513
(parted)set 1 boot on
(parted)mkpart primary 513 4609
(parted)mkpart primary 4609 -1
(parted)print
(parted)quit
# mkfs.ext2 -T small /dev/vda1
# mkfs.ext4 /dev/vda3
# mkswap /dev/vda2
-Si vous devez reprendre votre installation, repartez d'ici
# swapon /dev/vda2
# mount /dev/vda3 /mnt/gentoo
On peut noter les ID des partitions pour la création du fichier fstab (si on a plusieurs disques, en utilisant les UUID, sinon, on peut utiliser /dev/vda*), on met le système à l'heure et on se déplace dans le dossier où va se dérouler l'installation :
# blkid
# chronyd -q
# cd /mnt/gentoo
Choissez l'archive sur la page suivante (j'utilise la version 'Hardened stage 3' pour ce tuto) et copiez l'adresse du lien :
https://www.gentoo.org/downloads/#other-arches
Téléchargez l'archive et décompressez-la :
# wget <collez l'adresse du lien>
# tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
On édite le fichier make.conf, la commande 'nproc' vous indique le nombre de processeurs disponibles pour la variable MAKEOPTS et tenant compte de la quantité de RAM affectée à votre VM (comptez 2Go de RAM par thread)
# nproc
# emacs /mnt/gentoo/etc/portage/make.conf
COMMON_FLAGS="-march=native -O2 -pipe" CFLAGS="${COMMON_FLAGS}" CXXFLAGS="${COMMON_FLAGS}" MAKEOPTS="-j4 -l4" |
On sélectionne des miroirs dans la liste (je prends tous les français)
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
On monte quelques systèmes de fichier nécessaire à Gentoo
# cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
# mount --types proc /proc /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --make-rslave /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev
# mount --make-rslave /mnt/gentoo/dev
# mount --bind /run /mnt/gentoo/run
# mount --make-slave /mnt/gentoo/run
On entre dans la nouvelle Gentoo
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) ${PS1}"
# mount /dev/vda1 /boot
On la met à jour, on lit les nouvelles et on choisit son profil (le profil 'Hardenned' est sélectionné par défaut).
# emerge-webrsync
# eselect news read
# emerge --sync
#(Optionel, 'emerge --sync' ne fonctionnera pas derrière un proxy)
# eselect profile list
# emerge --ask --verbose --update --deep --newuse @world
La variable USE, dans le fichier make.conf, permet de sculpter votre Gentoo selon vos besoin. Liste des valeurs disponibles :
https://www.gentoo.org/support/use-flags/#global
Si vous utilisez emacs, il faut l'installer dans votre nouvel environnement
# emerge -a emacs
# emacs /etc/portage/make.conf
Je n'utilise ni l'interface graphique, ni le son, ni la wifi ni le serveur d'impression
USE="-X -cups -sound -wifi" |
On peut ajouter des informations sur notre processeur
# emerge --ask --oneshot app-portage/cpuid2cpuflags
# cpuid2cpuflags
# echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
Un peu de localisation
# echo "Europe/Paris" > /etc/timezone
# emerge --config sys-libs/timezone-data
# emacs /etc/locale.gen
fr_FR.UTF-8 UTF-8 fr_FR ISO-8859-1 fr_FR@euro ISO-8859-15 |
# locale-gen
# eselect locale list
Sélectionnez l'UTF-8
# eselect locale set 7
# env-update && source /etc/profile && export PS1="(chroot) $PS1"
Il est temps d'installer les sources du noyau Linux et de créer le lien symbolique pointant vers /usr/src/linux.
# emerge --ask sys-kernel/gentoo-sources
# emerge --ask sys-kernel/installkernel
# eselect kernel list
# eselect kernel set 1
Installez également pciutils pour avoir des informations sur votre configuration matériel grâce à la commande 'lspci -k', ces informations seront nécessaire pour la configuration du noyau.
Dans le menu de configuration du noyau, vous pouvez tapez '/' puis le nom d'un module pour vérifier qu'il est bien sélectionné
# emerge --ask sys-apps/pciutils
Configurons le noyau:
# cd /usr/src/linux
# make menuconfig
General setup ---> (tux) Default hostname Preemption Model (No Forced Preemption (Server)) ---> Processor type and features ---> [*] Symmetric multi-processing support [*] Linux guest support ---> [*] Enable paravirtualization code [ ] paravirt-ops debugging (NEW) [ ] Paravirtualization layer for spinlocks (NEW) [ ] Xen guest support (NEW) [*] KVM Guest support (including kvmclock) (NEW) -*- Disable host haltpoll when loading haltpoll driver Processor family (Opteron/Athlon64/Hammer/K8) ---> (X) Opteron/Athlon64/Hammer/K8 ( ) Intel P4 / older Netburst based Xeon ( ) Core 2/newer Xeon ( ) Intel Atom ( ) Generic-x86-64 [ ] EFI runtime service support [X] Machine Check / overheating reporting [ ] Intel MCE Features [X] AMD MCE Features Power management and ACPI options ---> [ ] Suspend to RAM and standby [ ] Hibernation (aka 'suspend to disk') [ ] Virtualization -*- Enable the block layer ---> Partition Types ---> [ ] Advanced partition selection [*] Networking support ---> -*- Wireless ---> < > cfg80211 - wireless configuration API < > RF switch subsystem support --- < > Plan 9 Ressource Sharing Support (9P2000) --- Networking options ---> [*] Network packet filtering framework (Netfilter) ---> Device Drivers ---> Generic Driver Options ---> [*] Maintain a devtmpfs filesystem to mount at /dev [ ] Automount devtmpfs at /dev, after the kernel mounted the rootfs < > PCCard (PCMCIA/CardBus) support ---- Firmware Drivers ---> <* > BIOS Enhanced Disk Drive calls determine boot disk <* > QEMU fw_cfg device support in sysfs [*] Block devices ---> <*> Virtio block driver [ ] Multiple devices driver support (RAID and LVM) ---- [ ] Macintosh device drivers ---- [*] Network device support ---> [*] Network core driver support <*> Virtio network driver [ ] Ethernet driver support --- Multifunction device drivers ---> <M> Intel ICH LPC Graphics support ---> [ ] Auxiliary Display support ---- < > /dev/agpgart (AGP Support) ---- [ ] Laptop Hybrid Graphics - GPU switching support < > Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---- Frame buffer Devices ---> <M> Support for frame buffer device drivers ---> <M> Simple framebuffer support [ ] Enable firmware EDID [*] Provide legacy /dev/fb* device [ ] Framebuffer foreign endianness support ---- [ ] Enable Video Mode Handling Helpers [ ] Enable Tile Blitting Support < > Sound card support ---- [*] Virtio drivers (NEW) ---> --- Virtio drivers <*> PCI driver for virtio devices [*] Support for legacy virtio draft 0.9.X and older devices (NEW) <*> Virtio balloon driver (NEW) <*> Virtio input driver (NEW) < > Platform bus driver for memory mapped virtio devices (NEW) File systems ---> <*> Second extended fs support [*] Ext2 extended attributes <*> The Extended 4 (ext4) filesystem [ ] Miscellaneous filesystems ---- DOS/FAT/NT Filesystems ---> <*> MSDOS fs support <*> VFAT (Windows-95) fs support -*- Native Language support ---> <*> Codepage 850 (Europe) [*] NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) Pseudo Filesystems ---> [*] /proc file system support [*] Tmpfs virtual memory file system support (former shm fs) |
Compilation et installation du noyau :
# make && make modules_install
# make install
Configuration du système (nom d'hôte, config réseau, mot de passe root, disposition du clavier) :
# emacs /etc/fstab
/dev/vda1 | /boot | ext2 | defaults | 0 2 |
/dev/vda2 | none | swap | sw | 0 0 |
/dev/vda3 | / | ext4 | defaults,noatime | 0 1 |
# echo tux > /etc/hostname
# emacs /etc/conf.d/net
config_enp1s0="192.168.0.6/24" routes_enp1s0="default via 192.168.0.1" ou config_enp1s0="dhcp" |
# cd /etc/init.d
# ln -s net.lo net.enp1s0
# rc-update add net.enp1s0 default
# passwd
# emacs /etc/conf.d/keymaps
keymap="fr-bepo" |
Installation de quelques outils système :
# emerge --ask app-admin/sysklogd
# rc-update add sysklogd default
# emerge --ask sys-process/cronie
# rc-update add cronie default
# emerge --ask sys-apps/mlocate
# emerge --ask net-misc/chrony
# rc-update add chronyd default
Installation de GRUB :
# emerge --ask --verbose sys-boot/grub
# grub-install /dev/vda
# grub-mkconfig -o /boot/grub/grub.cfg
L'installation est terminée mais on va tout de suite créer un utilisateur et on lance le serveur ssh pour pouvoir se connecter à distance dès le premier redémarrage.
# useradd -m -G users,wheel -s /bin/bash rod
# passwd rod
# rc-update add sshd default
On démonte les partitions et on reboot :
# exit
# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -R /mnt/gentoo
# reboot
On peut faire un peu de ménage et supprimer l'archive.
# rm /stage3-*.tar.*
Faites un snapshot!
Félicitations!