Une réinstallation de Linux/GNU, un redimenssionnement de la partition Windows, puis pouf ! Plus de boot loaders, plus de GRUB, plus de Windows, un redémarrage en boucle infinie. Que faire ?

Sommaire

Réinstaller GRUB (GRand Unified Bootloader)

Windows fonctionnel ou plus rien : Depuis un Live CD

Dirigez vous vers l'outil boot-repair. Le sujet a déjà été abordé ici : Diagnostic double boot.

Système Linux/GNU fonctionnel

Le lancement de la distri se fait mais Windows n'est plus fonctionnel (plus d'entrée dans grub ou l'entrée Windows ne marche pas).

Installez boot-repair (cf paragraphe ci-dessus). Il peut arriver que boot-repair se plante sur les configs exotiques (rare mais ça peut survenir), auquel cas il faut connaître les commandes manuelles.

Comme d'habitude la documentation de Archlinux est remarquable : GRUB, la partition système UEFI.

Listez les partitions du système:

$ sudo fdisk -l
Device          Start        End   Sectors   Size Type
/dev/sda1        2048     206847    204800   100M EFI System
/dev/sda2      206848    2050047   1843200   900M Windows recovery environment
/dev/sda3     2050048    2312191    262144   128M Microsoft reserved
/dev/sda4   125192192  588369919 463177728 220,9G Microsoft basic data
/dev/sda5   588369920 1436475391 848105472 404,4G Microsoft basic data
/dev/sda6  1436475392 1465147391  28672000  13,7G Windows recovery environment
/dev/sda7   112596992  125192191  12595200     6G Linux swap
/dev/sda8     2312192   55560191  53248000  25,4G Microsoft basic data
/dev/sda9    55560192  112594943  57034752  27,2G Microsoft basic data

Assurez vous que la partition EFI (sda1 ici) /boot/efi/ soit montée; Si non, faites :

mount -t vfat /dev/sdXY /boot/efi

Créez le répertoire /boot/efi/EFI :

mkdir -p /boot/efi/EFI

Installez grub :

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=mon_linux --recheck

On suppose ici que :

  • Le système est en 64bits (x86_64-efi),
  • La partition /boot/efi est montée,
  • L'entrée que vous souhaitez créer porte le nom de mon_linux (ce paramètre est facultatif, oubliez-le pour qu'il prenne le nom de la distri courante)

Donnez la faculté d'auto-détection des OS à GRUB :

apt-get install os-prober

Réinitialisez grub :

grub-mkconfig -o /boot/grub/grub.cfg

Réinstaller le BCD (Boot Configuration Data) de Windows

Le BCD est un magasin stockant les informations nécessaires au démarrage de Windows. Il est localisé dans le fichier \Boot\bcd. Comme toujours sous Windows, le bordel est prédominant. La localisation du dossier Boot peut varier selon que le système soit installé en mode UEFI, ou qu'il cohabite avec d'autres OS...

Continuons sur l'exemple idéal où BCD est installé dans une partition UEFI dédiée. Le chemin sera alors: Z:\EFI\Microsoft\Boot\ (donc /boot/efi/EFI/Microsoft/Boot/ sur Linux/GNU).

La gestion du BCD se fait sous Windows, via les utilitaires bootrec et bcdedit.

Dans le cas d'un Windows qui ne démarre plus avec un GRUB néanmoins fonctionnel, il y a de grandes chances que le magasin BCD soit corompu, il va donc falloir le reconstruire.

Le mode Recovery

À ce stade vous allez devoir vous débrouiller pour obtenir une console de récupération de Windows;

  • Soit depuis la partition recovery de votre constructeur,
  • soit depuis un CD de réinstallation.

Note: Il n'est pas nécessaire que la console de récupération provienne de la même version de Windows que celle que vous tentez de réparer.

*Note perso: Chez moi la partition recovery n'est pas accessible depuis le bios. MAIS, quand je réactive le mode Secure Boot, le système UEFI s'aperçoit évidemment que ma Debian n'est pas compatible. J'ai donc le droit à une fenêtre d'erreur qui une fois validée enclenche le boot sur la partition Recovery de Windows 8.
WTF ?
Oui. C'est le seul moyen que j'ai pour booter sur la réparation de Windows... *

Quand le mode recovery se lance, l'ordinateur tente de réparer l'installation.
N'ayez crainte, en général ça ne marche jamais...

Allez dans :

  • Réparer votre ordinateur
  • Troubleshoot
  • Options avancées
  • Ligne de commande

La console de récupération

Toujours en partant du principe qu'il existe une partition UEFI dédiée, il va falloir la monter pour accéder au fichier BCD.

Entrez la commande diskpart, puis:

  • Sélectionnez le disque par défaut,
  • Sélectionnez la partition UEFI (label SYSTEM),
  • Assignez une lettre de lecteur à cette partition.

Commandes:

C:\Windows\system32>diskpart

Microsoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
Sur l'ordinateur : ADMIN

DISKPART> list disk

N° disque  Statut         Taille   Libre    Dyn  GPT
---------  -------------  -------  -------  ---  ---
* Disque 0    En ligne        698 G octets  1024 K octets        *

DISKPART> sel disk 0

Le disque 0 est maintenant le disque sélectionné.

DISKPART> list vol

N° volume   Ltr  Nom          Fs     Type        Taille   Statut     Info
----------  ---  -----------  -----  ----------  -------  ---------  --------
Volume 0     F                       DVD-ROM         0 o  0 média
Volume 1     E                       DVD-ROM         0 o  0 média
Volume 2                      EXT4   Partition     25 G   Sain
Volume 3                      EXT4   Partition     27 G   Sain
Volume 4     C   Windows      NTFS   Partition    220 G   Sain       Démarrag
Volume 5     D   DATA         NTFS   Partition    404 G   Sain
Volume 6         SYSTEM       FAT32  Partition    100 M   Sain       Système
Volume 7         Recovery     NTFS   Partition    900 M   Sain       Masqué
Volume 8         Restore      NTFS   Partition     13 G   Sain       Masqué

DISKPART> set vol 6

Les arguments spécifiés pour cette commande ne sont pas valides.
Pour plus d'informations sur la commande, entrez : HELP SETID

DISKPART> sel vol 6

Le volume 6 est le volume sélectionné.

DISKPART> assign letter=Z

DiskPart a correctement assigné la lettre de lecteur ou le point de montage.

DISKPART> exit

Quitte DiskPart...

Placez-vous dans le dossier comtenant le BCD et sauvegardez-le s'il est là:

cd /d Z:\EFI\Microsoft\Boot\
ren BCD BCD.bak

Régénérez le BCD :

bootrec /rebuildbcd
Scanning all disks for Windows installations.

Please wait, since this may take a while...

Successfully scanned Windows installations.
Total identified Windows installations: 1
[1]  C:\Windows
Add installation to boot list? Yes<Y>/No<N>/All<A>:Y

The operation completed successfully.

PS : Le BCD courant peut à tout moment être sauvegardé comme ceci:

bcdedit /export c:\BCD.bak

PS2 : Profitez-en pour remettre les anciens paramètres tels que la désactivation du contrôle de la signature des pilotes installés...

bcdedit /set nointegritychecks on

Sources