GRUB - Ajouter en entrée disque dur sous Windows

Bonjour,

Je viens chercher un conseil car je ne trouve pas de réponse à mon problème.
Voila la situation :
- J’ai un P.C. avec deux SSD : SSD1 sous Debian Jessie et SSD2 sous Windows 10. GRUB est installé sur le SSD1. Je voudrais pouvoir ajouter une entrée dans GRUB pour ajouter un accès à mon Windows (SSD2). Je précise qu’à l’installation, il ne me l’a pas trouvé mais lorsque je démarre via le bios sur SSD2 mon Windows démarre sans problème. On m’a parlé d’un éventuel problème UEFI… quand pensez vous ?

Merci d’avance !!!

Gusbes

Bonjour,

Le paquet “os-prober” est installé ?

gudbes@pcx:~$ su -c "apt install os-prober" Mot de passe : Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait os-prober est déjà la plus récente version disponible. os-prober passé en « installé manuellement ». 0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Merci de ton aide … mais il semblerait que oui ^^

Effectivement si Windows est amorcé en mode UEFI et GRUB en mode BIOS/CSM/legacy ou vice versa, le multiboot via GRUB n’est pas possible. Mais il est possible de modifier l’amorçage de GRUB.

Critères pour vérifier si Windows est amorcé en mode UEFI :

  • son disque est partitionné au format GPT
  • il contient une partition système EFI formatée en FAT contenant un répertoire /EFI/Microsoft
  • le menu de démarrage du PC contient une entrée intitulée “Windows Boot Manager”

A contrario si le disque est au format MSDOS, Windows est amorcé en mode BIOS/CSM/legacy.

Critères pour vérifier si Linux est amorcé en mode UEFI :

  • un des disques contient une partition système EFI contenant un répertoire /EFI/debian
  • le paquet grub-efi-amd64 ou grub-efi-ia32 est installé
  • le menu de démarrage du PC contient une entrée intitulée “debian”

A contrario si le paquet grub-pc est installé, GRUB est amorcé en mode BIOS/CSM/legacy.

Merci de ta réponse.

Voila le retour que je peux te faire.

Pour Debian, GRUB est amorcé en mode BIOS/CSM/legacy.

gudbes@pcx:~$ dpkg --status grub-pc ... Status: install ok installed

Pour Windows, il est amorcé en mode UEFI

gudbes@pcx:~$ su -c "fdisk -l"
...
Type d'étiquette de disque : gpt
...
Device       Start       End   Sectors   Size Type
/dev/sdb1       34    262177    262144   128M Microsoft reserved
/dev/sdb2   264192   1185791    921600   450M Windows recovery environment
/dev/sdb3  1185792   1390591    204800   100M EFI System
/dev/sdb4  1390592 937701375 936310784 446,5G Microsoft basic data

Du coup, tu me disais que je pouvais modifier grub pour qu’il prenne en charge mon windows, c’est bien cela.

Merci en tout cas de ton aide.

Gudbes

C’est le cas le plus compliqué, passer de BIOS à UEFI. Pour donner une idée de la difficulté, tu peux lire le fil https://www.debian-fr.org/dual-boot-disque-dur-detecter-sans-partitionement-ux303l-t54299.html (à partir de la page 2).

Premièrement, il faut vérifier dans les réglage du firmware UEFI si le secure boot est-il activé, et si oui, s’il est possible de le désactiver. Sans cela impossible d’amorcer le chargeur GRUB de Debian en mode UEFI.

Ensuite, il y a plusieurs possibilités :

a) Créer une partition système EFI sur le disque de Debian pour y installer GRUB EFI.
Avantage : L’amorçage de Debian ne dépend pas du disque de Windows.
Inconvénient : GRUB ne détectera pas automatiquement Windows, il faudra l’aider manuellement.

b) Installer GRUB EFI sur la partition système EFI du disque Windows.
Avantages : pas de partition à créer ; GRUB détectera automatiquement Windows.
Inconvénient : l’amorçage de Debian dépend du disque de Windows.

c) Réinstaller Debian en amorçant l’installateur en mode UEFI. Dans certains cas cela peut être plus simple et rapide que de modifier l’amorçage du système déjà installé.

Que choisis-tu ?

Merci encore une fois de ta réponse.

Concernant mon choix,je préférerai la solution “A” (mais au besoin la solution “B” ne me dérange pas plus).

Sinon la solution “C” serait ma préférée (car elle semble plus simple) mais je ne veux pas refaire tous mes réglages (installation paquet, …) que j’ai fais jusqu’à présent, mais je serai curieux de savoir comment cela fonctionne car lors de l’installation de Debian (qui remonte à 2 mois), je n’ai pas vu quoi que ce soit sur un GRUB avec une option UEFI.

Encore mille fois merci de prendre du temps pour me guider dans ce côté obscur :smiley:

Je peux comprendre que tu n’aies pas envie de réinstaller tous les paquets et refaire tous les réglages.
L’installateur n’a pas proposé d’option UEFI pour GRUB car cela dépend uniquement de son mode d’amorçage :

  • si l’installateur a été amorcé en mode BIOS/CSM/legacy, il propose le choix entre LILO et GRUB pour amorçage en mode BIOS/CSM/legacy ;
  • si l’installateur a été amorcé en mode UEFI, il ne propose que GRUB en mode UEFI.
    C’est donc lors de l’amorçage de l’installateur que tout se joue.

Va pour la méthode a) en supposant les prérequis que j’ai mentionnés. Idéalement, il vaudrait mieux débrancher le disque Windows dans un premier temps.

  1. Créer une partition système EFI
  • Créer un répertoire /boot/efi.
  • Créer une partition de taille 1 à 512 Mo, de type “EFI system” (“esp” dans parted, “ef” dans fdisk si table de partition de type DOS), formatée en FAT16 ou FAT32.
  • Relever l’UUID de cette partition (de la forme XXXX-XXXX) avec blkid.
  • Ajouter une ligne dans /etc/fstab pour la monter sur /boot/efi :

cp /etc/fstab /etc/fstab.copie echo "UUID=XXXX-XXXX /boot/efi vfat defaults" >> /etc/fstab

  • La monter.
  1. Installer GRUB EFI
  • Installer le paquet grub-efi-amd64 (cela va désinstaller grub-pc).
  • Exécuter la commande suivante pour installer le chargeur EFI par défaut :

Note : Si le firmware UEFI est 32 bits (voir dans le répertoire /EFI/boot/ de la partition système EFI du disque Windows), installer grub-efi-ia32 et spécifier --target=i386-efi à la place.

  • Redémarrer en mode UEFI.
  • Vérifier que le système a été amorcé en mode EFI avec la commande suivante :
  • exécuter la commande suivante pour installer le chargeur EFI normal :

Si tout s’est bien passé, rebrancher le disque Windows. Au démarrage, c’est GRUB EFI qui devrait être lancé par défaut.

  1. Ajouter Windows au menu de démarrage de GRUB
  • Monter la partition système EFI du disque Windows (/dev/sdb3 a priori) sur /boot/efi :
  • Regénérer le fichier de configuration de GRUB avec :

Cela devrait détecter “Windows Boot Manager”.

Note : Cet ajout disparaîtra si la partition système EFI de Windows n’est pas montée à chaque fois que la configuration de GRUB sera regénérée. Pour le rendre permanent, il faut recopier le paragraphe de l’entrée de menu pour Windows du fichier /boot/grub/grub.cfg dans le fichier /etc/grub.d/040_custom.

Merci de ta réponse et excuse moi de ne pas t’avoir répondu avant.

Je suis en train de mettre en place ce que tu m’as indiqué mais j’ai une interrogation de débutant. Comment fait dont pour “Créer une partition de taille 1 à 512 Mo” sachant que mon disque est déjà partitionner comme cela :

Device     Boot  Start       End   Sectors  Size Id Type
/dev/sda1  *      2048    499711    497664  243M 83 Linux
/dev/sda2       501758 175835135 175333378 83,6G  5 Extended
/dev/sda5       501760 175835135 175333376 83,6G 83 Linux

Merci de ton aide.

Gudbes

Si le SSD est plein, il faut réduire une partition qui ne doit pas être montée, donc via un autre système pour la partition racine. Si tu utilise la ligne de commande, il faut réduire le système de fichiers avant de réduire la partition. En interface graphique, gparted le fait automatiquement.
La partition étendue finit à 90 Go, c’est vraiment la capacité du SSD ?

Merci de ta réponse.

Oui mon ssd faut actuellement 90go mais je suis en cours de basculement vers un ssd de 480go donc cela devrait être un peu plus facile pour moi de trouver de la place.
La partition de 512 mo doit être en primaire ou logique ? Je peux la mettre à la fin ou doit elle etre la première ?

Désolé de toute mes questions mais je ne veux pas faire de betises.

Merci de ton aide

Gudbes

Tes questions sont légitimes, hélas je ne peux y apporter de réponse catégorique.

L’emplacement ou le numéro de la partition système EFI ne devrait pas avoir d’importance. J’ai testé avec succès une partition système EFI située en fin de disque sur une de mes machines. Cependant on ne peut exclure un éventuel bug du firmware qui ne reconnaîtrait la partition si elle n’est pas la première ou au début du disque.

Je n’ai en revanche jamais testé une partition système EFI de type logique, et j’ignore si c’est permis par le standard UEFI et surtout supporté par les firmwares UEFI. Dans le doute, il vaut mieux créer une partition primaire, d’autant plus qu’il n’y en a déjà que 2 sur 4 possibles.

Il y a même un risque que le firmware de ta carte mère ne soit pas capable de booter en mode UEFI depuis un disque partitionné au format MSDOS (en contradition avec le standard) mais seulement au format GPT comme le disque qui contient Windows. Dans ce cas il reste possible de convertir le disque au format GPT avec [mono]gdisk[/mono] (avantage : plus besoin de se préoccuper des partitions primaires et logiques).

Re,

Je reviens vers toi pour tes précieux conseils. J’ai donc créer ma partition en fin de disque de 512Mo en EFI formaté en fat32.
Lors du montage de /boot/efi, il m’indique qu’il est déjà monté. L’installation de grub-efi se passe bien mais voila le problème :

g udbes@pcx:/boot/efi$ su -c "grub-install --target=x86_64-efi --removable" Mot de passe : Installing for x86_64-efi platform. grub-install : erreur : impossible de trouver le répertoire EFI.

J’ai fais quelques recherches mais je n’ai rien trouvé de très intéressant.

Est ce que cette erreur te parle plus à toi.

Merci d’avance encore une fois.

Gudbes

Vérifie que la partition système EFI est bien montée au bon endroit avec

df -hT ls -al /boot/efi
Si c’est le cas, il faut peut-être créer le répertoire /boot/efi/EFI à la main s’il n’existe pas déjà :

Merci de ta réponse.
Alors je te met un copie de mes commandes. De ce que je vois, la partition efi ne semble pas monté. Mais quand je refais le “mount” il me dit que /boot/efi doit être occupé ce qui parait normal vu que je suis sur mon systeme (Debian). Qu’en penses tu ? Dois je faire les manip’ avec un livecd ?

Bonne journée à toi.

Gudbes

gudbes@pcx:/boot/efi$ su -c "mount /boot/efi"
Mot de passe : 
mount: /dev/sda3 est déjà monté ou /boot/efi est occupé

gudbes@pcx:/boot/efi$ df -hT
Sys. de fichiers         Type     Taille Utilisé Dispo Uti% Monté sur
/dev/dm-1                ext4       9,1G    7,0G  1,7G  81% /
udev                     devtmpfs    10M       0   10M   0% /dev
tmpfs                    tmpfs      1,6G    9,2M  1,6G   1% /run
tmpfs                    tmpfs      3,9G    996K  3,9G   1% /dev/shm
tmpfs                    tmpfs      5,0M    4,0K  5,0M   1% /run/lock
tmpfs                    tmpfs      3,9G       0  3,9G   0% /sys/fs/cgroup
/dev/sdb1                ext2       236M     35M  189M  16% /boot
/dev/mapper/pcx--vg-home ext4        71G     14G   53G  21% /home
tmpfs                    tmpfs      795M     20K  795M   1% /run/user/1000

La partition n’est pas montée. Le répertoire /boot/efi apparaît occupé parce que tu es dedans, regarde l’invite du shell :

Il faut te déplacer dans un autre répertoire, par exemple le répertoire personnel de ton compte utilisateur :

C’est ma faute, j’ai pris une capture du code au mauvais moment car je voulais voir si j’avais bien accès à /boot/efi. Donc j’avais bien tester la commande avant sans être dans le dossier. Pour être sur j’ai refais la commande et idem.

gudbes@pcx:~$ su -c "mount /boot/efi"
Mot de passe : 
mount: /dev/sda3 est déjà monté ou /boot/efi est occupé

Gudbes

Un détail m’étonne : /boot est sur le disque sdb alors que mount parle de monter une partition qui est sur sda. Peux-tu donner la sortie de [mono]blkid[/mono] et [mono]lsblk[/mono], et le contenu du fichier /etc/fstab ?

Bonjour,

Je suis désolé de te prendre du temps pour mon problème. J’espère ne pas trop d’embêter.

Voilà les informations que tu m’as demandé :

gudbes@pcx:~$ su -c "blkid"
Mot de passe : 
/dev/mapper/sda5_crypt: UUID="IQPbXb-zLNt-ENHF-fPi1-zj7M-k30r-4Uvvyr" TYPE="LVM2_member"
/dev/mapper/pcx--vg-root: UUID="21db3a4c-f52d-4cad-adf1-79f669438276" TYPE="ext4"
/dev/sda1: UUID="FA06-2016" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ed68aac3-d79b-4294-993e-2600226fb5a1"
/dev/sda3: LABEL="OS" UUID="AA55F7F6A100D6EC" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="7258fcfb-b619-482c-9107-45aafa7f592d"
/dev/sdb1: UUID="842ba730-3459-4068-ba86-7a1ee23a95d7" TYPE="ext2" PARTUUID="ee6d3c19-01"
/dev/sdb5: UUID="b378ec0c-d262-43c0-81f3-2db873abf513" TYPE="crypto_LUKS" PARTUUID="ee6d3c19-05"
/dev/sdc1: LABEL="DATA" UUID="CC3A39733A395BA0" TYPE="ntfs" PARTUUID="daec7ad6-01"
/dev/md126p1: LABEL="DATA" UUID="CC3A39733A395BA0" TYPE="ntfs"
/dev/mapper/pcx--vg-swap_1: UUID="c1e70c44-a1b7-4673-a3de-203014a4b38e" TYPE="swap"
/dev/mapper/pcx--vg-home: UUID="2b521b54-1fc4-435d-b88d-3ee4ecc81337" TYPE="ext4"
/dev/sdh1: LABEL="RM-CM-)servM-CM-) au systM-CM-(me" UUID="5CD0BAC7D0BAA6A4" TYPE="ntfs" PARTUUID="74ef36db-01"
/dev/sdh3: UUID="D43A37543A3732BA" TYPE="ntfs" PARTUUID="74ef36db-03"
/dev/sdb3: UUID="AAA0-C1EB" TYPE="vfat" PARTUUID="ee6d3c19-03"
/dev/sda2: PARTLABEL="Microsoft reserved partition" PARTUUID="f7baac3f-f8a1-4940-b558-c9556e441fab"
/dev/md126: PTUUID="daec7ad6" PTTYPE="dos"
/dev/sdh2: UUID="BC0C9CA00C9C56EC" TYPE="ntfs" PARTUUID="74ef36db-02"
gudbes@pcx:~$ lsblk
NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                    8:0    0  83,9G  0 disk  
├─sda1                 8:1    0  65,5M  0 part  
├─sda2                 8:2    0   128M  0 part  
└─sda3                 8:3    0  83,7G  0 part  
sdb                    8:16   0 447,1G  0 disk  
├─sdb1                 8:17   0   243M  0 part  /boot
├─sdb3                 8:19   0   511M  0 part  
└─sdb5                 8:21   0  83,6G  0 part  
  └─sda5_crypt       253:0    0  83,6G  0 crypt 
    ├─pcx--vg-root   253:1    0   9,3G  0 lvm   /
    ├─pcx--vg-swap_1 253:2    0     3G  0 lvm   [SWAP]
    └─pcx--vg-home   253:3    0  71,3G  0 lvm   /home
sdc                    8:32   0 931,5G  0 disk  
└─sdc1                 8:33   0 931,5G  0 part  
sdh                    8:112  0 447,1G  0 disk  
├─sdh1                 8:113  0   350M  0 part  /media/gudbes/Réservé au système
├─sdh2                 8:114  0 446,4G  0 part  /media/gudbes/BC0C9CA00C9C56EC
└─sdh3                 8:115  0   450M  0 part  /media/gudbes/D43A37543A3732BA
sr0                   11:0    1  1024M  0 rom  
gudbes@pcx:~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/pcx--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=842ba730-3459-4068-ba86-7a1ee23a95d7 /boot           ext2    defaults        0       2
/dev/mapper/pcx--vg-home /home           ext4    defaults        0       2
/dev/mapper/pcx--vg-swap_1 none            swap    sw              0       0
/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
UUID=AA55F7F6A100D6EC  /boot/efi  vfat  defaults

Encore et encore merci de ton aide.

Bonne journée à toi.

Gudbes

Je ne comprends pas tout, les informations de blkid et lsblk ne collent pas avec la table de partition du disque Windows que tu avais mentionnée au début du fil.

En tout cas tu n’as pas mis le bon UUID dans /etc/fstab. C’est l’UUID d’une partition NTFS sur le disque Windows /dev/sda, alors que la partition que tu as créée sur le disque Linux /dev/sdb a pour UUID AAA0-C1EB. L’erreur vient probablement de là, bien que le libellé aurait dû être “mauvais type de système de fichiers”.

Vérifie aussi avec [mono]fdisk -l /dev/sdb[/mono] que la partition a bien pour type “EFI system” (identifiant “ef”).