[UEFI] Dual boot W8 / Arch raté

Questions et astuces concernant l'installation et la configuration d'archlinux
Vanarch
newbie
Messages : 2
Inscription : jeu. 11 févr. 2016, 16:42

[UEFI] Dual boot W8 / Arch raté

Message par Vanarch »

Bonjour,

Je vous écris depuis mon Asus X75VD-TY198H sous Archlinux qui se porte à merveilles grâce à vous tous et ce site notamment.
Malheureusement, j'ai voulu faire un dual-boot avec mon W8 pré-installé qui a été de moult fois malmenés (j'ai testé d'autres distrib en dual dont Fedora) mais suis cette fois incapable de le réparer par mes propres moyens. Je vais tenter de vous apporter un maximum d'informations et si vous pouvez m'aider à avoir un dual-boot fonctionnel je vous remercie d'avance !

Matériel:
Ordinateur : Asus X75VD-TY198H
OS: Window 8 (upgraded 8.1) pré-installé + Archlinux (tout en UEFI )
Boot-loader : Grub

Problème:
Comment le décrire..
* Grub ne détecte pas windows (seule option au démarrage est Archlinux). Si je pars du "BIOS" et charge le Windows Boot Loader, j'obtiens un BSoD (blue screen) avec erreur 0x000225 qui en gros dit qu'il ne trouve pas le fichier memtest.efi. J'ai déjà eu la même erreur avant, c'est quand mon dual boot avec Fedora avait embrouillé Windows dans la détection du fichier EFI.
* Je note aussi que os-prober ne détecte rien en mode live (depuis le live USB ISO Arch 01.01.2016 ) mais je note aujourd'hui que depuis arch il trouve windows :

Code : Tout sélectionner

# os-prober 
/dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi

Partionnement:

Code : Tout sélectionner

# fdisk -l 
Device         Start        End   Sectors   Size Type
/dev/sda1       2048     616447    614400   300M EFI System # partition EFI de Windows (à la base)
/dev/sda2     616448    2459647   1843200   900M Microsoft basic data # partition Windows
/dev/sda4    2721792  434641667 431919876   206G Microsoft basic data # partition principale de Windows, mon HDD quoi
/dev/sda5  434642944  435666943   1024000   500M Microsoft basic data # Partition Windows
/dev/sda6  435666944  436715519   1048576   512M EFI System # partition EFI de arch 
/dev/sda7  436715520  445104127   8388608     4G Linux swap # swap
/dev/sda8  445104128  654819327 209715200   100G Linux filesystem # /
/dev/sda9  654819328 1465149134 810329807 386.4G Linux filesystem # /home
Installation de Arch:
J'ai lu un tuto pour le boot qui conseillait de monter à l'installation dans /mnt/boot le même sdaX que windows; après plusieurs recherche finalement je suis pas sûr que c'eut été la meilleure idée... J'ai donc initialement pris le sda1 (paratition EFI de windows) comme parition de boot pour faire mon grub-install. Ca n'a bien sûr pas marché comme souhaité, windows n'est pas reconnu.
Quelques semaines plus tard, voulant récuperer le viel OS, je me suis dit que j'allais recommencer en prenant sda6 comme partition de boot pour refaire un grub-install mais toujours rien.
Chaque fois que j'ai touché au grub, mon BIOS a garder une trace en mémoire m'offrant maintenant une dizaine d'option dont trois valides : le grub sur sda1, le grub sur sda6 et le windows loader qui échoue au lancement (il reste des options invalides comme l'ancienne option Fedora, je ne sais ce qu'elle fait là).

Demande d'aide
Je suis assez à l'aise avec une distribution linux et peut manipuler tout ce que vous voulez pour avoir plus d'info mais je ne peux guère accéder aux données windows.
Je vous demande de l'aide pour retrouver windows, ou ad minima avoir une entrée windows dans mon grub.

Merci de m'avoir lu ! ^^

Van
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17618
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [UEFI] Dual boot W8 / Arch raté

Message par benjarobin »

Bonjour,
Alors c'est simple quand la détection automatique ne marche pas, on fait la chose en manuel, c'est tellement plus simple et plus rapide.
Tout d'abord je te conseil de sauvegarder les contenus des partitions ESP avant la moindre action, car sinon "c'est la merde".

Donc après je te conseil de virer os-prober, et de faire le ménage dans ton système (Attention de ne pas redémarrer entre, sinon tu ne boot plus et tu devras réparer avec un liveCD) :
  • Supprimer la partition EFI d'ArchLinux, c'est quand même plus simple de n'avoir qu'une seule partition ESP, surtout si tu utilises Grub pas de problème d'espace sur la partition ESP
  • C'est quoi sda5 qui ne fait que 500Mo ? Bref, tu supprimes et agrège comme tu veux tout cet espace de libre perdu (environ 1Go).
  • Nettoyer la partition ESP (sda1) : Tu supprimes tout ce qui n'est pas de Windows/Microsoft. Pour cela tu montes la partition ESP quelque part, par exemple dans /mnt, et tu fait le ménage dans ce dossier
  • Tu utilises efibootmgr pour supprimer toutes les entrées, même celle de Grub, on réinstallera proprement Grub.
  • efibootmgr ne doit plus lister d'entrée, sauf les éventuelles entrées "statiques" (lecteur CD, ..)
  • Tu supprimes tous les points de montages des partitions ESP dans le fstab (on remettra après si tu en as besoin, personnellement la partition ESP n'est jamais monté, mais ceci n'est valable que pour une installation de Grub telle que décrit dans le Wiki francophone)
  • On va aussi nettoyer la partition de boot (je veux dire le dossier /boot, tu n'as pas de partition de boot), on démonte bien avant la partition ESP, et on vide totalement son contenu : rm -rf /boot/*
  • On réinstalle le kernel et éventuellement intel-ucode si tu as un processeur intel (recommandé)

    Code : Tout sélectionner

    pacman -S linux intel-ucode
  • On supprime os-prober : pacman -R os-prober
  • On créer le dossier /boot/efi et on monte la partition ESP (sda1) dedans, et on rajoute l'entrée associée dans le fstab (optionnel)
  • On installe Grub tel que décrit dans le Wiki

    Code : Tout sélectionner

    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck
  • On ajoute au fichier /etc/grub.d/40_custom l'entrée de Windows, suivre ceci : https://wiki.archlinux.org/index.php/GR ... menu_entry
  • On génère le fichier de configuration de Grub

    Code : Tout sélectionner

    grub-mkconfig -o /boot/grub/grub.cfg
  • S'il n'y a pas eu d'erreur alors on peut redémarrer
A la moindre erreur je te conseil de demander conseil ici avant de tout casser. Et ne surtout pas redémarrer entre
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Vanarch
newbie
Messages : 2
Inscription : jeu. 11 févr. 2016, 16:42

Re: [UEFI] Dual boot W8 / Arch raté

Message par Vanarch »

Bonjour benjarobin, merci de cette excellente réponse !

Je vais virtuellement suivre tes indications, te montrer ce que je comprend mais je doute passer à l'action ce soir par manque de temps (s'il faut éviter de redémarrer c'est rédibitoire pour ce soir).
  • Pour supprimer la partition EFI d'Arch, j'utiliserai cgdisk pour supprimer la partition.
  • Si l'occasion se présente, je fusionnerai les espaces vides qu'il me reste, en sachant que je veux pas supprimer la partition windows de 500Mo puisque je sais pas du tout à quoi elle correpond
  • La partion ESP c'est bien sda1 ? Si oui, c'est donc l'équivalent de mon /boot. Elle ressemble à ce qui suit. Je pense, pour le nettoyer comme tu me le conseilles, supprimer les dossiers en gras :

    Code : Tout sélectionner

     tree -L 2 /boot
    /boot
    ├── BOOTNXT
    ├── BOOTSECT.BAK
    ├── Boot
    │   ├── BCD
    │   ├── BCD.LOG
    │   ├── BCD.LOG1
    │   ├── BCD.LOG2
    │   ├── BOOTSTAT.DAT
    │   ├── Fonts
    │   ├── Resources
    │   ├── langues... 
    ├── EFI
    │   ├── ASUS
    │   ├── Boot
    │   ├── EFI
    │   ├── Microsoft
    │   └── [b]archlinux_grub[/b]
    ├── System
    │   └── Library
    ├── Temp
    │   ├── SrtTrail.log
    │   ├── SrtTrail.txt
    │   ├── bcdinfo.txt
    │   ├── bootfailure.txt
    │   └── disklayout.txt
    ├── bootmgr
    ├── [b]grub[/b]
    │   ├── [b]fonts[/b]
    │   ├── [b]grub.cfg[/b]
    │   ├── [b]grubenv[/b]
    │   ├── [b]locale[/b]
    │   ├── [b]themes[/b]
    │   └── [b]x86_64-efi[/b]
    ├── [b]initramfs-linux-fallback.img[/b]
    ├── [b]initramfs-linux.img[/b]
    ├── [b]mach_kernel[/b]
    └── [b]vmlinuz-linux[/b]
    
    Mais est-ce possible de faire de manière non destructive en cas d'erreur ? Par exemple, au lieu de rm -rf les dossiers, tout mettre dans un dossier save à la racine ?
  • Je n'ai jamais utilisé

    Code : Tout sélectionner

    efibootmgt
    , voici sa sortie actuelle :

    Code : Tout sélectionner

     $  efibootmgr
    BootCurrent: 0006
    Timeout: 0 seconds
    BootOrder: 0001,0006,0003,0002,0000,000
    4
    Boot0000* Fedora
    Boot0001* Windows Boot Manager
    Boot0002* grub
    Boot0003* arch_grub # premier essai de grub
    Boot0004* archlinux_grub # second essaie
    Boot0006* new_arch_grub #celui que j'utilise
    
    Dois-je supprimer aussi celle de Windows ?
    Est-ce bien la commande suivante ?

    Code : Tout sélectionner

     # efibootmgr --delete-bootnum Boot000X 
  • Je suis pas sûr de comprendre ce que tu veux dire par supprimer les points de montages dans le fstab ? Comment suis-je sensé faire ?
  • Pour démonter la partition ESP

    Code : Tout sélectionner

    # umount /boot
    ? Et je la vide entièrement ? O.o Quelque chose m'échappe ^^ Puis pour vider son contenu faut bien qu'elle soit montée quelque part. Tu peux expliciter ce point ?
  • J'ai peut-être surestimé mes compétences, peux-tu m'expliciter en deux mots comment réinstaller le noyau ? mkinitcpio -p ? Je devrais pas faire tout ça depuis un live pour être sûr ? Parce que je viens de subir un freeze létal en démontant le /boot haha
    Pour le intel-ucode je connaissais pas, y'a un réel intérêt j'imagine alors je t'écouterai.
  • Pareil, comment "ajouter l'entrée associée dans le fstab" ?
Le reste je vois bien comment faire. Je suis désolé d'être trop novice pour comprendre du premier coup.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17618
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [UEFI] Dual boot W8 / Arch raté

Message par benjarobin »

Vanarch a écrit : Pour supprimer la partition EFI d'Arch, j'utiliserai cgdisk pour supprimer la partition.
J'ai plus l’habitude le faire avec gdisk, mais tant que l'outil est compatible GPT (ce qui est le cas de cgdisk) tout va bien
Personnellement si j'étais dans ton cas, je désactiverais le swap, swapoff -a, je supprimerai aussi la partition de swap et je créerai une partition swap dans tout cet espace vide, puis un mkswap dans cette nouvelle partition. Utiliser un outil, gdisk le permet, de réordonner les partitions pour quelles soient numérotées dans le bon ordre. Et enfin mettre à jour l'UUID du swap dans le fstab.
Vanarch a écrit :La partion ESP c'est bien sda1 ?
Oui, et tu peux supprimer ce qui est "en gras" sans aucun souci. Sinon je n'avais pas compris que ta partition ESP était monté dans /boot
Vanarch a écrit :Mais est-ce possible de faire de manière non destructive en cas d'erreur ? Par exemple, au lieu de rm -rf les dossiers, tout mettre dans un dossier save à la racine ?
Le plus simple reste de faire un tar.gz de tout le dossier boot (associé à la partition ESP sda1), puis de supprimer les fichiers et dossiers via rm -rf
Vanarch a écrit :Je n'ai jamais utilisé efibootmgt
Est-ce bien la commande suivante ?

Code : Tout sélectionner

 # efibootmgr --delete-bootnum Boot000X 
Presque la bonne commande, il ne faut pas mettre Boot000X, mais juste le nombre hexdecimal, soit 000X. Ce qui donne

Code : Tout sélectionner

efibootmgr -B 00XX
Vanarch a écrit :Dois-je supprimer aussi celle de Windows ?
En faite non, je pense que cette entrée est toujours valide, j'ai dit une bêtise, tout ceci ne servira à rien, car il manque des fichiers dans ta partition ESP de Windows, j'ai cru que memtest.efi était l'application efi de memtest86, mais c'est juste un bout du chargeur de démarrage de Windows.
Vanarch a écrit : Je suis pas sûr de comprendre ce que tu veux dire par supprimer les points de montages dans le fstab ?
Ton /etc/fstab contient une entrée pour /boot, non ? Et bien tu la supprimes... Il suffit de supprimer la ligne, ce n'est qu'un fichier texte.
Vanarch a écrit : Et je la vide entièrement ? O.o Quelque chose m'échappe ^^ Puis pour vider son contenu faut bien qu'elle soit montée quelque part. Tu peux expliciter ce point ?
Je n'avais pas compris que la partition ESP était monté dans /boot, ce qui fait que normalement une fois la partition ESP de démonté, le dossier /boot devrait être vide, si ce n'est pas le cas il faut le vider.
Vanarch a écrit : comment réinstaller le noyau ? mkinitcpio -p ?
Le noyau est installer via pacman, et l'initramfs (généré en effet par mkinitcpio) est automatiquement généré en post install lors de l'installation via pacman. Donc il n'y a rien d'autre à faire que de lancer la commande pacman donnée.
Vanarch a écrit : Pour le intel-ucode je connaissais pas, y'a un réel intérêt j'imagine alors je t'écouterai.
Je te conseil de lire le Wiki anglophone à ce sujet. Mais oui il y a un énorme intérêt si ton processeur n'est ni ultra récent, ni très vieux : Durant une période les processeur intel avaient un bug matériel, corrigé via une mise à jour du firmware, le microcode (en faite la fonctionnalité a été désactivé),
Vanarch a écrit : comment "ajouter l'entrée associée dans le fstab" ?
Si tu ne sais vraiment pas ajouter à la main une entrée, très très simple, tu peux utiliser l'outil Arch Linux genfstab pour afficher les entrées associées à ce qui est monté

Code : Tout sélectionner

genfstab -U -p /
Ne redirige pas la sortie vers le fstab, affiche juste dans un terminal le contenu et il te suffira de rajouter l'entrée désirée à la main.

Bref, en résumé tu as un gros souci, car le boot de ton Windows est surement complètement cassé, j'avais mal lu initialement.
Donc je te conseil de faire tout ce que je t'ai indiqué quand même, puis de tenter de démarrer, mais je n'y crois pas trop, et si cela ne marche pas il te faudra un CD Windows pour réparer cela mais ce n'est pas ici que tu trouveras une bonne réponse à ton problème, désolé

Normalement ta partition ESP (si monté dans /mnt) devrait contenir au final ceci (si on met de coté les .efi.mui)
find /mnt -type f ! -name "*.efi.mui"

Code : Tout sélectionner

/mnt/EFI/arch_grub/grubx64.efi
/mnt/EFI/Microsoft/Boot/BCD
/mnt/EFI/Microsoft/Boot/BCD.LOG
/mnt/EFI/Microsoft/Boot/bootmgr.efi
/mnt/EFI/Microsoft/Boot/memtest.efi
/mnt/EFI/Microsoft/Boot/bootmgfw.efi
/mnt/EFI/Microsoft/Boot/BOOTSTAT.DAT
/mnt/EFI/Microsoft/Boot/Fonts/chs_boot.ttf
/mnt/EFI/Microsoft/Boot/Fonts/cht_boot.ttf
/mnt/EFI/Microsoft/Boot/Fonts/jpn_boot.ttf
/mnt/EFI/Microsoft/Boot/Fonts/kor_boot.ttf
/mnt/EFI/Microsoft/Boot/Fonts/wgl4_boot.ttf
/mnt/EFI/Microsoft/Boot/BCD.LOG1
/mnt/EFI/Microsoft/Boot/BCD.LOG2
/mnt/EFI/Boot/bootx64.efi
Peux tu donner la sortie de

Code : Tout sélectionner

find /boot -type f ! -name "*.efi.mui"
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Répondre