[systemd-boot] avec $esp dans /boot/efi (résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

[systemd-boot] avec $esp dans /boot/efi (résolu)

Message par otacon »

Bonjour à tous,

Etat des lieux :

Un disque unique en GPT et Uefi
Un dual boot avec des partitions windows et des partitions linux
Le double boot est géré par le firmware du bios (F12 au demarrage pour booter windows)

mon partitionnement :

Code : Tout sélectionner

Disque /dev/sda : 477 GiB, 512110190592 octets, 1000215216 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : E12C50E2-F701-4FFB-AF5D-5BA89DD9EADF

Périphérique    Début        Fin  Secteurs Taille Type
/dev/sda1         2048    2050047   2048000  1000M Environnement de récupération Windows
/dev/sda2      2050048    2582527    532480   260M Système EFI
/dev/sda3      2582528    2844671    262144   128M Réservé Microsoft
/dev/sda4      2844672  128514047 125669376  59,9G Données de base Microsoft
/dev/sda5    128514048  169474047  40960000  19,5G Système de fichiers Linux
/dev/sda6    169474048 1000214527 830740480 396,1G Système de fichiers Linux
Donc pas de /boot séparé. A l'installation de grub, j'ai monté $esp dans /boot/efi. J'ai donc seulement l'entrée .efi de grub dans $esp, et le noyau dans /boot (permet de séparer vraiment windows et arch, avec les éléments de bootloaders seuls dans $esp.

mon $esp (nettoyé des fonts et languages pour la compréhension):

Code : Tout sélectionner

efi
├── BOOT
│   └── boot.sdi
├── EFI
│   ├── arch_grub
│   │   └── grubx64.efi
│   ├── Boot
│   │   ├── BOOTX64.EFI
│   │   ├── LenovoBT.EFI
│   │   ├── License.txt
│   │   └── ReadMe.txt
│   ├── Lenovo
│   │   └── Boot
│   │       ├── BCD
│   │       ├── BCD.LOG
│   │       ├── BCD.LOG1
│   │       ├── BCD.LOG2
│   │       ├── bg-BG
│   │       │   ├── bootmgfw.efi.mui
│   │       │   └── bootmgr.efi.mui
│   │       ├── bootmgfw.efi
│   │       ├── bootmgr.efi
│   │       ├── BOOTSTAT.DAT
│   │       ├── boot.stl
│   ├── Microsoft
│   │   └── Boot
│   │       ├── BCD
│   │       ├── BCD.LOG
│   │       ├── BCD.LOG1
│   │       ├── BCD.LOG2
│   │       ├── bg-BG
│   │       │   ├── bootmgfw.efi.mui
│   │       │   └── bootmgr.efi.mui
│   │       ├── bootmgfw.efi
│   │       ├── bootmgr.efi
│   │       ├── BOOTSTAT.DAT
│   │       ├── boot.stl
│   └── systemd
│       └── systemd-bootx64.efi
└── loader
    ├── entries
    │   └── arch.conf
    └── loader.conf
J'essaie de mettre en place le boot via systemd-boot. Pour cela, je remonte $esp dans /boot/efi puis

Code : Tout sélectionner

sudo bootctl --path /boot/efi install
je corrige /boot/efi/loader/loader.conf comme ceci (base wiki gummiboot):

Code : Tout sélectionner

default  arch
timeout  4
je corrige /boot/efi/loader/entries/arch.conf comme ceci (idem base wiki en changeant le PARTUUID par le bon) :

Code : Tout sélectionner

title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw
Je reboote, ça boote sur systemd-boot, le timout agit, mais il ne trouve pas vmlinuz-linux, ce qui est normal puisqu'il le noyau n'est pas dans $esp mais dans /boot.

Question si vous ête inspirés : le noyau doit il être obligatoirement dans l'$esp montée via le fstab dans /boot pour que systemd-boot fonctionne ?
Dernière modification par otacon le jeu. 02 juil. 2015, 14:52, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd-boot] avec $esp dans /boot/efi

Message par benjarobin »

Si tu veux utiliser systemd-boot, soit Gummiboot, alors oui le noyau doit être dans la partition esp.
En gros tu as 2 possibilités :
  • La partition esp montée dans /boot, ce qui aura comme conséquence d'avoir le noyau Linux à la racine de la partition esp, ce qui est relativement moche de mon point de vue, mais n'est pas forcément un problème
  • Configurer un script/service systemd pour recopier le kernel ainsi que l'initramfs dans un sous dossier de la partition esp qui sera monté dans /boot/efi. Voir la page du wiki ESP
J'en avais aussi discuté ici : viewtopic.php?p=143035#p143035
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [systemd-boot] avec $esp dans /boot/efi

Message par otacon »

Ok.
Admettons que je migre le noyau dans l'$esp. La procédure que j'envisage (pas envie de réinstaller) :

je monte $esp dans /boot/efi
je copie simplement (cp -R) initrampfs-linux.img, initrampfs-linux-fallback.img, intel-ucode.img, vmlinuz-linux de /boot dans /boot/efi
je démonte l'$esp
je complète mon fstab avec une ligne pour monter $esp dans /boot
je reboote.
Si ça fonctionne, je désinstalles grub, je vide les doublons qui sont restés dans /boot.

Question 1 : j'oublie rien ? reinitlisation de quelque chose ?
Question 2 : vous n'auriez pas sous la main la bonne ligne à ajouter dans fstab pour monter $esp dans /boot ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd-boot] avec $esp dans /boot/efi

Message par benjarobin »

Tu peux tout faire en une seule fois, ou tout simplement y aller par étape. Je te conseil de faire ceci:
  • Monter la partition esp dans /boot/efi
  • Copier ce que tu as indiqué de /boot dans /boot/efi
  • Redémarrer et teste qu'il est possible de démarrer via systemd-boot
Une fois que ceci fonctionne, et que tu ne démarres plus via grub, tu dois faire ceci :
  • Partition ESP non monté ! => rm -Rf /boot/*
  • Désinstallation de Grub
  • Suppression de l'entrée de Grub dans la mémoire NVRAM via l'outil : efibootmgr
  • Modification de la ligne du fstab montant la partition esp : il suffit de changer le point de montage de /boot/efi à /boot
Tester à nouveau...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [systemd-boot] avec $esp dans /boot/efi

Message par otacon »

merci, mais /boot/efi n'a jamais été monté dans mon fstab, puisque seule la racine a été montée à l'installation. $esp n'a été montée dans /boot/efi que pour l'installation de grub.

mon fstab actuel :

Code : Tout sélectionner

# 
# /etc/fstab: static file system information
#
# <file system>	<dir>	<type>	<options>	<dump>	<pass>
# /dev/sda5
UUID=1526bd9f-1024-4e6f-9194-f4d8bf66d2f2 / ext4 rw,relatime,data=ordered 0 1

# /dev/sda6
UUID=92f258ab-35aa-4a2d-94e7-ff1f596e80db /home/data ext4 rw,relatime,data=ordered 0 2
Il me faudrait la ligne type pour ne pas faire de bêtise. :D

Edit : j'ai besoin de tout ça ? (trouvé dans le wiki fstab) :

Code : Tout sélectionner

UUID=CBB6-24F2                            /boot vfat   rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0      2
Edit2 : ou ceci suffit :

Code : Tout sélectionner

UUID=CBB6-24F2                 /boot        vfat         rw,relatime,data=ordered   0  2
otacon
Chu Ko Nu
Messages : 466
Inscription : sam. 07 sept. 2013, 19:22
Localisation : Limousin

Re: [systemd-boot] avec $esp dans /boot/efi

Message par otacon »

Merci benjarobin pour ton support :)
fait, migré.
En passant, la bonne ligne de fstab (le data-ordered a posé probleme) :

Code : Tout sélectionner

UUID=CBB6-24F2                 /boot        vfat         rw,relatime   0  2
Résolu.
Répondre