Grub démarre sur mon SSD sans que je l'ai installé dessus

Bonsoir tout le monde, comment allez vous ?
Mon titre n’est pas terrible, mais je vais tout vous expliquer…

J’ai acheté un pc que j’ai monté récemment, et j’ai deux disques, un SSD pour Windows, et un HDD pour mes données. Ayant réduit le HDD de 50 GO pour installer Debian, j’ai installé Grub sur mon HDD, en me disant naivement que vu que mon option de boot 1 est mon SSD, qu’il est branché en première position directement sur ma carte mère, et que je n’aurais qu’à appuyer sur F12 sur le clavier au démarrage du pc pour lui dire de démarrer sur le HDD, d’avoir Grub, et de choisir Debian !

Sauf… Que je démarre tout le temps sur Grub. Et je me demande comment faire. Avant, je n’avais même pas l’option de démarrer sur Windows, en mettant à jour Grub je l’ai, mais il est tout en bas de la liste, c’est vraiment pas pratique, et je perd du temps pour rien, pas grand chose certes ( quelques dizaines de secondes ), mais c’était vraiment plus pratique de simplement l’allumer et qu’il démarre directement sur Windows, je ne me sers de Debian que de façon occasionnelle…

C’est pour ça que je viens vers vous ! Y’a-t-il un moyen d’empêcher Grub de démarrer tout le temps ( même sur mon SSD alors qu’il est installé sur le HDD ), ou je ne peux pas ? Que je sache si je dois réinstaller tout debian…

Merci d’avance, merci encore pour votre aide !

Démarrage en mode BIOS/legacy ou (U)EFI ?
Pour Windows, c’est facile : si la table de partition du SSD est au format GPT, Windows est en EFI. A vérifier avec fdisk ou (g)parted par exemple.
Pour Debian aussi : s’il y a un répertoire /boot/efi, Debian est en EFI.

En fonction du résultat, les stratégies sont différentes.

Je ne sais pas trop quelles options défini le boot sur ma carte mère, mais je vous envoie un screen de l’option de Boot, et écrit ce qu’on y voit !
Pour le Contrôle d’option de démarrage stockage c’est Legacy seulement, alors que pour la Priorité Rom autres périph PCI c’est UEFI seulement !
Et en vérifiant avec Gparted, mes deux disques sont sous la table de partition msdos !
Merci d’avance !

Donc Windows démarre en mode BIOS/legacy.
Pour Debian, ce n’est pas le format de la table de partition qu’il faut regarder mais la présence de /boot/efi et de /boot/grub/i386-pc.

Tu peux regarder où GRUB a été installé avec
debconf-show grub-pc
Quelle est la valeur de InstallDevice (ou approchant) ?

Tu peux rechercher cette valeur dans
ls -l /dev/disk/by-id/
pour trouver le périphérique /dev/* qui correspond.

Je n’ai pas de dossier /boot/efi mais j’ai bien le /boot/grub/i386-pc

avec deboconf-show grub-pc j’obtient :

grub-pc/timeout: 5
grub2/kfreebsd_cmdline_default: quiet
grub2/force_efi_extra_removable: false
grub-pc/install_devices_failed: false
grub-pc/install_devices_empty: false

  • grub2/linux_cmdline:
    grub2/device_map_regenerated:
    grub2/update_nvram: true
    grub-pc/disk_description:
    grub-pc/hidden_timeout: false
    grub-pc/kopt_extracted: false
  • grub2/linux_cmdline_default: quiet
    grub-pc/install_devices_failed_upgrade: true
    grub-pc/chainload_from_menu.lst: true
    grub-pc/mixed_legacy_and_grub2: true
  • grub-pc/install_devices: /dev/disk/by-id/ata-ST1000DM010-2EP102_Z9A7N500
    grub-pc/postrm_purge_boot_grub: false
    grub-pc/install_devices_disks_changed:
    grub-pc/partition_description:
    grub2/kfreebsd_cmdline:

et avec la commande ls -l /dev/disk/by-id/ j’obtient :

total 0
lrwxrwxrwx 1 root root 9 sept. 23 11:37 ata-DRW-24D5MT_K22H2ME0410 -> …/…/sr0
lrwxrwxrwx 1 root root 9 sept. 23 11:37 ata-SanDisk_SDSSDA120G_172205A00DC7 -> …/…/sda
lrwxrwxrwx 1 root root 10 sept. 23 11:37 ata-SanDisk_SDSSDA120G_172205A00DC7-part1 -> …/…/sda1
lrwxrwxrwx 1 root root 9 sept. 23 11:37 ata-ST1000DM010-2EP102_Z9A7N500 -> …/…/sdb
lrwxrwxrwx 1 root root 10 sept. 23 11:37 ata-ST1000DM010-2EP102_Z9A7N500-part1 -> …/…/sdb1
lrwxrwxrwx 1 root root 10 sept. 23 11:37 ata-ST1000DM010-2EP102_Z9A7N500-part2 -> …/…/sdb2
lrwxrwxrwx 1 root root 10 sept. 23 11:37 ata-ST1000DM010-2EP102_Z9A7N500-part5 -> …/…/sdb5
lrwxrwxrwx 1 root root 10 sept. 23 11:37 ata-ST1000DM010-2EP102_Z9A7N500-part6 -> …/…/sdb6
lrwxrwxrwx 1 root root 10 sept. 23 11:37 ata-ST1000DM010-2EP102_Z9A7N500-part7 -> …/…/sdb7
lrwxrwxrwx 1 root root 9 sept. 23 11:37 wwn-0x5000c5009308bdc4 -> …/…/sdb
lrwxrwxrwx 1 root root 10 sept. 23 11:37 wwn-0x5000c5009308bdc4-part1 -> …/…/sdb1
lrwxrwxrwx 1 root root 10 sept. 23 11:37 wwn-0x5000c5009308bdc4-part2 -> …/…/sdb2
lrwxrwxrwx 1 root root 10 sept. 23 11:37 wwn-0x5000c5009308bdc4-part5 -> …/…/sdb5
lrwxrwxrwx 1 root root 10 sept. 23 11:37 wwn-0x5000c5009308bdc4-part6 -> …/…/sdb6
lrwxrwxrwx 1 root root 10 sept. 23 11:37 wwn-0x5000c5009308bdc4-part7 -> …/…/sdb7
lrwxrwxrwx 1 root root 9 sept. 23 11:37 wwn-0x5001480000000000 -> …/…/sr0
lrwxrwxrwx 1 root root 9 sept. 23 11:37 wwn-0x5001b448b4762c2e -> …/…/sda
lrwxrwxrwx 1 root root 10 sept. 23 11:37 wwn-0x5001b448b4762c2e-part1 -> …/…/sda1

Désolé pour toutes ces questions, je m’étais essayé à Raspbian, mais Debian c’est vraiment bien différent ! ^^"

Donc Debian démarre en mode BIOS et grub-pc a bien installé le chargeur d’amorçage dans le MBR du disque dur Seagate /dev/sdb.

L’explication logique est que le BIOS choisit de démarrer sur le disque dur et non le SSD. Tu peux vérifier en débranchant alternativement l’un puis l’autre.

Peux-tu afficher les tables de partition des deux disques avec
fdisk -l

C’est surtout l’amorçage d’un Raspberry Pi qui est très différent de celui d’un PC. Et il n’y a pas de dual-boot avec Windows.

Je ne peux pas débrancher maintenant, mais j’ai fait la commande !

Disque /dev/sda : 111,8 GiB, 120034123776 octets, 234441648 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d’E/S (minimale / optimale) : 512 octets / 512 octets
Type d’étiquette de disque : dos
Identifiant de disque : 0x11ad247f

Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sda1 1026048 234438655 233412608 111,3G 7 HPFS/NTFS/exFAT

Disque /dev/sdb : 931,5 GiB, 1000204886016 octets, 1953525168 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d’E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d’étiquette de disque : dos
Identifiant de disque : 0x7eeb0f84

Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 * 2048 1848664063 1848662016 881,5G 7 HPFS/NTFS/exFAT
/dev/sdb2 1848666110 1953523711 104857602 50G 5 Étendue
/dev/sdb5 1848666112 1856477183 7811072 3,7G 82 partition d’éch
/dev/sdb6 1856479232 1876008959 19529728 9,3G 83 Linux
/dev/sdb7 1876011008 1953523711 77512704 37G 83 Linux

La partition 2 ne commence pas sur une frontière de cylindre physique.

L’unique partition sda1 du SSD n’a pas le drapeau “amorçable” alors que la première partition sdb1 du disque dur l’a. C’est certainement pour cette raison que le BIOS amorce le disque dur et pas le SSD même si le SSD est déclaré en premier dans l’ordre d’amorçage.

Reste à savoir pourquoi la partition du SSD, qui est censée contenir le système Windows, n’a pas l’indicateur amorçable. Dans certaines circonstances, Windows peut installer son chargeur d’amorçage dans une autre partition que celle qui contient le système. Y avait-il déjà une autre installation de Windows dans la partition NTFS sdb1 du disque dur ?

Si le chargeur d’amorçage de Windows (Boot Manager) est vraiment dans la partition sda1, tu peux activer l’indicateur amorçable de cette partition. Je ne connais pas les détails, mais il doit y avoir des fichiers (cachés) bootmgr et bcd. Sinon, activer cet indicateur provoquera une erreur au démarrage sur le SSD et il faudra forcer le démarrage sur le SSD avec le BIOS.

Sinon, tu sais que tu peux sélectionner Windows par défaut dans le menu de GRUB ?

Je me suis rendu compte de ça en débranchant à l’instant le pc ! Si le SSD est le seul branché je ne peux pas booter sur Windows, ça me dit d’insérer un disque bootable, alors qu’en mettant uniquement le HDD j’ai accès à Grub, et lancer windows me montre bien une fenêtre me disant qu’il me manque un périphérique !

J’avais installé Windows 10, mais à cause de problèmes de driver j’ai tout simplement reprit ma clé USB bootable de Windows 10, demander à supprimer les anciennes partitions pour tout réinstaller de façon propre…
Par contre je ne vois pas du tout comment activer ce chargeur, aurais-tu des tutoriels ou articles sur ça ? Je me rend compte que c’est vachement embêtant si mon HDD un jour ne marche plus, je ne pourrais plus booter sur mon SSD s’il me manque cette partition… Ca ne me rassure pas du tout ^^’

Ah oui ? Comment faire pour le configurer alors ?

Petite question avec tout ça : Avec les différents environnements je pensais essayer Ubuntu, vu que je n’ai aucun fichier sur mon Debian je pensais formater ma partition et refaire des installations, mais si je ne peux accéder à Windows qu’avec mon HDD, comment faire ?

Activer une partition se fait tout simplement avec n’importe quel partitionneur.

Mais regarde d’abord dans la partition NTFS de quel disque se trouvent les fichiers bootmgr et bcd. Activer une partition qui ne contient pas ces fichiers ne sert à rien.

Dans mon disque local C, donc mon SSD, j’ai les deux fichiers ! Même s’il y a plusieurs BCD, je t’ai fait une capture d’écran :

Pour le fichier bootmgr, il est dans : C:\Windows\WinSxS\x86_microsoft-windows-b…re-bootmanager-pcat_31bf3856ad364e35_10.0.15063.0_none_781ef03933a1cb3c

Ce sont bien les fichiers dont tu me parlais alors ?

Je parle d’un fichier bootmgr situé à la racine de la partition et d’un fichier BCD situé dans un répertoire Boot situé à la racine de la partition.

Et il ne faut pas chercher avec Windows, on sait très bien qu’il cache certains de ses fichiers !

D’ailleurs tu peux exécuter os-prober pour voir où il trouve Windows.

Malheureusement BCD et bootmgr sont sur la racine mon HDD, et pas mon SSD…

Cela ne me surprend pas. Les indices allaient dans ce sens.

Si le système de Windows est bien installé dans le SSD (tu es vraiment sûr ?) alors il faudrait “réparer” l’amorçage de Windows en le réinstallant sur le SSD. Mais je suis nul en dépannage de Windows (et pas vraiment intéressé) et ne sais pas du tout comment faire ; je sais juste qu’il existe des commandes comme fixmbr et fixboot sur le support d’installation de Windows.

L’autre “solution” serait particulièrement tordue : installer GRUB dans le MBR du SSD, réinstaller un code amorce standard dans le MBR du disque dur et déclarer le disque dur en premier dans l’ordre d’amorçage du BIOS.
Solution tordue car le chargeur de chaque OS serait installé sur le disque de l’autre, et donc qu’aucun des deux OS ne pourrait démarrer sans l’autre.

Oui oui, Windows est bien installé sur le SSD, vu que j’ai déplacé sur mon HDD les dossiers TMP et TEMP, que j’installe à chaque fois que c’est possible mes logiciels sur mon HDD, pour que mon SSD soit le moins solicité possible et le préserver le plus longtemps !

En regardant un peu je vois que y’a plusieurs façon, et que je vais devoir débrancher mon HDD pendant l’installation… C’est chiant tout ce soucis, alors que pour ma première installation je l’avais retiré, c’était par soucis de praticité que je l’avais laissé brancher la seconde fois…

Peut on simplement faire un copier coller du dossier boot et bootmgr ou c’est impossible ?

Merci au moins de tous tes conseils !

Aucune idée. Je ne connais pas assez le fonctionnement de l’amorçage de Windows.

Je suis allé poser une question sur le forum de Windows 10 de Microsoft, savoir si on pouvait simplement déplacer les fichiers de boot du HDD au SSD… Merci de ton aide pour diagnostiquer le problème, je te tiens au courant de comment ça s’arrange :wink:
Quand tout sera arrangé, que devrais-je faire avec grub ? Est ce qu’il sera uniquement sur mon HDD, comme prévu initialement ?

Toutes les parties de GRUB (MBR + core image, répertoire /boot/grub) sont déjà uniquement sur le disque dur.
Il faudra juste exécuter update-grub pour intégrer le nouvel emplacement du chargeur de Windows dans le menu de GRUB si tu veux pouvoir lancer Windows depuis ce menu.

Me revoilà, avec la solution à mes problèmes !
Je suis allé sur les forums de Microsoft, et malgré l’aide de quelqu’un spécialisé, cela ne marchait toujours pas, j’avais même l’erreur “Reboot to a proper media drive” si je ne laissais que le SSD branché…
Puis j’ai découvert ce topic : https://www.techspot.com/guides/630-windows-8-boot-fix/
Prêt à faire des lignes de code dans la commande de réparation, j’ai lu dans le topic qu’on pouvait faire la réparation automatique de Windows 10, qu’il y avait peu de chance que cela marche. Alors tentons ! Et finalement, ça l’a arrangé.
Si on m’avait dit que la réparation Automatique de Windows était bonne xD
Blague à part, je suis vraiment satisfait, tout marche parfaitement ! Si j’allume mon pc sans rien toucher, en quelques secondes il arrive sur Windows 10, si je veux booter sur Debian je n’ai qu’à faire F12, sélectionner mon HDD, et parfait, Grub apparait ! :smile:
Merci de ton aide !