J'aimerais installer Linux, mais je ne veux pas risquer d'endommager mon installation Windows actuelle car j'ai entendu beaucoup d'histoires d'horreur. Heureusement, j'ai un disque dur supplémentaire. Puis-je installer Linux dessus, puis démarrer Windows en double sans avoir à modifier le lecteur Windows ?
De plus, j'ai un "BIOS" UEFI et le lecteur Windows est au format GPT.
Réponse acceptée :
Je vais utiliser le terme BIOS ci-dessous en se référant aux 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 du "BIOS" s'accorde mieux avec, par exemple, la documentation GRUB, et "BIOS/UEFI" est trop maladroit. GRUB (en fait, GRUB 2 - ceci 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. Passer commande fait référence à l'ordre dans lequel les disques sont physiquement connectés au bus de la carte mère (premier disque, deuxième disque, etc.); cette information est rapportée par le BIOS. Ordre de démarrage fait référence à la séquence dans laquelle le BIOS recherche un lecteur amorçable. Ce n'est pas nécessairement le même que l'ordre des lecteurs 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 disque, le deuxième disque deviendra probablement le premier. Nous allons utiliser les UUID dans la configuration du chargeur de démarrage pour essayer d'éviter des problèmes tels que celui-ci (les installateurs Linux contemporains le font également).
Le moyen idéal d'obtenir ce que vous voulez est d'installer Linux sur le deuxième disque en termes d'ordre des disques puis sélectionnez-le 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 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.
J'espère que vous pouvez simplement utiliser un CD live ou autre et le faire en utilisant le programme d'installation de l'interface graphique. Cependant, tous les installateurs ne sont pas créés égaux, et si cela se gâte 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 plus rien démarrer !
Alors 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 le chargeur de démarrage va. Le moyen le plus simple et le plus infaillible de le faire serait de supprimer temporairement le lecteur Windows de la machine, car nous allons supposer 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 retiré - et rappelez-vous, nous le voulons idéalement en premier en termes d'ordre des lecteurs, et le deuxième lecteur en premier en termes de démarrage commande) 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 maintenant, 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 de l'interface graphique, et puisque nous allons éditer un fichier texte, si vous préférez un éditeur graphique, nous devrons temporairement modifier le propriétaire 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 n'avez pas su
correctement. Si vous obtenez chown: invalid user: ‘yourusername’
, vous avez pris la dernière commande trop au pied de la lettre.
Vous pouvez maintenant accéder à /etc/grub.d
dans votre navigateur de fichiers et recherchez un fichier appelé 40_custom
. Cela devrait ressembler à ceci :
#!/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 nuire non plus). Notez qu'il s'agit d'une entrée incomplète — nous devons ajouter quelques commandes cruciales.
Trouver le chargeur de démarrage de deuxième étape de Windows
Votre installation Linux a probablement monté automatiquement votre partition Windows et vous devriez pouvoir la trouver dans un navigateur de fichiers. Si ce n'est pas le cas, 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 un peu de frappe, nous allons le mettre dans une variable shell :
win="/whatever/the/path/is"
Il ne doit y avoir aucun espace de part et d'autre du signe égal. Ne pas inclure tous les éléments d'un chemin Windows ici. Cela devrait 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 ça. Utilisez Ctrl-c
pour arrêter la recherche une fois que vous voyez quelque chose de court et simple comme ./Windows/Boot/EFI/bootmgfw.efi
ou ./EFI/HP/boot/bootmgfw.efi
.
Sauf pour le .
au début, rappelez-vous ce chemin pour plus tard; vous pouvez le copier dans votre éditeur de texte sur une ligne vide en bas, puisque nous l'utiliserons ici. Si vous souhaitez revenir à votre répertoire précédent maintenant, utilisez cd -
, bien que peu importe où vous vous trouvez 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 sur Tab deux 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 tous les insmod
commandes (mais avant l'accolade fermante) donc ça ressemble à :
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
Ne cassez pas cette ligne et n'autorisez pas votre éditeur de texte à le faire. Il peut s'enrouler à l'écran - un moyen simple de faire la différence consiste à activer la numérotation des lignes. Suivant :
> grub-probe --target=fs_uuid $win
Cela devrait renvoyer une chaîne plus courte de lettres, de chiffres et de tirets éventuels tels que "123A456B789X6X" ou "b942fb5c-2573-4222-acc8-bbb883f19043". Ajoutez cela à la fin de la search --fs-uuid
ligne après la chaîne bios de l'indice, séparée par un espace.
Ensuite, si (et seulement si) Windows est sur le deuxième disque en termes d'ordre des disques , ajoutez une ligne après le search --fs-uuid
ligne :
drivemap -s hd0 hd1
C'est "l'astuce" mentionnée plus tôt. 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]
}
Juste 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 bien été enregistré et qu'il ressemble à ce qu'il devrait être.
Ajouter l'option Nouveau menu à GRUB
Cela se fait avec un outil appelé grub-mkconfig
ou grub2-mkconfig
; il aura été dans cette liste que vous avez trouvée avec Tab plus tôt. Vous pouvez également avoir une commande appelée update-grub
. Pour vérifier cela, tapez-le simplement dans le terminal racine. Si vous obtenez "command not found", vous devez utiliser grub-mkconfig
directement. Si ce n'est pas le cas (y compris en obtenant 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 à la recherche d'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. Trouvez la faute de frappe, corrigez-la dans l'éditeur de texte et exécutez update-grub
ou grub-mkconfig
à nouveau.
Lorsque vous avez terminé, vous pouvez fermer l'éditeur de texte et taper exit
dans le terminal pour quitter le mode superutilisateur.
Redémarrer !
Lorsque vous accédez au menu grub, faites défiler rapidement (avant l'expiration du délai d'attente, généralement 5 secondes) jusqu'à l'option "Windows" et testez-la. 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 est entre vous et Microsoft. Ne vous inquiétez pas, cependant, votre lecteur Windows n'a pas été modifié et vous pourrez démarrer directement dessus en le mettant en premier (en termes d'ordre de démarrage) via la configuration du BIOS.
Lorsque vous revenez à Linux, renvoyez la propriété du /etc/grub.d
répertoire et son contenu à leur état d'origine :
sudo chmod 755 /etc/grub.d/40_custom
Références
-
Manuel GRUB 2
-
Page GRUB du wiki Arch Linux
Arch possède l'une des meilleures documentations disponibles, et une grande partie (y compris cette page) s'applique principalement à n'importe quelle distribution GNU/Linux.