Dual boot : disque dur détécter sans partitionement UX303L

Il aurait fallu exécuter les trois dernières commandes après avoir réussi à redémarrer GRUB et Debian en mode EFI. Et ça, c’est dépendant du firmware UEFI de la machine (le remplaçant du BIOS).

Le fichier que je t’ai fait renommer et remplacer est le chargeur EFI par défaut (installé par Windows) que lance le firmware s’il n’arrive pas à booter sur autre chose. Mais pour le moment Windows boote très bien, donc le chargeur par défaut n’est pas lancé automatiquement. Il y a plusieurs options :

  • Passer par le menu de démarrage du firmware UEFI. Chaque firmware est différent, mais s’il est complet il devrait y avoir notamment comme choix :
    a) Windows Boot Manager
    b) Le disque en mode UEFI
    c) Le disque en mode legacy/CSM

Actuellement tu sélectionnes a) pour démarrer Windows et c) pour lancer GRUB en mode legacy puis Debian. Il faut maintenant sélectionner b).

  • Si ce choix n’est pas disponible ou ne fonctionne pas, une autre approche consiste à empêcher le firmware de trouver le chargeur de Windows, par exemple en renommant le répertoire /boot/efi/EFI/Microsoft. Mais cela peut comporter des risques : d’une part, si le chargeur par défaut ne fonctionne pas, tu ne pourras même plus lancer Windows ; d’autre part, il semblerait que certains firmwares UEFI effacent une entrée d’amorçage (ce qui fait qu’il apparaît dans la liste de démarrage du firmware) quand le fichier correspondant n’existe plus. Il serait donc difficile de revenir en arrière.

  • Variante de la méthode précédente : renommer et remplacer le fichier du chargeur d’amorçage de Windows avec le core.efi de GRUB. Le fichier s’appelle /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi ou quelque chose d’approchant. Comme précédemment, Windows ne démarrera plus mais son entrée UEFI ne risque pas d’être effacée. D’autre part, comme la précédente, elle nécessite d’annuler les modifications après avoir réussi à lancer GRUB et Debian en mode EFI.

Le mieux et le plus simple est donc la première solution.

si j’ai bien compris, la première méthode consiste a modifier l’ordre de boot de mes différents disque pour pouvoir booter sur le grub et pouvoir choisir entre Windows et Linux. le truc c’est que j’ai beau les mettre dans tout les sens possible, soit je boot direct sous Windows (avec le Windows boot manager) soit je boot sur le grub et je peux booter tranquillement sous linux mais des que je choisis Windows il me dis qu’il n’a pas pu l’amorcer et me renvoi une erreur.

gyazo.com/c8251692033f25c274c7c4dedeba0995

Je ne sais pas ce que tu as fait, mais il y a maintenant une entrée “debian” dans la liste d’amorçage. Quand tu la sélectionnes pour lancer Debian, la commande [mono]efibootmgr[/mono] devrait maintenant s’exécuter sans erreur et afficher une liste ressemblant à celle de ta photo. A partir de là, il faut exécuter [mono]update-grub[/mono] pour regénérer le menu de démarrage de GRUB afin que Windows soit intégré de la bonne façon.

Tant que Debian démarrait en mode BIOS/legacy/CSM, le menu de démarrage de GRUB généré par [mono]update-grub[/mono] ne pouvait pas inclure les chargeurs EFI comme celui de Windows. Et l’entrée qu’il ajoute pour Windows ne marche pas non plus en mode legacy puisque Windows n’est amorçable qu’en mode EFI.

je viens de d’executer a nouveau la commande efibootmgr et j’ai la meme erreur

root@Debian:~# efibootmgr efibootmgr: EFI variables are not supported on this system.

y a pas un argument a rajouter a cette commande ?

Pas pour vérifier si le système a démarré en mode EFI (apparemment non) et la liste des entrées d’amorçage.
Il y a bien un fichier /boot/efi/EFI/debian/grubx64.efi maintenant ?
(EDIT : correction chemin/nom du fichier)
Tu as bien démarré avec l’entrée “debian” ?
Dans l’écran du firmware dont tu as joint une photo tu peux désactiver l’option “CSM” pour ne pas risquer de démarrer en mode legacy. Si GRUB se lance ensuite, ce sera forcément en mode EFI.

voilà ce ue j’ai dans le dossier :

root@Debian:~# cd /boot/efi/EFI/Boot/ root@Debian:/boot/efi/EFI/Boot# ls bootx64.efi bootx64.win

je redémarre le pc et je désactive le csm

Pardon, erreur de copier-coller de ma part. Il s’agit du fichier /boot/efi/EFI/debian/grubx64.efi.

voilà ce que j’ai dans le dossier : root@Debian:~# cd /boot/efi/EFI/debian/ root@Debian:/boot/efi/EFI/debian# ls grubx64.efi

Je viens de désactiver le CMS et voilà ce que j’ai qui s’affiche : gyazo.com/9692d8e6b674ae093dea27fde694d51a

ensuite dans le grub lorsque je choisi Windows : voilà ce qu’il me dit et lorsque j’appuie sur une touche, je retourne au menu du grub : gyazo.com/0780dd17f2561f4e8b6173976a4c5e27

Je répète : c’est normal, tu vas trop vite.
D’abord démarre Debian, exécute [mono]efibootmgr[/mono] pour vérifier que le système a démarré en mode EFI (avec CSM désactivé je ne vois pas comment le contraire serait encore possible) et si c’est bien le cas exécute [mono]update-grub[/mono]. Ensuite seulement tu devrais pouvoir démarrer Windows depuis le menu de GRUB.

lorsque je tape la commande en root depuis le terminal j’ai toujours la même erreur. Est ce que je dois le faire depuis ma session debian ou est ce que c’est possible d’ouvrir un terminal depuis le grub ? je comprend pas trop ou et/ou quand le faire :confused:

Depuis Debian.
Je ne comprends pas d’où vient l’erreur. Visiblement GRUB démarre en mode EFI d’après le message d’erreur quand tu sélectionnes Windows (normal si CSM est désactivé).
Vérifie si le module efivars est chargé avec

Et si ce n’est pas le cas, essaie de le charger manuellement avec

modprobe efivars modprobe efivarfs
Tu peux aussi regarder dans les logs du noyau

(ça risque d’afficher beaucoup de choses)

root@Debian:~# lsmod | grep efi root@Debian:~# modprobe efivars modprobe: ERROR: could not insert 'efivars': No such device root@Debian:~# modprobe efivarfs root@Debian:~# dmesg | grep -i efi [ 0.000000] efi: EFI v2.40 by American Megatrends [ 0.000000] efi: ACPI 2.0=0xdb728000 ACPI=0xdb728000 SMBIOS=0xdce2d998 [ 0.000000] efi: No EFI runtime due to 32/64-bit mismatch with kernel [ 0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x0000000000058000) (0MB) [ 0.000000] efi: mem01: type=0, attr=0xf, range=[0x0000000000058000-0x0000000000059000) (0MB) [ 0.000000] efi: mem02: type=7, attr=0xf, range=[0x0000000000059000-0x000000000009e000) (0MB) [ 0.000000] efi: mem03: type=0, attr=0xf, range=[0x000000000009e000-0x00000000000a0000) (0MB) [ 0.000000] efi: mem04: type=2, attr=0xf, range=[0x0000000000100000-0x0000000000af2000) (9MB) [ 0.000000] efi: mem05: type=7, attr=0xf, range=[0x0000000000af2000-0x0000000010000000) (245MB) [ 0.000000] efi: mem06: type=3, attr=0xf, range=[0x0000000010000000-0x000000001000b000) (0MB) [ 0.000000] efi: mem07: type=7, attr=0xf, range=[0x000000001000b000-0x0000000036412000) (612MB) [ 0.000000] efi: mem08: type=2, attr=0xf, range=[0x0000000036412000-0x0000000037201000) (13MB) [ 0.000000] efi: mem09: type=7, attr=0xf, range=[0x0000000037201000-0x0000000096e23000) (1532MB) [ 0.000000] efi: mem10: type=2, attr=0xf, range=[0x0000000096e23000-0x00000000cbae0000) (844MB) [ 0.000000] efi: mem11: type=4, attr=0xf, range=[0x00000000cbae0000-0x00000000cbb20000) (0MB) [ 0.000000] efi: mem12: type=7, attr=0xf, range=[0x00000000cbb20000-0x00000000d28aa000) (109MB) [ 0.000000] efi: mem13: type=1, attr=0xf, range=[0x00000000d28aa000-0x00000000d28c8000) (0MB) [ 0.000000] efi: mem14: type=4, attr=0xf, range=[0x00000000d28c8000-0x00000000d3768000) (14MB) [ 0.000000] efi: mem15: type=6, attr=0x800000000000000f, range=[0x00000000d3768000-0x00000000d3aca000) (3MB) [ 0.000000] efi: mem16: type=4, attr=0xf, range=[0x00000000d3aca000-0x00000000d3ad0000) (0MB) [ 0.000000] efi: mem17: type=7, attr=0xf, range=[0x00000000d3ad0000-0x00000000d5f1a000) (36MB) [ 0.000000] efi: mem18: type=4, attr=0xf, range=[0x00000000d5f1a000-0x00000000da463000) (69MB) [ 0.000000] efi: mem19: type=7, attr=0xf, range=[0x00000000da463000-0x00000000da7d0000) (3MB) [ 0.000000] efi: mem20: type=3, attr=0xf, range=[0x00000000da7d0000-0x00000000daa63000) (2MB) [ 0.000000] efi: mem21: type=0, attr=0xf, range=[0x00000000daa63000-0x00000000daac2000) (0MB) [ 0.000000] efi: mem22: type=7, attr=0xf, range=[0x00000000daac2000-0x00000000db2d8000) (8MB) [ 0.000000] efi: mem23: type=2, attr=0xf, range=[0x00000000db2d8000-0x00000000db2e2000) (0MB) [ 0.000000] efi: mem24: type=10, attr=0xf, range=[0x00000000db2e2000-0x00000000dc420000) (17MB) [ 0.000000] efi: mem25: type=6, attr=0x800000000000000f, range=[0x00000000dc420000-0x00000000dcee5000) (10MB) [ 0.000000] efi: mem26: type=5, attr=0x800000000000000f, range=[0x00000000dcee5000-0x00000000dcfff000) (1MB) [ 0.000000] efi: mem27: type=4, attr=0xf, range=[0x00000000dcfff000-0x00000000dd000000) (0MB) [ 0.000000] efi: mem28: type=7, attr=0xf, range=[0x0000000100000000-0x000000021f000000) (4592MB) [ 0.000000] efi: mem29: type=0, attr=0x0, range=[0x00000000dd800000-0x00000000e0000000) (40MB) [ 0.000000] efi: mem30: type=11, attr=0x8000000000000001, range=[0x00000000f8000000-0x00000000fc000000) (64MB) [ 0.000000] efi: mem31: type=11, attr=0x8000000000000001, range=[0x00000000fec00000-0x00000000fec01000) (0MB) [ 0.000000] efi: mem32: type=11, attr=0x8000000000000001, range=[0x00000000fed00000-0x00000000fed04000) (0MB) [ 0.000000] efi: mem33: type=11, attr=0x8000000000000001, range=[0x00000000fed1c000-0x00000000fed20000) (0MB) [ 0.000000] efi: mem34: type=11, attr=0x8000000000000001, range=[0x00000000fee00000-0x00000000fee01000) (0MB) [ 0.000000] efi: mem35: type=11, attr=0x8000000000000001, range=[0x00000000ff000000-0x0000000100000000) (16MB) [ 0.000000] ACPI: UEFI 0x00000000DB741C88 000042 (v01 00000000 00000000) [ 0.000000] efi: efi: Setup done, disabling due to 32/64-bit mismatch [ 1.886246] tsc: Refined TSC clocksource calibration: 2194.918 MHz

voilà l’exécution, je crois que “efivars” n’existe pas, mais par contre “efivarfs” a l’air de bien exister

Non, le module existe bien. “No such device” est la transcription d’un code de retour d’erreur qui indique que le module n’a pas été chargé car le périphérique ou la fonction qu’il gère n’est pas présent.

On voit à deux reprises “32/64-bit mismatch” dans les messages du noyau. Cela suggère une disparité entre l’architecture du firmware UEFI de la machine (qui est 64 bits, on l’a vu) et l’architecture du noyau Linux qui serait donc 32 bits ?
Quel est le noyau installé ?

Dans un message précédent, je t’avais demandé le nom exact du fichier image *.iso que tu as utilisé car la présence du chargeur EFI de la bonne variante 32/64 bits en dépend. Il me semble que tu n’avais pas répondu. Si c’était une image i386 qui ne contient que le chargeur EFI 32 bits, cela explique pourquoi elle ne démarrait pas en mode EFI avec le firmware 64 bits de ta machine.

S’il se confirme que tu as installé un système i386 avec un noyau 32 bits (-586 ou -686-pae et non -amd64), rien n’est perdu : il est possible d’installer et faire fonctionner un noyau 64 bits sur un système 32 bits.

root@Debian:~# uname -a Linux Debian 3.16.0-4-686-pae #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) i686 GNU/Linux

j’ai télécharger une image i386, j’avais oublier de répondre. du coup même s’il est possible de faire fonctionner le noyau 64bits sur un système 32 bits, ne faudrait-il pas mieux que je réinstalle un système complet 64 bits pour être au maximum des compétences de la machine ? ça ne me gène en aucun cas de tout réinstaller, histoire de pouvoir commencer a utiliser Linux avec quelque chose de stable et de performant pour être dans les meilleurs conditions possibles ?

A toi de décider. Question performances, la différence entre 32 et 64 bits ne sera probablement perceptible (en plus ou en moins) que dans quelques rares cas d’utilisation (calcul entier, compression, chiffrement…). Pour la gestion de la mémoire, un noyau 64 bits est recommandé au-delà de 8 Gio. En deça, un noyau 32 bits avec PAE s’en sort encore. Mais l’avenir est au 64 bits.

PS : Par satisfaction personnelle j’aurais quand même préféré mener cette installation à son terme. Mais si ton temps ou ta bande passante sont précieux, je ne t’en voudrai pas de ne pas les gaspiller à télécharger et installer le noyau 64 bits pour la distribution 32 bits avant de réinstaller un système 64 bits.

PPS : Il me semble qu’un contributeur du forum (fran.b ?) a publié dans la section Trucs&astuces un sujet pour migrer une installation 32 bits en 64 bits sans réinstaller, mais à ton stade ce sera certainement plus rapide de réinstaller.

bon ok je vais installer le 64 bits un conseil pour créé une clef bootable sous Linux ou vaut mieux que je repasse par Windows, (j’ai un peu la flemme d’attendre 15 min le temps qu’il démarre :wink: )

En supposant que la clé USB soit vue comme /dev/sdc et le fichier image /chemin/fichier.iso, exécuter en root :

dd if=/chemin/fichier.iso of=/dev/sdc bs=1M sync
ou

cp /chemin/fichier.iso /dev/sdc sync
Cela écrase le contenu du disque sans avertissement, donc ne pas se tromper de nom.

très bien, je prend note, je reviens des que c’est installer :slightly_smiling: Merci beaucoup !!

c’est bon c’est installer, du coup j’ai fait efibootmgr : root@Debian:~# efibootmgr BootCurrent: 0001 Timeout: 1 seconds BootOrder: 0001,0000 Boot0000* Windows Boot Manager Boot0001* debian

et ensuit update-grub :

root@Debian:~# update-grub Création du fichier de configuration GRUB… Found background image: /usr/share/images/desktop-base/desktop-grub.png Image Linux trouvée : /boot/vmlinuz-3.16.0-4-amd64 Image mémoire initiale trouvée : /boot/initrd.img-3.16.0-4-amd64 Windows Boot Manager trouvé sur /dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi Adding boot menu entry for EFI firmware configuration fait

Ces commandes confirment que tout fonctionne bien mais elles n’étaient pas nécessaires. Avec la bonne version de l’installateur qui démarre dans le bon mode et installe le bon noyau, tout est beaucoup plus simple et le multiboot est automatiquement mis en place à l’installation.