web-dev-qa-db-fra.com

Comment convertir une installation BIOS Ubuntu en EFI / UEFI sans réparation de démarrage sur du matériel de démarrage à double Ubuntu?

Configuration précédente:

  • Ubuntu 12.04 sur/dev/sda [Disque dur WD 2T]
  • Ubuntu 14.04 sur/dev/sdb [Disque dur Hitachi 2T]

~ 10 ans d’ordinateur en mode BIOS (pas de PC dans EFI en 2006!), Carte graphique nVidia de base. Le BIOS est configuré pour démarrer sur/dev/sdb où Grub2 est installé et pointe vers 14.04 + 12.04 sur/dev/sda.

Nouvelle configuration:

Ordinateur récent réglé sur le mode EFI. Pas de carte graphique, utilisant le processeur graphique Intel intégré à l'intérieur du Core i7 6700.

Ubuntu 16.04 (nouvelle installation) sur/dev/sda [Samsung 500G SDD]

Ubuntu 16.04 fonctionne bien avec cette configuration. Les points EFI pour démarrer sur le SSD.

Le problème:

Maintenant, comme j'aime bien avoir ma version précédente d'Ubuntu comme sauvegarde, et au cas où j'oublierais de réappliquer un Tweak utile, j'ai extrait le lecteur Hitachi de l'ancien PC et je l'ai installé sur le nouveau.

Alors maintenant j'ai:

  • Ubuntu 16.04 sur/dev/sda [Samsung 500G SDD]
  • Ubuntu 14.04 sur/dev/sdb [Disque dur Hitachi 2T]

Avez-vous utilisé un grub-update le 16.04 pour afficher le menu de menu avec le 14.04. La machine démarre toujours correctement le 16.04 avec le menu de menu affiché.

Mais le problème est qu'il ne démarre pas correctement le 14.04 lorsque je le sélectionne dans le menu grub.

Ce qui se produit:

C'est comme si ubuntu ne trouvait pas du tout le matériel que j'utilise, tout semble être "par défaut".

J'ai réussi à accéder à la session en supprimant les pilotes nVidia du 14.04, mais je reçois:

  • Vidéo 1024x768 par défaut (moche sur un écran LCD 1920!)
  • Pas d'ethernet
  • Pas de son

Les disques, le clavier et la souris fonctionnent normalement.

Tout cela semble "normal" car cette installation de 14.04 était initialement du BIOS, et d'après ce que j'ai pu rechercher, EFI semble montrer le matériel différemment du noyau.

Quel genre de réparation je voudrais:

La question la plus proche était celle-ci: Quelles commandes pour convertir une installation de BIOS Ubuntu en EFI/UEFI sans réparation de démarrage sur du matériel à démarrage unique?

Mais dans ce poste, l’opération n’avait pas de machine en état de marche, ce que j’avais (le 16.04) et qu’aucun démarrage EFI n’était installé, ce que j’ai déjà.

Je préférerais comprendre ce que je fais aussi, plutôt que d'utiliser la réparation de démarrage automatisée (qui, je doute, ferait n'importe quoi d'intelligent dans mon cas) ...

La réponse à la question ci-dessus, a suggéré d'installer le grub-efi dans la version à réparer. Cela ne fonctionne pas vraiment dans mon cas, parce que:

  1. Je ne souhaite pas créer de partition EFI sur mon disque dur (/ dev/sdb) car j'en ai déjà une sur mon disque SSD (/ dev/sda) à partir duquel je démarre.
  2. si je fais une mise à jour de grub-efi le 14.04 en lui demandant d'installer grub sur/dev/sda, il remplacera probablement le 16.04 de la partition efi par celui de l'ancien 14.04. Ce n'est pas souhaitable!

En effet, je pourrais aussi dd le début de/dev/sda pour le restaurer après que 14.04 l’ait écrasé, mais de telles manipulations sont "dangereuses" et risquent de tout détruire!

Ce que j'ai déjà essayé

Avec succès

  • les pilotes nVidia supprimés afin d’obtenir une session "minimale" le 14.04. Avec les pilotes nVidia, cela allait aussi loin que lightdm, mais n’a pas pu démarrer la session Unity.

Sans succès

  • essayé de modprobe e1000e (le pilote Ethernet Ethernet utilisé par le 16.04) et ptp plus pps_core. Les modules chargés correctement mais ne m'ont pas fourni d'interface Ethernet
  • monter la partition efi sur/etc/fstab, comme elle a été montée dans 16.04. Aucune différence.
  • essayé d'ajouter insmod efivars en éditant en direct (style emacs) le menu grub: ne fonctionne pas, il n'y a pas d'efivars.mod dans la liste des modules d'amorçage de 14.04 (ni sur 16.04)

Ce que je n'ai pas encore fait

Installez 14.04 en mode EFI sur une partition de secours que j’ai réservée pour une utilisation ultérieure, mais surtout pas installer grub-efi (voir ci-dessus), et si ce n’est pas possible, mettez-le sur une clé USB que je ne tiens pas à détruire. Ensuite, essayer de comprendre les différences entre cette version installée et celle de mon disque dur.

Question:

Quelle étape suggérez-vous ensuite pour éviter: la réinstallation complète du 14.04 ou le remplacement de mon 16.04 efi grub?

[EDIT] Clarifications:

Je voudrais que le noyau devine les pilotes "automatiquement", comme il est supposé le faire lorsque vous ne le perturbez pas avec des problèmes de BIOS/EFI.

Voici ma compréhension du problème que je ne peux pas résoudre (par manque de documentation claire).

Processus de démarrage: (si je comprends bien)

  • Bouton de mise en marche
  • EFI (ou BIOS) démarre et scanne le matériel
  • Commencez à lire quel que soit le périphérique de stockage paramétré pour un "chargeur initial" (MBR, chargeur EFI ...)
  • Avec EFI, il parcourt la partition EFI, y exécute certains des exécutables (par exemple, shimx64.efi pour contourner la fonctionnalité M $ -Secure-Lockdown), capables de monter des partitions Linux au minimum, comme ext2/3/4. Lisez le fichier grub.cfg qui existe pour trouver où se trouve le "vrai" chargeur grub.
  • Démarre ce "vrai" chargeur grub (sur/dev/sda3 pour moi).
  • Ce "vrai" grub-loader (à partir du 16.04) lit le menu contenant les lignes de la version actuelle (16.04), les récupérations et les lignes de l’ancien 14.04 que j’ai ajouté.
  • Lorsque je choisis 14.04, il lance ensuite le fichier vmlinuz correct sur/dev/sdb1 avec l’image initrd correspondante.
  • De là, le noyau est chargé et essaiera d’obtenir les pilotes appropriés pour la machine (modules). Cela peut être fait à partir de/etc/modules (méthode "manuelle") ou en regardant votre configuration telle qu'elle est rapportée par BIOS/EFI (méthode "automatique").
  • Lorsque le système est défini sur EFI, le noyau examine votre configuration via efivars, pour lequel j'ai trouvé de la documentation ici: https://firmware.intel.com/blog/accessing -uefi-variables-linux . Fondamentalement, il existe un pseudo système de fichiers dans/sys/firmware/efi qui permet au noyau d’interroger votre configuration et d’agir en conséquence.

Je suppose donc que, de toute évidence, un système installé par le BIOS fonctionne autrement. La manière dont le noyau interroge le BIOS étant différente et le système étant démarré en tant que EFI, le noyau ne trouve "aucun matériel" ... et initialise ainsi uniquement une machine par défaut.

Donc, ce que j'essaie de trouver, c'est comment dire cette ancienne installation de 14.04: "maintenant que vous avez été démarré via EFI, veuillez utiliser efivars pour obtenir les détails du matériel" .

... et s'il vous plaît n'hésitez pas à me corriger si je m'étais grossièrement trompé dans mes hypothèses de la description (simplifiée) du processus de démarrage, et à m'indiquer toute lecture utile à ce sujet.

2
Zakhar

J'abandonne l'idée de convertir l'ancienne installation du BIOS en EFI.

Au lieu de cela, je vais utiliser suggestion de @ oldfred pour effectuer un double démarrage via la Carte mère lorsque j'en ai besoin.

Cela présente en effet des avantages:

  • Je n'ai pas besoin d'avoir un menu Grub en attente (même 3 secondes) pour démarrer dans mon système quotidien (16.04), donc je gagnerai du temps à démarrer.
  • Lorsque je veux démarrer l’ancien système (14.04), appuyer sur F8 au démarrage n’est pas plus difficile que les touches fléchées!
  • Je peux garder mon BIOS installé sur/dev/sdb car ma carte mère peut démarrer à la fois EFI et BIOS, ainsi lors du démarrage de 14.04, il sera en mode BIOS.

Quoi qu'il en soit, même en mode BIOS, les pilotes I ne se chargent pas, mais comme il s'agit d'un autre problème, je vais poser une autre question pour essayer de réparer ces pilotes.

Cette question est donc fermée. Néanmoins, si vous trouvez un bonne documentation sur le processus de démarrage détaillé d’une machine Linux, je me ferai un plaisir de le lire!

1
Zakhar

Pour récapituler: vous avez déplacé un disque 14.04 de démarrage du BIOS vers un système UEFI 16.04, relancez update-grub et pouvez maintenant démarrer le système 14.04, mais vous rencontrez des problèmes de vidéo/pilote. Votre solution consiste à désinstaller tous les pilotes propriétaires (ancien système) pour revenir au système par défaut, puis à installer les nouveaux pilotes.

Cliquez sur le bouton "Paramètres" du "programme de mise à jour du logiciel", sous l'onglet "Logiciel Ubuntu", cliquez sur le bouton "pilotes propriétaires ...", et sous l'onglet "Pilotes supplémentaires", quels pilotes propriétaires sont proposés, puis cliquez sur sur ceux que vous voulez (et peut-être redémarrer). Rien ne se passe automatiquement.

Vous voudrez peut-être également installer les backports sur le système 14.04 pour obtenir un noyau plus à jour pour votre 6700. C'est tout. Aucune "conversion" nécessaire. Que se passe-t-il si vos mises à jour 14.04 déplacées modifient le fichier grub.cfg (inutilisé) sur ce système - il vous suffit de réexécuter update-grub sur le système 16.04. Alors que se passe-t-il s'il n'y a aucune référence à/boot/efi (bien que vous puissiez l'ajouter assez facilement avec une ligne dans le fichier/etc/fstab). Vous n'avez pas du tout de problème de démarrage.

1
ubfan1