GRUB est-il la meilleure solution de bootloading? Existe-t-il une alternative plus simple?

26

J'ai eu des expériences plutôt mauvaises avec GRUB2. Je pourrais dire (et ai dit) des choses désagréables sur son processus de conception et de développement. Je n'aime pas particulièrement ses moyens de mise à jour: pour une raison quelconque, il doit mettre à jour semi-automatiquement plusieurs scripts - l'un indirectement via un autre dans une chaîne - pour chaque mise à jour du noyau - ou de nombreuses autres modifications de configuration mineures (et apparemment sans rapport) .

Ceci est directement contrasté par les expériences précédentes que j'ai eues LILO- auxquelles je pense sérieusement revenir - car je n'ai jamais eu de problème avec cela, et sa configuration était assez simple. D'une part, si je me souviens bien, je n'avais qu'à mettre à jour (ou, plutôt, il n'a jamais été mis à jour) qu'un seul fichier texte de configuration géré simplement par mise à jour du noyau.

Alors, comment LILO fonctionne-t-il sur du matériel moderne avec les noyaux d'aujourd'hui? Comment fonctionne GRUB? Comment les autres chargeurs de démarrage? Dois-je remplir des conditions préalables, ou s'agit-il simplement d'écrire le fichier de configuration et d'exécuter la lilocommande comme je m'en souviens avec émotion dans le passé? La mise à jour du paquet du noyau (Debian / Ubuntu) met-elle à jour LILO comme elle le fait avec GRUB2?

Communauté
la source
Selon que vous ayez ou non un type de firmware EFI, vous pouvez vous en passer si vous avez aimé et charger le noyau linux à partir du firmware. Mais vous pouvez toujours utiliser LILO avec EFI (eLILO de toute façon) ou BIOS. Il est dans l'arborescence des sources du noyau et est maintenu. Si vous voulez savoir comment faire la chose EFI, je peux répondre à cela, mais je n'ai pas d'expérience personnelle avec LILO, sachez simplement qu'elle est conservée et fonctionne.
mikeserv
Je me souviens avoir utilisé LILO vers 2010 ou 2011 sur un Core 2 Duo actuel. Je suppose que cela devrait encore fonctionner (sans considérer UEFI, etc.), l'architecture du PC n'a pas beaucoup changé.
Renan
@mikeserv, veuillez écrire tout ce que vous savez sur le duo LILO-EFI. Toute information concernant ce sujet est la bienvenue.
J'ai en fait écrit quelque chose que vous pourriez trouver utile plus tôt ici qui traite brièvement des différences entre uefi / bios. Le fait est que l'efi comprend un chargeur de démarrage, donc grub / lilo / rien est redondant. Ce qu'il n'inclut souvent pas, c'est un gestionnaire de démarrage - pour les menus et autres - donc je vous recommande d'aller sur rodsbooks.com/refind
mikeserv
3
C'est toujours ce qui est livré avec Slackware. Ce n'est guère une petite communauté.
Bandrami

Réponses:

28

ELILO

Gestion des chargeurs de démarrage EFI pour Linux: utilisation d'ELILO

Il est vraiment difficile pour moi de décider quelle partie de cela copier / coller parce que tout est vraiment bon, alors je vous demanderai simplement de le lire.

Rod Smith

Créé et maintient à la fois gdisket rEFInd.

Mais avant de le faire, je voudrais en parler un peu. Le lien ELILO ci-dessus est vers l'une des nombreuses pages sur le démarrage UEFI que vous trouverez sur rodsbooks.com écrite par Rod Smith. C'est un rédacteur technique accompli, et si vous avez déjà cherché sur le sujet du démarrage de l'UEFI et que vous n'avez pas lu quelque chose de lui, c'est probablement parce que vous avez ignoré les premiers résultats.

Démarrage UEFI Linux

Fondamentalement, le noyau Linux peut être directement exécuté par le firmware.

Dans le lien ci-dessus, il mentionne le chargeur de stub EFI du noyau Linux - c'est ce que vous devriez utiliser, à mon avis, car il permet au noyau linux d'être appelé directement par le firmware lui-même. Indépendamment de ce que vous faites, quelque chose est exécuté par le firmware - et il semble que ce soit quelque chose grub. Si le firmware peut charger directement votre noyau os, à quoi sert un chargeur de démarrage? Le micrologiciel UEFI monte une partition GPT au format FAT marquée esp par la table de partition et y exécute un chemin qu'il a enregistré en tant que variable de démarrage UEFI dans un module de mémoire flash intégré. Donc, une chose que vous pourriez faire est de placer le noyau Linux sur cette partition FAT et de stocker son chemin dans cette variable de démarrage. Soudain, le noyau est le sien chargeur de démarrage.

Chargeurs de démarrage

Sur les systèmes UEFI, les chargeurs de démarrage sont redondants - ELILO inclus.

Le problème des chargeurs de démarrage a été conçu pour résoudre le problème: les systèmes BIOS ne lisent que le premier secteur de la partition marquée de démarrage et l'exécutent. Il est un peu difficile de faire quoi que ce soit de significatif avec un noyau de 512 octets, donc la chose courante à faire était d'écrire un petit utilitaire qui pourrait monter un système de fichiers où vous avez gardé le noyau réel et le charger en chaîne.

En fait, les 512 octets n'étaient souvent pas suffisants, même pour les chargeurs de démarrage. grub, par exemple, se charge lui-même en chaîne avant de charger votre noyau en chaîne, car il coince sa deuxième étape dans l'espace vide entre le secteur de démarrage et le premier secteur de votre système de fichiers. C'est une sorte de hack sale - mais cela a fonctionné.

Bootmanagers

Dans un souci de configuration facile, certains intermédiaires peuvent être utiles.

Ce que fait rEFInd de Rod Smith, c'est le lancement en tant qu'application EFI - c'est un concept relativement nouveau. Il s'agit d'un programme qui est exécuté à partir du disque par - et qui revient au - firmware. Ce que rEFInd fait est de vous permettre de gérer les menus de démarrage, puis de retourner votre sélection de démarrage au micrologiciel pour l'exécuter. Il est livré avec des pilotes de système de fichiers UEFI - ainsi, par exemple, vous pouvez utiliser le chargeur EFI-stub du noyau sur une partition non FAT (telle que votre version actuelle /boot). Il est très simple à gérer - si une telle chose est nécessaire - et il ajoute la simplicité d'un noyau système exécutable à la commodité d'un gestionnaire de démarrage configurable.

Indirection atomique

Le noyau n'a pas besoin de liens symboliques - c'est possible mount --bind.

S'il y a un chemin sur votre /où vous devez désavouer un lien symbolique, il est /boot. Un lien symbolique orphelin dans /bootn'est pas le genre de problème que vous devriez avoir à résoudre. Pourtant, c'est une pratique assez courante pour configurer des indirections élaborées dans /bootplusieurs distributions - même si c'est une idée horrible - afin de gérer les mises à jour du noyau sur place et / ou plusieurs configurations de noyau.

C'est un problème pour les systèmes EFI non configurés pour charger les pilotes de système de fichiers (tels que ceux fournis avec le package rEFInd) car FAT est un système de fichiers assez stupide dans l'ensemble, et il ne les comprend pas.

Je n'utilise pas personnellement les pilotes de système de fichiers UEFI fournis avec rEFInd, bien que la plupart des distributions incluent un package rEFInd qui peut être installé via le gestionnaire de packages et oublié d'utiliser simplement leur horrible /bootconfiguration de lien symbolique et les pilotes de système de fichiers UEFI empaquetés de rEFInd.

Ma config

J'ai écrit une fois un ensemble d'instructions dessus et je l'ai posté ici , mais ça ressemble à:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

Je viens donc de mettre ces deux lignes dans mon /etc/fstabpointage vers un dossier dans lequel j'ai l'intention de contenir la nouvelle installation linux /bootet j'ai presque fini de m'inquiéter pour le tout. Je dois aussi faire:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

En plus d'installer le refind-efipackage via pacmanpour le premier, c'est tout ce qui est nécessaire pour installer autant d'installations / configurations distinctes que je le souhaite. Notez que la majorité de cette chaîne ci-dessus se compose d'options de montage spécifiques à btrfs spécifiées en tant que paramètres du noyau. Un plus typique /boot/refind_linux.confressemblerait probablement à:

"Menu Entry" "root=/dev/sda2"

Et c'est tout ce qu'il faut.

rodsbooks.com

Si vous voulez toujours ELILO, vous pouvez trouver les instructions d'installation sur le lien ci-dessus. Si vous voulez rEFInd, vous y trouverez des liens dans le premier paragraphe. Fondamentalement, si vous souhaitez effectuer une configuration de démarrage UEFI, lisez d' abord rodsbooks.com .

mikeserv
la source
3

J'utilise LILO au lieu de GRUB2. Pour être honnête, ce n'était pas mon choix - l'installation de GRUB2 a échoué dans le programme d'installation de Debian Live CD, mais c'était l'option d'installer LILO qui a réussi. J'ai un ordinateur portable de 2 ans exécutant Debian Stable. LILO fonctionne parfaitement pour moi.

Larsoden
la source
1

LILO est toujours utilisable, même avec les BIOS UEFI. UEFI peut charger le noyau Linux directement, généralement. Cela dépend cependant de l'UEFI lui-même.

Cependant, si vous avez besoin d'un écran de sélection de démarrage, par exemple si vous démarrez dans plusieurs systèmes d'exploitation sur une même machine, un petit chargeur de démarrage peut être pratique.

J'envisagerais plutôt d' utiliser EXTLINUX . C'est une variante de SYSLINUX, mais elle réside dans des extpartitions de type.

La beauté d'EXTLINUX est que, bien qu'il soit plus extensible et comporte beaucoup plus d'options que LILO, il peut être tout aussi simple et activement maintenu.

polémon
la source
-1 Le paquetage du noyau (deb / ubuntu) ne mettra pas à jour EFI. (EFI ne lira pas les fs qui prennent en charge les liens symboliques, vous ne pouvez donc pas simplement utiliser ma réponse). +1 pour EXTLINUX comme alternative plus récente à LILO. Votre lien montre qu'il prend en charge plusieurs autres systèmes de fichiers, ce qui est bon signe. Le support EFI a l'air un peu nouveau cependant, là où c'est nécessaire.
sourcejedi
@sourcejedi - vous vous trompez. Un système EFI sur lequel les pilotes appropriés du système de fichiers EFI sont chargés peut gérer facilement les liens symboliques.
mikeserv
Pour une raison quelconque, la liaison directe avec syslinux.com semble interdite.
polemon
@mikeserv Je sais, mais le chargement d'un pilote de système de fichiers m'a semblé quelque peu obscur dans la plupart des cas. Vous auriez même besoin d'installer une sorte de script EFI (terminologie?) Pour charger le pilote puis le noyau. Oh, et je parie que personne n'a de signatures de démarrage sécurisé MS pour ces pilotes, c'est donc un autre ver: p.
sourcejedi
@sourcejedi - veuillez lire la réponse que j'ai écrite ici? Et oui - vous auriez besoin d'un moyen de charger le pilote.
mikeserv
1

Je ne me souviens d'aucun équivalent de update-grub. Cependant, il existe un système plus ancien qui est toujours pris en charge dans Debian. (Il est utilisé pour le redémarrage sur mon serveur ARM).

Le noyau le plus récent est lié à /boot/vmlinuzet initrd à /boot/initrd.img. Il est mis à jour par le package du noyau. Le chargeur de démarrage pointe sur ces & déréférence le lien symbolique sur chaque démarrage.

Il est donc possible que vous n'obteniez pas d'option de récupération. Dans tous les cas, ce ne sera pas l'option la plus testée, il est donc encore plus conseillé de garder un disque de démarrage fonctionnel :-).


Mise à jour: si votre objectif est autre chose que d'exécuter littéralement LILO sur un ordinateur moderne, il existe probablement de meilleures alternatives, comme décrit par les autres réponses ici :).

Ce qui précède n'a de sens que pour la version originale de LILO basée sur le BIOS. Le matériel moderne offre une compatibilité BIOS par-dessus EFI, si vous ne voulez pas un démarrage sécurisé ou un démarrage de Windows 8 à partir du même menu. Vous pouvez théoriquement faire fonctionner ELILO mais il ne prend pas en charge le démarrage sécurisé ou le chargement de Windows 8. ELILO n'a plus de sens en général, donc je suppose qu'il n'y a pas beaucoup de communauté derrière.

sourcejedi
la source
Pouah. Les liens symboliques dans / depuis /bootsont une solution dégoûtante à tout problème.
mikeserv
welp lilo est mort (et uboot obsolète) alors oui. Quel problème aviez-vous en tête? Les gens n'utilisent pas encore FAT pour / boot ... BootLoaderSpec est un bon projet mais pas encore vraiment là ... et il y a une bonne raison à cela (mauvais brevets, licence compatible FLOSS accordée uniquement pour l'interopérabilité EFI).
sourcejedi
C'était un bon montage.
mikeserv