Question VMware Workstation utilisant le disque physique EFI


J'essaie de configurer une machine virtuelle VMware sous un hôte Windows 10.

J'ai actuellement 1 disque dur divisé en 2 partitions, utilisant actuellement Ubuntu avec un double démarrage.

Je voudrais monter Ubuntu en tant qu'invité dans l'hôte Windows.

J'ai essayé de configurer la partition Ubuntu en utilisant l'option Disque physique sous VMware (j'ai essayé IDE, SCSI, Sata). Si je dis au VMware d'utiliser l'intégralité du disque, le message "Le disque actuel est utilisé" s'affiche. Si je sélectionne uniquement les partitions Linux pertinentes, il sera dit "Impossible de trouver le système d'exploitation".

Ce qui est étrange, c'est que ma partition Linux apparaît sous le nom de "système Efi" sous la colonne File System, alors que je pensais qu'elle était censée dire "Linux" sous File System. Dois-je d'abord essayer de changer le système de fichiers de cette partition en Linux au lieu d'Efi? (Comment pourrais-je faire ça?)

VMware devrait pouvoir me laisser exécuter une partition Ubuntu en tant qu'invité même s'il se trouve sur le même disque dur que l'hôte, n'est-ce pas?

Modifier: Pour clarifier, les informations ci-dessus sont rapportées par VMware-Workstation.

Cependant, sous Ubuntu Gparted, voici à quoi ressemblent mes partitions:

Mon disque dur SSD actuel est actuellement configuré de cette façon (selon Linux GParted)

  • / dev / nvme0n1p1 ntfs (diag)
  • / dev / nvme0n1p2 fat32 (démarrage, esp)
  • / dev / nvme0n1p3 unknown (msftres) [Partition réservée Microsoft, quelle qu'elle soit]
  • / dev / nvme0n1p4 ntfs (msftdata) [Il s'agit de la partition Windows 10]
  • / dev / nvme0n1p5 ext4 (boot, esp) [Ceci est ma partition Ubuntu]
  • / dev / nvme0n1p6 linux-swap
  • / dev / nvme0n1p7 ntfs (masqué, diag)

GParted signale également que le point de montage / est sur nvme0n1p5 et que le point de montage / boot / efi est sur nvme0n1p2.

[maintenant je suis confus, ma machine Ubuntu a-t-elle démarré à partir de nvme0n1p5 (avec le drapeau de démarrage) ou de nvme0n1p2 (avec le point de montage / boot / efi)?]

Quoi qu'il en soit, j'ai essayé de joindre les deux partitions à l'option disque dur Physical Disk de Windows 10 VMWare-Workstation, mais la machine ne démarrera toujours pas l'invité Ubuntu.

Je peux double-booter (en changeant "ordre du disque dur" dans le BIOS - [même s'il n'y a qu'un seul disque dur!]) Mais ce que je voudrais faire est de démarrer et d'exécuter la partition Ubuntu depuis Windows.

Edit 2:

Je pense que je pourrais comprendre le problème un peu plus:

  1. lors du premier démarrage, je sélectionne Windows 10 EFI comme option de démarrage
  2. dans Windows, je configure une machine virtuelle pour exécuter la deuxième partition sur le même disque dur qui fonctionne actuellement en tant qu'hôte
  3. mais pour démarrer la deuxième partition, je dois indiquer à la machine virtuelle d’exécuter le même gestionnaire de démarrage EFI que (1)
  4. il ne parvient pas à exécuter le gestionnaire de démarrage EFI (est-il utilisé?) et me renvoie à un shell EFI interne
  5. depuis EFI Shell Je peux sélectionner un système de fichiers et un CD dans / efi / boot et voir des fichiers .efi, mais je ne sais pas comment démarrer à partir de ces fichiers .efi.

Quelqu'un peut-il me dire comment démarrer un fichier .efi à partir du shell EFI interne?


2
2017-07-29 16:32


origine


Deux questions: 1) Qu'est-ce que vous utilisez? ([VMware] est une entreprise, veuillez remplacer les balises par [vmware-player], [wmware-workstation], etc.). 2) [u] EFI a utilisé une partition FAT32 pour démarrer tous les systèmes d'exploitation. Celui-là pourrait être en cours d'utilisation. Pouvez-vous préciser ce que vous voulez dire lorsque vous écrivez que linu xis apparaît comme un système efi? - Hennes
Merci ou la réponse. 1) VMware-Workstation Trial. 2) J'ai mis à jour ma structure de disque dur actuelle dans le message original. - Azrudi
Je pense que mon problème est le système EFI. J'ai essayé Oracle Virtualbox et je suis passé par la configuration de vboxmanage pour utiliser un disque brut - et une fois que j'ai connecté le disque brut à Virtualbox, il ne me laissera toujours pas démarrer comme EFI. 1) le démarrage ne se traduit normalement par aucun système d’exploitation trouvé 2) le choix "EFI d’initialisation au lieu du BIOS" m'amène à un étrange menu interne d’EFI et je peux revenir à EFI Boot Manager et sélectionner "option de démarrage" pour trouver grubx64.efi, mais sélectionner ce fichier ne fait rien mais je poignarde dans le noir en fait. - Azrudi
ESP (partition système EFI) est la partition généralement utilisée pour stocker les chargeurs de démarrage pour tout systèmes d'exploitation. Il n'y a généralement qu'une seule partition et à moins que vous ayez un MAC, il est formaté avec FAT32. Maintenant, quand je regarde / dev / nvme0n1p5, je vois que c'est ext4 et c'est votre partition Ubuntu. Il est également marqué esp. Cela me confond - Hennes
re 3). Je suis hors de ma profondeur ici. Mais pouvez-vous vérifier que l'ESP n'est pas déjà monté par Windows? La plupart du temps, les fenêtres semblent ne rien laisser au hasard (en fait, j'ai dû forcer mon installation Windows actuelle à y associer une lettre de lecteur), mais la vérification des nouvelles versions est mauvaise. Sinon bon post. J'espère qu'il sera répondu avec une solution appropriée. - Hennes


Réponses:


Certains de ces éléments ont déjà été traités dans les commentaires et je ne suis pas un expert des produits VMware, mais:

Votre premier problème est le code de type de partition sur /dev/nvme0n1p5. Selon ton parted résumé, cette partition a son drapeau "boot, esp" défini. (Pour des raisons qui seraient une digression, "boot" et "esp" sont des noms de drapeau redondants qui se réfèrent à la même chose, donc ils apparaissent toujours ensemble dans les versions récentes de parted.) Dans parted, les "drapeaux" sur les disques GPT peuvent être des attributs de partition ou des codes de type de partition, et le drapeau "boot, esp" est un code de type pour le Partition système EFI (ESP). Ce drapeau devrait NE PAS être défini sur une racine Linux (/) partition - ou sur toute autre partition Linux uniquement. Comme l'explique la page Wikipedia à laquelle j'ai lié, l'ESP est une partition FAT qui contient des chargeurs de démarrage et des fichiers associés pour tous les systèmes d'exploitation. Votre /dev/nvme0n1p5 devrait utiliser le code de type Linux Filesystem Data, qui parted identifie comme une absence de drapeaux de type de partition sur une partition avec un système de fichiers Linux.

Au minimum, vous devrez donner à VMware un accès aux deux /dev/nvme0n1p2 et /dev/nvme0n1p5, mais vous voudrez peut-être donner accès à /dev/nvme0n1p6, aussi, puisque c'est l'espace d'échange Linux. La résolution de ce problème d'accès aux partitions ne résoudra pas votre problème global, mais il est probable qu'il s'agisse d'une condition préalable nécessaire.

Pour le reste, je vous recommande fortement de lire un peu comment un ordinateur basé sur EFI démarre. Plus précisément, lisez au moins un, et de préférence les trois, des éléments suivants:

Le shell EFI interne que vous décrivez est similaire à une invite DOS, une fenêtre d'invite de commandes sous Windows ou un shell Bash sous Linux. Vous pouvez utiliser des commandes comme cd changer de répertoire, ls ou dir pour voir des fichiers, etc .; la plupart de ces commandes sont empruntées à DOS / Windows ou Unix. Les programmes EFI, y compris les chargeurs de démarrage EFI, ont .efi extensions, et vous les exécutez en tapant leurs noms, comme dans:

bootloader.efi

Ubuntu installe son chargeur de démarrage EFI comme EFI\ubuntu\grubx64.efi, bien que cela soit généralement lancé via un pré-chargeur de démarrage appelé shimx64.efi. Shim est signé par la clé Secure Boot de Microsoft et étend le sous-système Secure Boot de l'ordinateur pour permettre à GRUB et au noyau Linux de démarrer. Vous devrez lancer via shimx64.efi Si votre environnement virtualisé est configuré avec Secure Boot activé. Sinon, vous pouvez exécuter soit shimx64.efi ou grubx64.efi.

Une complication est que GRUB peut s'étouffer sur une vue du disque qui ne correspond pas à celle du disque d'origine - c'est-à-dire que si la partition réelle 5 semble être la partition 2, GRUB peut se désagréger et refuser de fonctionner. Si cela se produit, je vous recommande de passer à un autre chargeur de démarrage pour au moins un environnement (réel ou virtualisé). Si chaque environnement utilise son propre chargeur de démarrage, ses configurations peuvent différer radicalement et les deux environnements ne vont pas l'un sur l'autre. En outre, certains chargeurs de démarrage ne se soucient pas des numéros de partition modifiés. C'est vrai de mon gestionnaire de démarrage rEFInd, par exemple. Je voudrais souligner, cependant, que je ne sais pas si GRUB se désagrège. Son fichier de configuration inclut généralement des références à des numéros de partition (ce qui suggère qu’il pourrait se désagréger), mais il inclut également des commandes de "recherche" qui pourraient les remplacer (ce qui suggère que cela pourrait être OK). De plus, je ne sais pas comment VMware gère le mappage des partitions. ils peuvent conserver les mêmes numéros de partition, auquel cas il ne devrait y avoir aucun problème.

Une autre question est de savoir si le système d’exploitation hôte vous permettra de mapper l’ESP, car il peut être utilisé ou être interdit pour cela. Si tel est le cas, vous devrez peut-être créer un disque virtuel ou une autre partition à utiliser en tant qu'ESP pour l'environnement virtuel. Vous pouvez ensuite copier le chargeur de démarrage à partir de l'ESP réel sur l'ordinateur virtuel ou installer un autre chargeur de démarrage à cet endroit.

Enfin, comme décrit dans les lectures recommandées, les ordinateurs basés sur EFI s'appuient sur des données résidentes NVRAM pour localiser le chargeur de démarrage. La plupart des logiciels de virtualisation créent de "fausses" données NVRAM, de sorte qu'une VM ne démarrera pas normalement à moins que vous ne créiez de nouvelles entrées NVRAM pour pointer vers le chargeur de démarrage. Vous pouvez utiliser le shell EFI pour lancer votre système d'exploitation une fois, mais vous devrez ensuite enregistrer le chargeur de démarrage avec la machine virtuelle. Dans Ubuntu, vous utiliseriez efibootmgr pour faire ça:

sudo efibootmgr -c -d /dev/sda -p 1 -l \\EFI\\ubuntu\\grubx64.efi -L ubuntu

Cet exemple enregistre \EFI\ubuntu\grubx64.efi sur Ubuntu /dev/sda1 en tant que chargeur de démarrage. Vous devez modifier les détails nécessaires à votre configuration. Notez que les ID de disque et de partition sont ceux de la machine virtuelle et non de l'environnement hôte.

Une mise en garde est que certaines machines virtuelles "oublient" leurs entrées NVRAM lorsque vous les fermez. Cela est vrai de VirtualBox, par exemple. Je ne sais pas si VMware va mieux. Sinon, vous devrez peut-être copier le chargeur de démarrage sur le nom de fichier de secours (EFI\BOOT\bootx64.efi) sur l'ESP. Cette approche est décrite plus en détail dans ma page sur les chargeurs de démarrage EFI et je pense également dans le blog d’Adam Williamson.


2
2017-08-01 13:54



Merci, je vais y revenir ce soir. Semble très complet. Je voudrais demander ceci maintenant, juste pour clarifier: je devrais pouvoir taper shimx64.efi dans son répertoire dans (je pense / boot / EFI) le shell EFI interne et s'il n'y a pas d'autres problèmes, je devrais normalement être capable de démarrer l'invité Linux? Je vais lire les blogs et votre réponse plus en détail quand je rentrerai chez moi ce soir. J'ai supprimé le drapeau boot et esp de nvme0n1p5 en utilisant l'assistant gratuit de partition Minitool pour Windows, mais je ne vois toujours aucune différence avant votre réponse. - Azrudi
Bonjour Rod, j'ai lu le troisième lien. La plupart étaient un peu au dessus de ma tête à ce moment, mais j'ai lu la partie sur le chargeur EFI. J'ai essayé de répliquer mais j'ai eu des erreurs étranges que je ne comprends pas: i.imgur.com/F4RRACw.png  Il dit des paramètres invalides mais j'ai inclus tous les paramètres pertinents. Pouvez-vous aider à traduire en termes simples? Notez que je pense que la partition EFI est correcte car je peux démarrer Ubuntu si je démarre à partir du BIOS (celui où j'appuie sur la touche del lorsque le logo du fabricant apparaît) - Azrudi
J'ai ça au boulot! Effectuez 3 modifications: 1) Supprimez l'indicateur boot & esp avec l'assistant de partition Minitool et étiquetez-le comme partition msftdata (ou ID de partition = partition de base Windows dans Minitool) 2) modifié sous VM> Paramètres> Options> Général> Version d'Ubuntu sur Ubuntu 64-bit 3) changé le disque dur sous VM> Paramètres> Disque dur (SCSI)> vérifier la partition EFI, la partition racine et la partition swap, puis cliquer sur le bouton Avancé et sélectionner Mode> Indépendant> Non persistant. Sans (3) j'ai eu "disque dur inaccessible \\. \ PhysicalDrive0". Marqué comme une solution. - Azrudi