[Résolu] Grub se déinstalle avec les mises à jour macOS ou Windows

Tags: #<Tag:0x00007f63f11a2118> #<Tag:0x00007f63f11a1e20>

J’ai Debian d’installer sur un disque externe pour mon Macbook Pro. Sur le disque interne il y a macOS et Windows. Quand je démarre le Mac et que le disque externe sur lequel Debian est installé est branché, c’est celui-ci qui se trouve à booter. Pour démarrer Windows ou macOS, je dois garder la touche option enfoncée au démarrage pour pouvoir choisir l’un ou l’autre.

Par contre, je pense que quand je fais une mise à jour de Windows ou de macOS, je perds l’amorce grub. Je dois réinstaller de nouveau par-dessus l’installation précédente de Debian pour pouvoir récupérer celle-ci.

Est-ce que je pourrais transformer ce disque externe en disque EFI pour ne plus dépendre de grub? Je ne sais pas comment faire. Ou est-ce qu’il y aurait un moyen pour que je perde pas grub lors des mises à jour de Windows ou macOS?

Qu’est-ce qui te fait penser cela ? C’est juste une supposition gratuite ou tu as des éléments techniques pour l’appuyer ?

Réinstaller quoi ? GRUB ? Debian ?

Tu veux dire qu’actuellement Debian est amorcé en mode BIOS avec grub-pc ?
Je ne vois pas en quoi transformer l’amorçage du disque en EFI l’affranchirait de GRUB. Il faudrait remplacer grub-pc par grub-efi.

Peut-être, mais pour cela il faudrait commencer par déterminer ce qui se passe exactement. Les informations fournies sont très insuffisantes.

J’ai remarqué que je ne pouvais pas démarrer Debian après avoir fait une mise à jour. Il y a donc une corrélation. C’est la seule hypothèse que j’ai en ce moment. Il se pourrait que la raison soit autre.

Je ne suis pas capable d’installer seulement GRUB avec l’installateur de Debian que j’aie sur une clé USB même si cette option est offerte. Je réinstalle donc Debian par dessus l’installation précédente sans formater le disque de nouveau et à la fin de l’installation GRUB s’installe de nouveau.

Il n’y pas de BIOS car c’est un Mac et le Mac liste les volumes EFI quand on le démarre avec la touche Option enfoncée. Quand je démarre le Mac et que le disque sur lequel se trouve Debian est branché alors, c’est GRUB qui automatiquement lancé et il offre uniquement la possibilité de lancer Debian. Pour démarrer sur macOS ou Windows, je dois tenir la touche Option enfoncée au démarrage pour choisir le volume de démarrage. Debian n’apparaît pas dans les volumes listés quand je tiens cette touche enfoncée. J’assume donc que le disque de Debian n’est EFI car s’il était EFI alors, il y apparaîtrait. Non?

Est-ce que d’autres informations aideraient?

Merci.

Je ne connais pas les particularités de l’amorçage du Mac, mais je connais assez bien GRUB et les principes de l’amorçage EFI.

Il y a bien d’autres causes possibles que la “perte” de l’amorce. Surtout en mode EFI qui n’utilise pas d’amorce.

Pourquoi pas ?

Il n’y a pas 50 façons d’amorcer avec l’architecture x86 : BIOS ou EFI. Si ce n’est pas l’une, c’est forcément l’autre. Des informations techniques concrètes sont nécessaires. On va commencer par regarder ce que contiennent les disques et quel GRUB est installé :

cat /etc/fstab
fdisk -l
dpkg -l 'grub*'

Tant mieux car moi j’ai beaucoup de difficulté à comprendre. Quand je regarde le contenu des répertoires EFI, je n’y comprends pas grand chose.

C’est possible.

Cette option me force à tout installer de nouveau.

Le résultat des commandes proposées:

root@MBP-de-Pierre:/home/pierre# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sde2 during installation
UUID=c3f56f25-2f03-40c1-bcb5-abbb60ed9393 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=67E3-17ED  /boot/efi       vfat    umask=0077      0       1
# /home was on /dev/sde5 during installation
UUID=b6801f7e-58db-43d5-897e-107d28d34343 /home           ext4    defaults        0       2
# swap was on /dev/sde3 during installation
UUID=197f7752-8b69-4651-8739-95ab711fb3e8 none            swap    sw              0       0



root@MBP-de-Pierre:/home/pierre# fdisk -l
Disk /dev/sda: 233.8 GiB, 251000193024 bytes, 490234752 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 2796A6CD-CD74-44AB-A4DB-420D68352333

Device         Start       End   Sectors   Size Type
/dev/sda1         40    409639    409600   200M EFI System
/dev/sda2     409640 345415903 345006264 164.5G unknown
/dev/sda3  346685440 346718207     32768    16M Microsoft reserved
/dev/sda4  346718208 490233855 143515648  68.4G Microsoft basic data


Disk /dev/sdb: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: E9BA3A0D-E0CD-4A85-B0DF-FC8684366F8B

Device          Start        End    Sectors   Size Type
/dev/sdb1          40     409639     409600   200M EFI System
/dev/sdb2      409640 1953262983 1952853344 931.2G Apple Core storage
/dev/sdb3  1953262984 1953525127     262144   128M Apple boot


Disk /dev/sdd: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 70B198E4-221C-49BE-9590-3F2024013187

Device         Start       End   Sectors   Size Type
/dev/sdd1      65535   1048559    983025   480M EFI System
/dev/sdd2    1048560  59636849  58588290    28G Linux filesystem
/dev/sdd3   59636850  92928629  33291780  15.9G Linux swap
/dev/sdd4   92928630  94894679   1966050   960M Microsoft basic data
/dev/sdd5   94894680 438659071 343764392 163.9G Linux filesystem
/dev/sdd6  438659072 500117503  61458432  29.3G Microsoft basic data

Partition 1 does not start on physical sector boundary.
Partition 3 does not start on physical sector boundary.
Partition 4 does not start on physical sector boundary.


root@MBP-de-Pierre:/home/pierre# dpkg -l 'grub*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                           Version                      Architecture                 Description
+++-==============================================-============================-============================-==================================================================================================
un  grub                                           <none>                       <none>                       (no description available)
ii  grub-common                                    2.02~beta3-5                 amd64                        GRand Unified Bootloader (common files)
un  grub-coreboot                                  <none>                       <none>                       (no description available)
un  grub-doc                                       <none>                       <none>                       (no description available)
un  grub-efi                                       <none>                       <none>                       (no description available)
ii  grub-efi-amd64                                 2.02~beta3-5                 amd64                        GRand Unified Bootloader, version 2 (EFI-AMD64 version)
ii  grub-efi-amd64-bin                             2.02~beta3-5                 amd64                        GRand Unified Bootloader, version 2 (EFI-AMD64 binaries)
un  grub-efi-ia32                                  <none>                       <none>                       (no description available)
un  grub-efi-ia64                                  <none>                       <none>                       (no description available)
un  grub-emu                                       <none>                       <none>                       (no description available)
ii  grub-firmware-qemu                             2.02~beta3-5                 amd64                        GRUB firmware image for QEMU
un  grub-ieee1275                                  <none>                       <none>                       (no description available)
un  grub-legacy                                    <none>                       <none>                       (no description available)
un  grub-legacy-doc                                <none>                       <none>                       (no description available)
un  grub-linuxbios                                 <none>                       <none>                       (no description available)
un  grub-pc                                        <none>                       <none>                       (no description available)
un  grub-xen                                       <none>                       <none>                       (no description available)
un  grub-yeeloong                                  <none>                       <none>                       (no description available)
un  grub2                                          <none>                       <none>                       (no description available)
ii  grub2-common                                   2.02~beta3-5                 amd64                        GRand Unified Bootloader (common files for version 2)

Quelle option ? Il faut sélectionner le mode “rescue” dans le menu initial.

La sortie des commandes confirme que Debian est installé en mode EFI.
Bien qu’une partition EFI soit présente sur le disque de Debian, il utilise la partition EFI d’un des deux autres disques (montée sur /boot/efi). A priori sda1, mais on ne peut pas être sûr sans vérifier les UUID avec blkid ou df car les noms des disques ont pu changer depuis l’installation (le disque de Debian était sde mais est maintenant sdd, probablement parce que la clé USB contenant l’installateur était sdd).

La prochaine étape consiste à faire l’inventaire de l’amorçage EFI.

blkid
df -h
efibootmgr -v
ls /boot/efi/EFI

Si tu pouvais aussi monter les deux autres partitions EFI et regarder leur contenu (juste le répertoire EFI).

Je choisissais cette option après avoir lancé l’installateur. Je vais essayer pour rescue.

Oui, le disque est passé de sde à sdd car la clé USB n’est plus là.

Voici la sortie des commandes (c’est efibootmgr, le manquait un ‘t’):

root@MBP-de-Pierre:/home/pierre# blkid
/dev/sda1: LABEL="EFI" UUID="67E3-17ED" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ba7fcb8d-cca9-4685-a9ed-932bd2592180"
/dev/sda4: LABEL="BOOTCAMP" UUID="A2D62659D6262DCB" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="d55e9d70-dc1b-4e18-90d7-d6f9033c8e2d"
/dev/sdc1: LABEL="EFI" UUID="67E3-17ED" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="ad42ae8d-335d-4cb6-9b4f-610701560751"
/dev/sdc3: UUID="d9ec1c20-950e-340b-ae90-522f11bdd44a" LABEL="Boot OS X" TYPE="hfsplus" PARTLABEL="Booter" PARTUUID="b2f425e8-8f8a-4228-bd60-a95a739986ac"
/dev/sda2: PARTUUID="e1c5deac-ad11-4332-b1de-8a077e9e1d74"
/dev/sda3: PARTLABEL="Microsoft reserved partition" PARTUUID="ac2c1c8c-41d0-4342-b1f9-d576ac747c79"
/dev/sdc2: PARTUUID="dee850db-410c-4366-9d35-862fa165827e"
/dev/sdd1: UUID="B09C-84DC" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="8ebc1f9d-c338-4055-a59a-f4e1ff26a40b"
/dev/sdd2: UUID="c3f56f25-2f03-40c1-bcb5-abbb60ed9393" TYPE="ext4" PARTUUID="4c038e74-2913-4904-8884-74ca59ea5a0b"
/dev/sdd3: UUID="197f7752-8b69-4651-8739-95ab711fb3e8" TYPE="swap" PARTUUID="0997d000-0fe6-4679-998c-7449299dacbf"
/dev/sdd4: LABEL="PARTAGE1G" UUID="001B-904B" TYPE="vfat" PARTLABEL="Partage1G" PARTUUID="6856a56d-3aa6-4841-a8e4-95a3cc1dd004"
/dev/sdd5: UUID="b6801f7e-58db-43d5-897e-107d28d34343" TYPE="ext4" PARTUUID="a32d1cee-dbb2-46d4-afbd-5e1020802b3d"
/dev/sdd6: LABEL="PARTAGE30G" UUID="09FD-FCAE" TYPE="vfat" PARTLABEL="Partage30G" PARTUUID="6e780002-62ec-46b0-bcd4-6c1fdb0106e5"


root@MBP-de-Pierre:/home/pierre# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            7.8G     0  7.8G   0% /dev
tmpfs           1.6G   18M  1.6G   2% /run
/dev/sdd2        28G   11G   16G  42% /
tmpfs           7.8G   64M  7.8G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sdc1       197M  126K  197M   1% /boot/efi
/dev/sdd5       161G   20G  133G  13% /home
tmpfs           1.6G   16K  1.6G   1% /run/user/117
tmpfs           1.6G   44K  1.6G   1% /run/user/1000
/dev/sdd4       959M  1.3M  957M   1% /media/pierre/PARTAGE1G
/dev/sdd6        30G  2.3M   30G   1% /media/pierre/PARTAGE30G


root@MBP-de-Pierre:/home/pierre# efibootmgr -v
BootCurrent: 0003
Timeout: 5 seconds
BootOrder: 0003,0080,0002,0000,0001
Boot0000* arch_grub	HD(1,GPT,a4ec2cbf-9634-4cff-a86c-c0a54f1071e8,0x28,0x64000)/File(\EFI\arch_grub\grubx64.efi)
Boot0001* Linux Boot Manager	HD(1,GPT,a4ec2cbf-9634-4cff-a86c-c0a54f1071e8,0x28,0x64000)/File(\EFI\systemd\systemd-bootx64.efi)
Boot0002* Windows Boot Manager	HD(1,GPT,ba7fcb8d-cca9-4685-a9ed-932bd2592180,0x28,0x64000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...1................
Boot0003* debian	HD(1,GPT,ba7fcb8d-cca9-4685-a9ed-932bd2592180,0x28,0x64000)/File(\EFI\debian\grubx64.efi)
Boot0080* Mac OS X	PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Sata(0,0,0)/HD(2,GPT,e1c5deac-ad11-4332-b1de-8a077e9e1d74,0x64028,0x149060b8)/VenMedia(be74fcf7-0b7c-49f3-9147-01f4042e6842,1496a93eeaf8144b8796557d5f93555e)/File(\645D25B1-A168-3E25-9A35-3AD78D1840F3\System\Library\CoreServices\boot.efi)
Boot0081* Mac OS X	PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Sata(0,0,0)/HD(2,GPT,e1c5deac-ad11-4332-b1de-8a077e9e1d74,0x64028,0x149060b8)/VenMedia(be74fcf7-0b7c-49f3-9147-01f4042e6842,1496a93eeaf8144b8796557d5f93555e)/File(\645D25B1-A168-3E25-9A35-3AD78D1840F3\System\Library\CoreServices\boot.efi)
Boot0082* 	PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Sata(0,0,0)/HD(2,GPT,e1c5deac-ad11-4332-b1de-8a077e9e1d74,0x64028,0x149060b8)/VenMedia(be74fcf7-0b7c-49f3-9147-01f4042e6842,1496a93eeaf8144b8796557d5f93555e)/File(\645D25B1-A168-3E25-9A35-3AD78D1840F3\System\Library\CoreServices\boot.efi)
BootFFFF* 	PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Sata(0,0,0)/HD(3,GPT,d6b6475d-263c-4279-9eec-75f9c363da2f,0x1496a0e0,0x135f20)/File(\System\Library\CoreServices\boot.efi)


root@MBP-de-Pierre:/home/pierre# ls /boot/efi/EFI
debian

La EFI de sdc n’est pas important car c’est le disque de la sauvegarde de TimeMachine de MacOS.

Le contenu de la partition EFI sur /dev/sdd est vide car c’est moi qui est essayé de créer une partition EFI mais sans succès.

C’est quand même celle-là qui est montée par Debian comme on le voit avec df. Mais ce n’est pas son PARTUUID qui est associé à l’entrée EFI “debian”. Les deux partitions EFI sur sda et sdc ont le même UUID, c’est mal. Y aurait-il eu clonage ?

Au passage, comment se fait-il que sdc ne soit pas montré par fdisk et sdb ne soit pas montré par blkid ? Le disque aurait-il changé de nom ?

Excusez-moi d’avoir dit une bêtise. Est-ce que ce clonage aurait été fait par Time Machine? Je ne sais pas car je ne m’occupe pas de disque. C’est Time Machine qui s’en sert au cas où.

Voici le contenu de la partition EFI sur sdc:

└── EFI
///└── debian
//////└── grubx64.efi

Je me rappelle avoir fait certaines manipulation de noms sur sdd. J’ai nommé la partition EFI qui n’avait pas de nom EFI System Partition.

Aucune idée. Je ne connais pas du tout Time Machine. Mais je serais surpris qu’il s’amuse à cloner des partitions de cette façon, avec les risques de confusion d’UUID qui en découlent.

Le contenu de la partition sdc1 est standard pour une partition EFI créée et utilisée exclusivement par Debian. Il faudrait regarder la date des fichiers et répertoires, et comparer avec le contenu de sda1 qui est utilisée dans les entrées de boot EFI de Windows et Debian.

Je ne parle pas de l’étiquette de la partition mais du nom de périphérique du disque attribué par le système (sdX). Ce nom n’est pas forcément stable d’un démarrage à l’autre, l’important est d’être sûr que c’est le même disque grâce à son contenu (UUID, étiquettes…)

Je n’ai pas été capable de changer le UUID sur /dev/sdb1

root@MBP-de-Pierre:/home/pierre# sudo tune2fs /dev/sdb1 -U a365b142-462e-42a5-9698-ce3028d2b01b
tune2fs 1.43.4 (31-Jan-2017)
tune2fs: Numéro magique invalide dans le super-bloc lors de la tentative d'ouverture de /dev/sdb1
/dev/sdb1 contient un système de fichiers vfat étiqueté « EFI »

Voici les dates que j’aie:

root@MBP-de-Pierre:/home/pierre/temp# ls -l --full-time disk # /dev/sda1
total 3
-rwxr-xr-x 1 root root 1820 2017-09-30 21:06:26.000000000 -0400 BOOTLOG
drwxr-xr-x 6 root root  512 2018-01-13 18:10:38.000000000 -0500 EFI

root@MBP-de-Pierre:/home/pierre/temp# ls -l --full-time disk # /dev/sdb1
total 1
drwx------ 3 root root 512 2018-02-23 19:59:54.000000000 -0500 EFI

Normal. tunel2fs n’agit que sur les systèmes de fichiers ext2/3/4. Une partition EFI contient un système de fichiers FAT.
Je ne connais pas de commande permettant de modifier l’identifiant (utilisé comme UUID) d’un système de fichiers FAT, seulement la commande dosfslabel pour modifier l’étiquette.
De toute façon il était prématuré de changer l’UUID d’une partition avant d’avoir suffisamment d’informations.

Le contenu de la racine des partition EFI est insuffisant, il faut au moins le contenu des répertoires EFI/ et EFI/debian/. Et pas besoin des horodatages à la microseconde près qui ne font qu’alourdir l’affichage. La précision de l’horodatage affiché par ls -l suffit largement.

Je ai copié EFI/debian dans la partition EFI du disque sur lequel se trouve Debian mais macOS ne voit toujours pas ce disque démarrage quand je maintiens la touche Option enfoncée. Je ne sais pas quoi faire pour qu’il apparaisse.

Désolé mais je ne connais pas assez le Mac pour t’aider sur ce point.

J’ai trouvé une solution intéressante à mon problème. J’ai installé eEFInd en téléchargeant l’image et en la copiant sur un clé USB. Si je démarre le Mac avec la touche option enfoncée, je peux choisir la clé USB comme disque de démarrage et le menu d’eEFind apparaît en listant mon disque Debian. Je peux employer cette méthode pour démarrer sur Debian sans changer quoi que ce soit sur le disque interne de démarrage du Mac.

Merci de votre attention PascalHambourg. Ce fut très apprécié.