igloo

Installation d'une Gentoo en VM avec QEMU/KVM



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 CD d'installation minimal 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 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 a

Pas besoin de l'UEFI
Table de partition utilisée :

/boot128Moext2
swap2048Mosw
/reste du disqueext4

Préparation du disque :

# parted -a optimal /dev/vda
(parted)mklabel msdos
(parted)unit mib
(parted)mkpart primary 1 129
(parted)set 1 boot on
(parted)mkpart primary 129 2177
(parted)mkpart primary 2177 -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 note les ID des partitions, on va en avoir besoin pour la configuration du noyau et la création du fichier fstab et on met le système à l'heure :

# blkid
# ntpd -q -g
# cd /mnt/gentoo

Choissez l'archive sur la page suivante (j'utilise la version 'hardened' 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

# emacs /mnt/gentoo/etc/portage/make.conf

COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"

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

# mkdir --parents /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
# 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

On entre dans la nouvelle Gentoo

# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) ${PS1}"
# mkdir /boot
# mount /dev/vda1 /boot

On la met à jour, on lit les nouvelles et on choisit son profil.

# 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 hardened lm_sensors -sound -wifi"

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 6
# env-update && source /etc/profile && export PS1="(chroot) $PS1"

Il est temps d'installer les sources du noyau Linux

# emerge --ask sys-kernel/gentoo-sources

Installez 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.

# emerge --ask sys-apps/pciutils

Configurons le noyau:

# cd /usr/src/linux
# make menuconfig

-*- Enable the block layer --->
Partition Types --->
[ ] Advanced partition selection

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 (Generic-x86-64) --->
( ) Opteron/Athlon64/Hammer/K8
( ) Intel P4 / older Netburst based Xeon
( ) Core 2/newer Xeon
( ) Intel Atom
(X) Generic-x86-64
[ ] EFI runtime service support
[X] Machine Check / overheating reporting
[ ] Intel MCE Features
[X] AMD MCE Features

[*] Networking support --->
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
[*] 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)
[*] Block devices --->
<*> Virtio block driver
[ ] Macintosh device drivers ----
[*] Network device support --->
[*] Network core driver support
<*> Virtio network driver
[ ] Ethernet driver support ---

Firmware Drivers --->
<*> BIOS Enhanced Disk Drive calls determine boot disk
<*> QEMU fw_cfg device support in sysfs

File systems --->
<*> Second extended fs support
<*> The Extended 4 (ext4) filesystem
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

UUID=6472-9F0C/bootext2defaults,noatime0 2
UUID=61f2ab02-4055-463f-9331-db046af0ba19noneswapsw0 0
UUID=deefc02d-376e-43fd-a0f0-fde3e4a6c89c/ext4noatime0 1

# emacs /etc/conf.d/hostname

hostname="IG-88"

# 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

Installation d'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
# rc-update add sshd default

Installation de GRUB 2 :

# emerge --ask --verbose sys-boot/grub:2
# grub-install /dev/vda
# grub-mkconfig -o /boot/grub/grub.cfg

L'installation est terminée :

# exit
# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -R /mnt/gentoo
# reboot

Mon interface réseau change de dénomination entre l'installation avec le Gentoo Live CD et le redémarrage, elle passe de 'enp1s0' à 'eth0'. Il faut rééditer /etc/conf.d/net, effacer /etc/init.d/net.enp1s0 et le retirer du démarrage, créer le lien symbolique /etc/init.d/net.eth0 et l'ajouter à init.

# emacs /etc/conf.d/net
# cd /etc/init.d
# rm net.enp1s0
# ln -s net.lo net.eth0
# rc-update del net.enp1s0 default
# rc-update add net.eth0 default
# rc-service net.eth0 start

Créer un utilisateur

# useradd -m -G users,wheel -s /bin/bash larry
# passwd larry

Password: (Enter the password for larry)
Re-enter password: (Re-enter the password to verify)

# rm /stage3-*.tar.*

Faites un snapshot!

Félicitations!