Je vais utiliser le terme BIOS ci-dessous lorsque réfère à des concepts qui sont les mêmes pour les nouveaux systèmes UEFI et les systèmes BIOS traditionnels, car bien qu'il s'agisse d'une question orientée UEFI, parler des jibes "BIOS" mieux avec, par exemple, la documentation GRUB et "BIOS / UEFI" est trop maladroit. GRUB (en fait, GRUB 2 - il est souvent utilisé de manière ambiguë) est le chargeur de démarrage installé par linux et utilisé pour le double démarrage de Windows.
Tout d'abord, un mot sur l'ordre des lecteurs et l'ordre de démarrage. L'ordre des lecteurs fait référence à l'ordre dans lequel les lecteurs sont physiquement connectés au bus sur la carte mère (premier lecteur, deuxième lecteur, etc.); ces informations sont rapportées par le BIOS. Ordre de démarragefait référence à la séquence dans laquelle le BIOS recherche un lecteur de démarrage. Ce n'est pas nécessairement le même que l'ordre du lecteur et est généralement configurable via l'écran de configuration du BIOS. L'ordre des lecteurs ne doit pas être configurable ou affecté par l'ordre de démarrage, car ce serait une chose très peu conviviale pour le système d'exploitation (mais en théorie, un BIOS obtus pourrait le faire). De plus, si vous débranchez le premier lecteur, le deuxième lecteur deviendra probablement le premier. Nous allons utiliser des UUID dans la configuration du chargeur de démarrage pour essayer d'éviter des problèmes comme celui-ci (les installateurs Linux contemporains le font également).
Le moyen idéal pour obtenir ce que vous voulez est d'installer linux sur le deuxième lecteur en termes d' ordre de lecteur , puis de le sélectionner d'abord en termes d' ordre de démarrage en utilisant la configuration UEFI. Un avantage supplémentaire de ceci est que vous pouvez ensuite utiliser l'ordre de démarrage BIOS / UEFI pour sélectionner le lecteur Windows et contourner grub si vous le souhaitez. La raison pour laquelle je recommande Linux sur le deuxième lecteur est que GRUB doit "charger en chaîne" le chargeur de démarrage natif de Windows, et le chargeur de démarrage de Windows suppose toujours qu'il se trouve sur le premier lecteur. Il existe cependant un moyen de le tromper si vous préférez ou si vous en avez besoin dans l'autre sens.
Si tout va bien, vous pouvez simplement aller de l'avant et utiliser un CD live ou autre chose et faire cela en utilisant l'installateur GUI. Cependant, tous les programmes d'installation ne sont pas créés égaux, et si cela est vissé et que vous vous retrouvez avec des problèmes tels que:
J'ai installé Linux sur le premier disque et maintenant je ne peux pas démarrer Windows, ou
J'ai installé Linux sur le deuxième disque, mais en utilisant le premier disque pour le chargeur de démarrage, et maintenant je ne peux rien démarrer!
Continuez à lire. Dans le second cas, vous devez d'abord essayer de réinstaller linux sur le deuxième disque, et cette fois assurez-vous que c'est là que va le chargeur de démarrage. La façon la plus simple et la plus infaillible de le faire serait de supprimer temporairement le lecteur Windows de la machine, car nous supposerons qu'il n'y a rien de plus installé dessus, quel que soit l'ordre du lecteur.
Une fois que vous avez installé linux et que vous vous êtes assuré qu'il peut démarrer, rebranchez le lecteur Windows (si vous l'avez supprimé - et rappelez-vous, nous le voulons idéalement d'abord en termes d'ordre de lecteur, et le deuxième lecteur en premier en termes de ordre de démarrage) et passez à l'étape suivante.
Accéder à la configuration GRUB
Démarrez Linux, ouvrez un terminal et
> su root
Le mot de passe root vous sera demandé. À partir de ce moment, vous êtes le superutilisateur de ce terminal (pour vérifier, essayez whoami
), alors ne faites rien de stupide. Cependant, vous êtes toujours un utilisateur normal dans l'interface graphique, et puisque nous éditerons un fichier texte, si vous préférez un éditeur GUI, nous devrons changer temporairement la propriété de ce fichier et le répertoire dans lequel il se trouve:
> chown -R yourusername /etc/grub.d/
Si vous obtenez "Opération non autorisée", vous ne l'avez pas su
correctement. Si vous obtenez chown: invalid user: ‘yourusername’
, vous avez pris la dernière commande trop littéralement.
Vous pouvez maintenant naviguer /etc/grub.d
dans votre navigateur de fichiers et rechercher un fichier appelé 40_custom
. Ça devrait ressembler à ça:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
Si vous ne le trouvez pas, dans le terminal racine, entrez les commandes suivantes:
> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom
Ouvrez-le dans votre éditeur de texte, copiez-collez la partie ci-dessus (en commençant par #!/bin/sh
) et passez à l'étape suivante.
Ajout d'une option de démarrage Windows
Copiez-collez ceci avec l'éditeur de texte à la fin du fichier:
menuentry "MS Windows" {
insmod part_gpt
insmod search_fs_uuid
insmod ntfs
insmod chain
}
Voici la liste des modules dont GRUB aura besoin pour faire avancer les choses ( ntfs
peut être superflu, mais ne devrait pas non plus faire de mal). Notez qu'il s'agit d'une entrée incomplète - nous devons ajouter quelques commandes cruciales.
Recherche du chargeur de démarrage Windows Second Stage
Votre installation Linux a probablement monté automatiquement votre partition Windows et vous devriez pouvoir la trouver dans un navigateur de fichiers. Sinon, trouvez un moyen de le faire (si vous ne savez pas comment, posez une question sur ce site). Une fois cela fait, nous devons connaître le point de montage - cela devrait être évident dans le navigateur de fichiers, par exemple /media/ASDF23SF23/
. Pour économiser du texte, nous allons mettre cela dans une variable shell:
win="/whatever/the/path/is"
Il ne doit y avoir aucun espace de chaque côté du signe égal. N'incluez aucun élément d'un chemin Windows ici. Cela doit pointer vers le dossier de niveau supérieur sur la partition Windows. Maintenant:
cd $win
find . -name bootmgfw.efi
Cela peut prendre quelques minutes si vous avez une grande partition, mais la première chose qu'elle crache est probablement ce que nous recherchons; il peut y avoir d'autres références dans le système de fichiers contenant de longues chaînes goobledygook - ce n'est pas le cas. Utilisez Ctrl-c
pour arrêter la recherche une fois que vous voyez quelque chose de court et de simple comme ./Windows/Boot/EFI/bootmgfw.efi
ou ./EFI/HP/boot/bootmgfw.efi
.
Sauf pour le .
début, rappelez-vous ce chemin pour plus tard; vous pouvez le copier dans votre éditeur de texte sur une ligne vierge en bas, car nous allons l'utiliser là-bas. Si vous souhaitez revenir à votre répertoire précédent maintenant, utilisez cd -
, bien que peu importe où vous êtes dans le shell à partir de maintenant .
Définir les bons paramètres
GRUB doit pouvoir trouver et transmettre le processus de démarrage au chargeur de démarrage Windows de deuxième étape. Nous avons déjà le chemin sur la partition Windows, mais nous avons également besoin de certains paramètres pour indiquer à GRUB où se trouve cette partition. Il devrait y avoir un outil installé sur votre système appelé grub-probe
ou (sur, par exemple, Fedora) grub2-probe
. Tapez grub
puis appuyez Tabdeux ou trois fois; vous devriez voir une liste comprenant l'un ou l'autre.
> grub-probe --target=hints_string $win
Vous devriez voir une chaîne telle que:
--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1
Revenez à l'éditeur de texte avec la configuration GRUB et ajoutez une ligne après toutes les insmod
commandes (mais avant l'accolade fermante) pour qu'elle ressemble à:
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
Ne cassez pas cette ligne et ne permettez pas à votre éditeur de texte de le faire. Il peut s'enrouler sur l'affichage - un moyen facile de faire la différence est d'activer la numérotation des lignes. Prochain:
> grub-probe --target=fs_uuid $win
Cela devrait renvoyer une chaîne plus courte de lettres, de chiffres et de tirets possibles tels que "123A456B789X6X" ou "b942fb5c-2573-4222-acc8-bbb883f19043". Ajoutez cela à la fin de la search --fs-uuid
ligne après la chaîne de bios de l'indice, séparé par un espace.
Ensuite, si (et seulement si) Windows se trouve sur le deuxième lecteur en termes d' ordre de lecteur , ajoutez une ligne après la search --fs-uuid
ligne:
drivemap -s hd0 hd1
C'est "l'astuce" mentionnée plus haut. Notez qu'il n'est pas garanti de fonctionner mais cela ne fait pas de mal d'essayer.
Enfin, la dernière ligne devrait être:
chainloader (${root})[the Windows path to the bootloader]
}
Pour être clair, par exemple:
chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi
C'est ça. Enregistrez le fichier et vérifiez dans un navigateur de fichiers pour vous assurer qu'il a vraiment été enregistré et qu'il ressemble à ce qu'il devrait.
Ajouter la nouvelle option de menu à GRUB
Cela se fait avec un outil appelé grub-mkconfig
ou grub2-mkconfig
; il figurera dans la liste que vous avez trouvée Tabprécédemment. Vous pouvez également avoir une commande appelée update-grub
. Pour vérifier cela, saisissez-le simplement dans le terminal racine. Si vous obtenez "commande introuvable", vous devez utiliser grub-mkconfig
directement. Sinon (y compris obtenir une erreur plus longue), vous venez de définir la configuration et pouvez parcourir un peu.
Pour utiliser grub-mkconfig
directement, nous devons d'abord trouver grub.cfg
:
> find /boot -name grub.cfg
Ce sera probablement /boot/grub/grub.cfg
ou /boot/grub2/grub.cfg
.
> grub-mkconfig -o /boot/grub/grub.cfg
update-grub
analysera automatiquement la configuration des erreurs. grub-mkconfig
ne le fera pas, mais il est important de le faire car il est beaucoup plus facile de les gérer maintenant que lorsque vous essayez de démarrer la machine. Pour cela, utilisez grub-script-check
(ou grub2-script-check
):
> grub-script-check /boot/grub/grub.cfg
Si ceci (ou update-grub
) produit une erreur indiquant un numéro de ligne, c'est le numéro de ligne dans grub.cfg, mais vous devez corriger la partie correspondante dans /etc/grub.d/40_custom
(le fichier dans votre éditeur de texte). Vous devrez peut-être être root juste pour regarder l'ancien fichier, alors essayez less /boot/grub/grub.cfg
dans le terminal, appuyez sur :et entrez le numéro de ligne. Vous devriez voir votre entrée de menu. Recherchez la faute de frappe, corrigez-la dans l'éditeur de texte, puis exécutez update-grub
ou à grub-mkconfig
nouveau.
Lorsque vous avez terminé, vous pouvez fermer l'éditeur de texte et saisir exit
le terminal pour quitter le mode superutilisateur.
Redémarrez!
Lorsque vous arrivez au menu grub, faites défiler rapidement vers le bas (avant l'expiration du délai, généralement 5 secondes) jusqu'à l'option "Windows" et testez-le. Si vous obtenez une erreur de message texte de grub, quelque chose ne va pas avec la configuration. Si vous obtenez un message d'erreur de Windows , ce problème se situe entre vous et Microsoft. Ne vous inquiétez pas, cependant, votre lecteur Windows n'a pas été modifié et vous pourrez y démarrer directement en le plaçant d'abord (en termes d'ordre de démarrage) via la configuration du BIOS.
Lorsque vous revenez à Linux, remettez la propriété du /etc/grub.d
répertoire et son contenu à leur état d'origine:
sudo chmod 755 /etc/grub.d/40_custom
Les références
Manuel GRUB 2
Page Arch Linux Wiki GRUB
Arch possède certaines des meilleures documentations disponibles, et une grande partie (y compris cette page) est principalement applicable à n'importe quelle distribution GNU / Linux.
chainload $({root})
devrait l'êtrechainload (${root})
(je ne peux pas le modifier car il est trop petit d'un changement)./etc/grub.d
et qu'il n'est pas ajouté lorsque vous générez la configuration, quelque chose de bizarre se passe. Si vous exécutezgrub-mkconfig
sans-o
qu'il crache en sortie standard, cela pourrait aider à confirmer ou à nier que vos ajouts sont en cours de traitement.