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