Boot UEFI

28 juillet 2013 - Mots-clés : Arch Liens Linux

But

Le but de cet article est décrire l'installation d'Arch 64 Linux sur un notebook Asus F201E. A l'origine, seul Windows 8 64 bits est installé. Cet OS est démarré grâce à la nouvelle méthode de boot dénommée UEFI. Pour conserver l'OS d'origine, Arch 64 devra donc booter en utilisant la même technique.

Préparatifs

A effectuer sur une machine déjà fonctionnelle :

  • Téléchargez la dernière image ISO d'installation d'Arch. Par exemple le fichier archlinux-2013.07.01-dual.iso au moment de la rédaction de cet article ;
  • Copiez la sur une clé USB :
dd bs=1M if=archlinux-2013.07.01-dual.iso of=/dev/sdX
  • ou gravez la sur un DVD.

Setup du BIOS

Il faut autoriser la machine à booter sur la clé USB. Pour cela, entrez dans le setup du BIOS en maintenant la touche F2 enfoncée. Puis modifiez les paramètres suivants (Source) :

Dans l'onglet « Boot» , autorisez « Launch CSM » , cf image ci-dessous :

  • dans l'onglet Security, interdisez « Secure Boot Control », cf image ci-dessous :

Bootez sur la clé USB d'installation de Arch 64 :

  • dans l'onglet Save & Exit, sélectionnez et validez l'option qui correspond au support de boot (ici une clé USB), cf image ci-dessous :

une fois booté sur la clé, le menu d'installation apparait :

Chargez la disposition d'un clavier français :

# loadkeys fr

Repartitionnement du disque dur

Démarrez installation d'Arch 64 dans le menu. Lancez l'outil gdisk pour voir l'état du disque dur avant suppression / redimensionnement des partitions :

# gdisk /dev/sda
p

ce qui donne le résultat suivant :

Bootez Windows 8 et utilisez l'outil d'administration du disque dur pour supprimer la partition de données (DATA) et éventuellement redimensionnez la partition principale (OS). Ici, la partition de données (numéro 5) a été supprimée et la partition principale a été réduite (numéro 4 réduite de 186.3 à 136.7 Go).

Bootez à nouveau sur la clé USB d'installation d'Arch. Lancez l'outil gdisk pour voir l'état du disque dur après suppression / redimensionnement :

Créez les partitions à votre convenance : au minimum une partition de swap et une partition pour /. Etat du disque dur après création de nouvelles partitions :

Device Montage Taille
/dev/sda6 swap 4 Go
/dev/sda7 / 30 Go
/dev/sda8 /home 273.7 Go

Configuration du swap

# mkswap /dev/sda6
# swapon /dev/sdb6

Formatage des partitions

# mkfs.ext4 /dev/sda7
# mkfs.ext4 /dev/sda8
# mount /dev/sda7 /mnt
# mkdir /mnt/home
# mount /dev/sda8 /mnt/home

Suite de l'installation

Vérifiez que le réseau fonctione par un ping :

# ping www.tf1.fr

Installez les packages des groupes base et base-devel :

# pacstrap /mnt base base-devel

Installez aussi l'utilitaire de multiboot rEFInd et wpa_supplicant :

# pacman -S refind-efi -r /mnt
# pacman -S wpa_supplicant dialog

Par le jeu des dépendances, cela installe également le package efibootmgr.

Pour la suite, ça se passe comme dans la doc d'installation (cf section Liens ci-dessous), je ne répète pas les commentaires :

# genfstab -U -p /mnt >> /mnt/etc/fstab

Chrootez dans le nouveau système :

# arch-chroot /mnt

Créez le fichier /etc/hostname et saisissez le nom de la machine :

# vi /etc/hostname

Modifiez le fichier /etc/locale.gen en décommentant la ligne suivante :

fr_FR.UFT-8 UFT-8

Lancez locale-gen :

# locale-gen

Créez le fichier /etc/locale.conf :

# vi /etc/locale.conf

Et insérez y la ligne suivante (même chaîne caractères que dans /etc/locale.gen) :

LANG="fr_FR.UTF-8"

Pour configurer les consoles virtuelles, créez le fichier /etc/vconsole.conf :

# vi /etc/vconsole.conf

Et insérez y la ligne suivante :

KEYMAP=fr-pc

Configuration du fuseau horaire :

ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime

Pour configurer le ramdisk, ajoutez ext4 à MODULES dans /etc/mkinitcpio.conf (ça marche aussi sans...) :

# vi /etc/mkinitcpio.conf
MODULES="ext4"

Et générez le ramdisk :

# mkinitcpio -p linux

Installation d'un Shell EFI

# mkdir /boot/efi
# blkid /dev/sda1

Notez l'UUID de /dev/sda1. Chez moi, ça donne : 5AEB-24AD. Attention à respecter la casse (minuscules/majuscules) !

Pour pouvoir monter la partition d'ESP, éditez le fichier /etc/fstab en y ajoutant la ligne suivante (mettez votre propre UUID) :

UUID=5AEB-24AD /boot/efi vfat noauto 0 0

Montez la partion d'esp :

# mount /boot/efi

Boot du Shell EFI

La clé USB d'installation d'Arch 64 contient une partition de boot EFI. Cette partition est /dev/sdb2 chez moi. On va donc y prélever le Shell EFI version 2 pour le copier dans notre partition /boot/efi.

# mkdir /mnt/usbkey
# mount /dev/sdb2 /mnt/usbkey
# cp /mnt/usbkey/EFI/shellx64_v2.efi /boot/efi/shellx64.efi

Si vous avez booté à partir d'un DVD, on va y prélever le Shell EFI version 2 :

# exit
# cp /run/archiso/bootmnt/EFI/shellx64_v2.efi /mnt/boot/efi/shellx64.efi
# arch-chroot /mnt

Booter rEFInd

Nous allons utiliser l'outil rEFInd qui permettra de sélectionner l'OS à booter. La configuration sera minimale et laisserons rEFInd se charger de la detection des kernels.

# mkdir -p /boot/efi/EFI/refind/drivers_x64
# cp /usr/share/refind/refind_x64.efi /boot/efi/EFI/refind
# cp /usr/share/refind/drivers_x64/ext4_x64.efi /boot/efi/EFI/refind/drivers_x64
# cp -R /usr/share/refind/icons /boot/efi/EFI/refind

Créez le fichier /boot/efi/EFI/refind/refind.conf :

# vi /boot/efi/EFI/refind/refind.conf

Insérez y les lignes suivantes :

timeout 5
scanfor internal
scan_all_linux_kernels
default_selection "vmlinuz-linux"

ensuite, créez le fichier /boot/refind_linux.conf :

# mkrlconf

et enfin, démontez les fs et rebootez :

# umount /boot/efi
# exit
# umount /mnt/home
# umount /mnt
# reboot

Retirez les clés USB d'installation avant la fin du reboot.

Configuration du boot EFI

Pendant que la machine reboote, entrez dans le setup en maintenant la touche F2 appuyée et aller dans l'onglet "Save & Exit". Sélectionnez ensuite "Launch EFI Shell from filesystem device" :

Une fois le shell lancé :

Affichez les menus de boot :

bcfg boot dump -v

Ajouter refind dans les options de boot du bios UEFI :

bcfg boot add 2 FS0:\EFI\refind\refind_x64.efi "rEFInd"

Changement d'ordre de boot pour que rEFInd deviennent le boot par défaut, suivi d'un reboot :

bcfg boot mv 1 0
reset

Accédez à l'onglet "Exit & Save" du setup comme précédemment, on constate la création d'une entrée "rEFInd" :

Au prochain reboot, on obtient l'écran de sélection de l'OS :

Il n'a plus qu'à attendre la fin du délai ou d'utiliser les flêches pour sélectionner l'OS à booter.

Au final, voici les fichiers que nous avons copiés dans les répertoires de l'ESP :

Note : il existe une commande efibootmgr qui permet d'effectuer les mêmes manipulations que ci-dessus. Cf article dans la section liens ci-dessous.

Micro-code Intel

Le microcode des processeurs Intel n’est plus chargé automatiquement. Voir l'article dans les liens ci-dessous.

Installez le package intel-ucode :

# pacman -S intel-ucode

Modifier le fichier /boot/refind_linux.conf pour ajouter "initrd=/boot/intel-ucode.img" aux options de boot :

"Boot using default options" "root=UUID=9829d6b6-cc27-4c8b-8fb6-9a8be07d7a4c rw add_efi_memmap initrd=/boot/intel-ucode.img initrd=/boot/initramfs-linux.img"
"Boot using fallback initramfs" "root=UUID=9829d6b6-cc27-4c8b-8fb6-9a8be07d7a4c rw add_efi_memmap initrd=/boot/intel-ucode.img initrd=/boot/initramfs-linux-fallback.img"
"Boot to terminal" "root=UUID=9829d6b6-cc27-4c8b-8fb6-9a8be07d7a4c rw add_efi_memmap systemd.unit=multi-user.target initrd=/boot/intel-ucode.img initrd=/boot/initramfs-linux.img"

Comments