#1 Le 09/03/2023, à 11:44
- Caille
[Résolu] Incohérence entre mon menu PC et mon Grub ?
Bonjour,
J'espère que mon titre résume bien le problème cité ci-après ?
J'ai eu suite à la migration de Windows 10 vers Windows 11 un problème de démarrage de mes partitions Linux.
Il y a donc sur mon PC:
1) - Manjaro
2) - Ubuntu
3) - Windows 11
Comme mes linux ne démarraient plus, j'ai installé un nouveau Manjaro pour restaurer mon Grub, (pourquoi faire compliquer, lorsque l'on ne sait pas faire simple).
Avec le menu de démarrage de Manjaro (que je préfère à celui d'Ubuntu), tout fonctionne et démarre normalement.
Depuis cette installation j'ai bien accès à toutes mes partitions ainsi qu'à Windows 11, donc tout va bien, mais...
Pour le menu du PC accessible avec la touche échap il y a Ubuntu dans la liste, mais si je clique dessus il me demande GRUB rescue ?
Lorsque je supprime dans le setup l'entrée Ubuntu, elle réapparaît au démarrage suivant, elle est donc probablement toujours inscrite dans le boot-uefi ?
J'aimerais que cette entrée soit accessible par le menu du PC tout en gardant le menu Manjaro et avec le menu propre à Ubuntu ou supprimée définitivement cette entrée du menu du PC ?
Ci-dessous le boot-infos:
boot-repair-4ppa2056 [20230309_1113]
============================== Boot Info Summary ===============================
=> No boot loader is installed in the MBR of /dev/sda.
=> Windows 7/8/10/11/2012 is installed in the MBR of /dev/sdb.
sda1: __________________________________________________________________________
File system: vfat
Boot sector type: FAT32
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files: /efi/ArcoLinux/grubx64.efi /efi/boot/bootx64.efi
/efi/boot/fbia32.efi /efi/boot/fbx64.efi
/efi/boot/mmx64.efi /efi/EndeavourOS/grubx64.efi
/efi/fedora/gcdia32.efi /efi/fedora/gcdx64.efi
/efi/fedora/grubia32.efi /efi/fedora/grubx64.efi
/efi/fedora/mmia32.efi /efi/fedora/mmx64.efi
/efi/fedora/shim.efi /efi/fedora/shimia32.efi
/efi/fedora/shimx64.efi /efi/Manjaro/grubx64.efi
/efi/ubuntu/grubx64.efi /efi/ubuntu/mmx64.efi
/efi/ubuntu/shimx64.efi /efi/fedora/grub.cfg
/efi/ubuntu/grub.cfg /efi/Microsoft/Boot/bootmgfw.efi
/efi/Microsoft/Boot/bootmgr.efi
/efi/Microsoft/Boot/cbmr_driver.efi
sda2: __________________________________________________________________________
File system:
Boot sector type: -
Boot sector info:
sda3: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows 8/10/11/2012: NTFS
Boot sector info: No errors found in the Boot Parameter Block.
Operating System: Windows 10 or 11
Boot files: /Windows/System32/winload.exe
sda4: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows 8/10/11/2012: NTFS
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files:
sda5: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Manjaro Linux
Boot files: /boot/grub/grub.cfg /etc/fstab /etc/default/grub
sda6: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files:
sda7: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 22.04.1 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /etc/default/grub
sda8: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files:
sda9: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Manjaro Linux
Boot files: /boot/grub/grub.cfg /etc/fstab /etc/default/grub
sda10: _________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files:
sdb1: __________________________________________________________________________
File system:
Boot sector type: -
Boot sector info:
sdb2: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows 8/10/11/2012: NTFS
Boot sector info: According to the info in the boot sector, sdb2 has
3519033343 sectors, but according to the info from
fdisk, it has 7814000639 sectors.
Operating System:
Boot files:
================================ 4 OS detected =================================
OS#1: Manjaro Linux (21.3.7) on sda5
OS#2: Manjaro Linux (22.0.4) on sda9
OS#3: Ubuntu 22.04.1 LTS on sda7
OS#4: Windows 10 or 11 on sda3
================================ Host/Hardware =================================
CPU architecture: 64-bit
Video: GK107M [GeForce GT 740M] 3rd Gen Core processor Graphics Controller from NVIDIA Corporation Intel Corporation
BOOT_IMAGE of the installed session in use:
/boot/vmlinuz-5.19.0-35-generic root=UUID=b28b76e4-88f2-498e-8e74-225e5bf97722 ro quiet splash
df -Th / : /dev/sda7 ext4 49G 26G 20G 58% /
===================================== UEFI =====================================
BIOS/UEFI firmware: N76VB.205(4.6) from American Megatrends Inc.
The firmware is EFI-compatible, and is set in EFI-mode for this installed-session.
SecureBoot disabled (confirmed by mokutil).
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0000,0002
Boot0000* Windows Boot Manager HD(1,GPT,a695adab-994b-448c-9a62-c1d4a17b9173,0x109000,0x32000)/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.}...xt...............
Boot0001* Manjaro HD(1,GPT,a695adab-994b-448c-9a62-c1d4a17b9173,0x109000,0x32000)/File(\EFI\Manjaro\grubx64.efi)
Boot0002* ubuntu HD(1,GPT,a695adab-994b-448c-9a62-c1d4a17b9173,0x109000,0x32000)/File(EFI\Ubuntu\grubx64.efi)
6e00b801723db1f5bd859cce3d259c84 sda1/ArcoLinux/grubx64.efi
98373481a105bc3d7196a25b9689644e sda1/boot/bootx64.efi
e06a4832fa56a95819cdb62360d8e95f sda1/boot/fbia32.efi
a9c517741ac31962d7feb152948ad1ee sda1/boot/fbx64.efi
a660182adef313615746a665966d2ccc sda1/boot/mmx64.efi
3a668ae42a1daddf462b326860059909 sda1/EndeavourOS/grubx64.efi
110183c13eab9e430f765e2f9e0bcb77 sda1/fedora/gcdia32.efi
f3bae9f62300b783f9b6919200e58183 sda1/fedora/gcdx64.efi
a78d06ab504a1e437bf062e65902604c sda1/fedora/grubia32.efi
40a19a5283c54b1f5eefe10631fa9cf9 sda1/fedora/grubx64.efi
985b8e23221f9ca8599f9f3cb1fba169 sda1/fedora/mmia32.efi
9e1b37ec6c1e7cda9bc98751820954de sda1/fedora/mmx64.efi
0ebba139c5c4deecdc686cab9d9ae76f sda1/fedora/shim.efi
fecc659c3253ac65326801d790718171 sda1/fedora/shimia32.efi
0ebba139c5c4deecdc686cab9d9ae76f sda1/fedora/shimx64.efi
98373481a105bc3d7196a25b9689644e sda1/Manjaro/grubx64.efi
5ddf997e8b025bfbc2009e85b32f60dc sda1/ubuntu/grubx64.efi
a660182adef313615746a665966d2ccc sda1/ubuntu/mmx64.efi
64349b3622c65f495a99dbf6102496e3 sda1/ubuntu/shimx64.efi
12c9ac55b01b5b8f4b45d50dcdc2c64a sda1/Microsoft/Boot/bootmgfw.efi
37f54eae78a55082e974413aa42f2cb7 sda1/Microsoft/Boot/bootmgr.efi
b8796e68099026aabcebb8fcf75b21f6 sda1/Microsoft/Boot/cbmr_driver.efi
fecc659c3253ac65326801d790718171 sda1/boot/BOOTIA32.efi
============================= Drive/Partition Info =============================
Disks info: ____________________________________________________________________
sda : is-GPT, no-BIOSboot, has---ESP, not-usb, not-mmc, has-os, has-win, 2048 sectors * 512 bytes
sdb : is-GPT, no-BIOSboot, has-noESP, not-usb, not-mmc, no-os, no-wind, 34 sectors * 512 bytes
Partitions info (1/3): _________________________________________________________
sda7 : is-os, 64, apt-get, signed grub-pc grub-efi , grub2, grub-install, grubenv-ok, update-grub, farbios
sdb2 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda4 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda9 : is-os, 64, pacman, no-docgrub, grub2, grub-install, grubenv-ng, update-grub, farbios
sda10 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda5 : is-os, 64, pacman, grub1 , grub2, grub-install, grubenv-ng, update-grub, farbios
sda3 : is-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda1 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, not-far
sda8 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda6 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
Partitions info (2/3): _________________________________________________________
sda7 : isnotESP, fstab-has-goodEFI, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sdb2 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda4 : isnotESP, part-has-no-fstab, no-nt, no-winload, recovery-or-hidden, no-bmgr, notwinboot
sda9 : isnotESP, fstab-has-goodEFI, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda10 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda5 : isnotESP, fstab-has-goodEFI, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda3 : isnotESP, part-has-no-fstab, no-nt, haswinload, no-recov-nor-hid, no-bmgr, notwinboot
sda1 : is---ESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda8 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda6 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
Partitions info (3/3): _________________________________________________________
sda7 : not--sepboot, with-boot, fstab-without-boot, not-sep-usr, with--usr, fstab-without-usr, std-grub.d, sda
sdb2 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sdb
sda4 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda9 : not--sepboot, with-boot, fstab-without-boot, not-sep-usr, with--usr, fstab-without-usr, std-grub.d, sda
sda10 : maybesepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda5 : not--sepboot, with-boot, fstab-without-boot, not-sep-usr, with--usr, fstab-without-usr, std-grub.d, sda
sda3 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda1 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda8 : maybesepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda6 : maybesepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
fdisk -l (filtered): ___________________________________________________________
Disk sda: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk identifier: 30C45098-9564-4BB9-A5F5-9970C49D230A
Start End Sectors Size Type
sda1 1085440 1290239 204800 100M EFI System
sda2 1290240 1323007 32768 16M Microsoft reserved
sda3 1323008 409377259 408054252 194.6G Microsoft basic data
sda4 409378816 410918911 1540096 752M Windows recovery environment
sda5 1062787072 1170671615 107884544 51.4G Linux filesystem
sda6 1170671616 1384959999 214288384 102.2G Linux filesystem
sda7 1384960000 1487874047 102914048 49.1G Linux filesystem
sda8 1487874048 1714812927 226938880 108.2G Linux filesystem
sda9 1714812928 1819260927 104448000 49.8G Linux filesystem
sda10 1819260928 2000409230 181148303 86.4G Linux filesystem
Disk sdb: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk identifier: 2394BA3C-43A6-45DB-BC00-343023EE6F1C
Start End Sectors Size Type
sdb1 34 32767 32734 16M Microsoft reserved
sdb2 32768 7814033407 7814000640 3.6T Microsoft basic data
parted -lm (filtered): _________________________________________________________
sda:1024GB:scsi:512:512:gpt:ATA Samsung SSD 860:;
1:556MB:661MB:105MB:fat32:EFI System Partition:boot, esp;
2:661MB:677MB:16.8MB::Microsoft reserved partition:msftres;
3:677MB:210GB:209GB:ntfs:Basic data partition:msftdata;
4:210GB:210GB:789MB:ntfs::hidden, diag;
5:544GB:599GB:55.2GB:ext4:kubuntu_system:;
6:599GB:709GB:110GB:ext4:kubuntu_home:;
7:709GB:762GB:52.7GB:ext4:ubuntu_system:;
8:762GB:878GB:116GB:ext4:ubuntu_home:;
9:878GB:931GB:53.5GB:ext4:manjaro_system:;
10:931GB:1024GB:92.7GB:ext4:manjaro_home:;
sdb:4001GB:scsi:512:512:gpt:ATA Samsung SSD 870:;
1:17.4kB:16.8MB:16.8MB::Microsoft reserved partition:msftres;
2:16.8MB:4001GB:4001GB:ntfs:Basic data partition:msftdata;
Free space >10MiB: ______________________________________________________________
sda: 0.02MiB:530MiB:530MiB
sda: 200644MiB:518939MiB:318295MiB
blkid (filtered): ______________________________________________________________
NAME FSTYPE UUID PARTUUID LABEL PARTLABEL
sda
├─sda1 vfat 3741-488E a695adab-994b-448c-9a62-c1d4a17b9173 EFI System Partition
├─sda2 9709d1d8-e2d1-44ec-b341-c7a46bf5fe10 Microsoft reserved partition
├─sda3 ntfs 1E2A742A2A73FCD9 3ef85129-1b76-4769-a16b-2c62d6f1072c Windows_10 Basic data partition
├─sda4 ntfs B2D8D4DBD8D49F43 dd03189d-df24-4481-bcf0-1cb057ae91fc
├─sda5 ext4 5d685766-2079-49ba-aa9e-8b00fb97e73f 64f87aba-625e-4f5f-bcee-6078713d0a1e kubuntu_system
├─sda6 ext4 7d239bac-319f-448d-9879-876099f64cff 38dbc01d-8653-4511-86b4-864d77bd3b9d kubuntu_home
├─sda7 ext4 b28b76e4-88f2-498e-8e74-225e5bf97722 74033568-724b-4824-b258-cac0c9de0bad ubuntu_system ubuntu_system
├─sda8 ext4 1a57718a-014c-45de-a58d-2c75b4c851a2 67968f1e-0c2c-4797-b0bc-198fda536f5c ubuntu_home ubuntu_home
├─sda9 ext4 336a5083-e549-4809-af3d-fcd44a90c2d6 22dafd60-563c-8d4a-b250-7bb754a3cd97 manjaro_system manjaro_system
└─sda10 ext4 247b8948-82f8-4825-8c98-6e7dca12cfcf a4599952-4b52-f244-b727-5c166eb383e6 manjaro_home manjaro_home
sdb
├─sdb1 a402f706-8621-46e9-aa7c-d30b6426ff09 Microsoft reserved partition
└─sdb2 ntfs FA2441DC24419D0F a759c916-e305-4718-bf8a-4727cca8c79b SSD 4 To Basic data partition
Mount points (filtered): _______________________________________________________
Avail Use% Mounted on
/dev/sda10 60.4G 23% /mnt/boot-sav/sda10
/dev/sda1 48.8M 50% /mnt/boot-sav/sda1
/dev/sda3 40.1G 79% /mnt/boot-sav/sda3
/dev/sda4 89.6M 88% /mnt/boot-sav/sda4
/dev/sda5 39G 17% /mnt/boot-sav/sda5
/dev/sda6 94.9G 0% /mnt/boot-sav/sda6
/dev/sda7 19.6G 54% /
/dev/sda8 57.6G 41% /home
/dev/sda9 11.3G 72% /mnt/boot-sav/sda9
/dev/sdb2 2.3T 36% /mnt/boot-sav/sdb2
Mount options (filtered): ______________________________________________________
===================== sda1/efi/fedora/grub.cfg (filtered) ======================
Windows Boot Manager (on sda2) osprober-efi-3741-488E
Manjaro Linux (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.12.1-2-MANJARO x64) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.12.1-2-MANJARO x64 - fallback initramfs) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.10.34-1-MANJARO x64) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.10.34-1-MANJARO x64 - fallback initramfs) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Ubuntu (on sda6) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, avec Linux 5.8.0-50-generic (on sda6) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, avec Linux 5.8.0-43-generic (on sda6) b28b76e4-88f2-498e-8e74-225e5bf97722
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
===================== sda1/efi/ubuntu/grub.cfg (filtered) ======================
search.fs_uuid 702574b8-21fb-4f44-9ef4-0877e2f8800f root hd0,gpt6
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
====================== sda5/boot/grub/grub.cfg (filtered) ======================
Manjaro Linux 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel: 5.15.60-1-MANJARO x64) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel: 5.15.60-1-MANJARO x64 - fallback initramfs) gnulinux-5.15.60-1-MANJARO x64-fallback-5d685766-2079-49ba-aa9e-8b00fb97e73f
Windows Boot Manager (on sda1) osprober-efi-3741-488E
Ubuntu 22.04.1 LTS (22.04) (on sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu (on sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.19.0-35-generic (on sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-67-generic (on sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-58-generic (on sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Manjaro Linux (22.0.4) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
========================== sda5/etc/fstab (filtered) ===========================
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=3741-488E /boot/efi vfat umask=0077 0 2
UUID=5d685766-2079-49ba-aa9e-8b00fb97e73f / ext4 defaults,noatime 0 1
UUID=7d239bac-319f-448d-9879-876099f64cff /home ext4 defaults,noatime 0 2
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
======================= sda5/etc/default/grub (filtered) =======================
GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet udev.log_priority=3"
GRUB_CMDLINE_LINUX=""
GRUB_SAVEDEFAULT=true
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=auto
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_OS_PROBER=false
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"
==================== sda5: Location of files loaded by Grub ====================
GiB - GB File Fragment(s)
523.229537964 = 561.813438464 boot/grub/grub.cfg 1
554.666988373 = 595.569143808 boot/vmlinuz-5.15-x86_64 2
539.050498962 = 578.801065984 boot/initramfs-5.15-x86_64-fallback.img 1
539.018550873 = 578.766761984 boot/initramfs-5.15-x86_64.img 2
===================== sda5: ls -l /etc/grub.d/ (filtered) ======================
-rwxr-xr-x 1 root root 13422 Jun 8 2022 10_linux
-rwxr-xr-x 1 root root 13556 Jun 8 2022 20_linux_xen
-rwxr-xr-x 1 root root 12525 Jun 8 2022 30_os-prober
-rwxr-xr-x 1 root root 1372 Jun 8 2022 30_uefi-firmware
-rwxr-xr-x 1 root root 700 Jul 22 2022 35_fwupd
-rwxr-xr-x 1 root root 214 Jun 8 2022 40_custom
-rwxr-xr-x 1 root root 215 Jun 8 2022 41_custom
-rwxr-xr-x 1 root root 25968 Feb 24 2022 41_snapshots-btrfs
-rwxr-xr-x 1 root root 1219 Jun 12 2021 60_memtest86+
====================== sda5/etc/grub.d/41_snapshots-btrfs ======================
#! /usr/bin/env bash
#
# Written by: Antynea
# BTC donation address: 1Lbvz244WA8xbpHek9W2Y12cakM6rDe5Rt
# Github: https://github.com/Antynea/grub-btrfs
#
# Purpose:
# Improves Grub by adding "btrfs snapshots" to the Grub menu.
# You can boot your system on a "snapshot" from the Grub menu.
# Supports manual snapshots, snapper, timeshift ...
# Warning : booting on read-only snapshots can be tricky.
# (Read about it, https://github.com/Antynea/grub-btrfs#warning-booting-on-read-only-snapshots-can-be-tricky)
#
# What this script does:
# - Automatically List snapshots existing on root partition (btrfs).
# - Automatically Detect if "/boot" is in separate partition.
# - Automatically Detect kernel, initramfs and intel/amd microcode in "/boot" directory on snapshots.
# - Automatically Create corresponding "menuentry" in grub.cfg.
# - Automatically detect the type/tags and descriptions/comments of snapper/timeshift snapshots.
# - Automatically generate grub.cfg if you use the provided systemd service.
#
# Installation:
# - Refer to https://github.com/Antynea/grub-btrfs#installation-
#
# Customization:
# You have the possibility to modify many parameters in /etc/default/grub-btrfs/config.
#
# Automatically update Grub
# If you would like grub-btrfs menu to automatically update when a snapshot is created or deleted:
# - Refer to https://github.com/Antynea/grub-btrfs#automatically-update-grub.
#
# Special thanks for assistance and contributions:
# - My friends
# - All contributors on Github
#
set -e
sysconfdir="/etc"
grub_btrfs_config="${sysconfdir}/default/grub-btrfs/config"
[[ -f "$grub_btrfs_config" ]] && . "$grub_btrfs_config"
[[ -f "${sysconfdir}/default/grub" ]] && . "${sysconfdir}/default/grub"
## Exit the script, if:
[[ "${GRUB_BTRFS_DISABLE,,}" == "true" ]] && exit 0 # Disable Grub-btrfs is set to true (default=false)
if ! type btrfs >/dev/null 2>&1; then exit 0; fi # btrfs-progs isn't installed
[[ -f "${GRUB_BTRFS_MKCONFIG_LIB:-/usr/share/grub/grub-mkconfig_lib}" ]] && . "${GRUB_BTRFS_MKCONFIG_LIB:-/usr/share/grub/grub-mkconfig_lib}" || exit 0 # grub-mkconfig_lib couldn't be found
# Root filesystem isn't btrfs
root_fs=$(${grub_probe} --target="fs" / 2>/dev/null)
[[ "$root_fs" != "btrfs" ]] && exit 0
## Error Handling
print_error()
{
local err_msg="$*"
local bug_report="If you think an error has occurred , please file a bug report at \" https://github.com/Antynea/grub-btrfs \""
printf "%s\n" "${err_msg}" "${bug_report}" >&2 ;
exit 0
}
printf "Detecting snapshots ...\n" >&2 ;
## Submenu name
distro=$(awk -F "=" '/^NAME=/ {gsub(/"/, "", $2); print $2}' /etc/os-release)
submenuname=${GRUB_BTRFS_SUBMENUNAME:-"${distro:-Linux} snapshots"}
## Limit snapshots to show in the Grub menu (default=50)
limit_snap_show="${GRUB_BTRFS_LIMIT:-50}"
## How to sort snapshots list
btrfs_subvolume_sort="--sort=${GRUB_BTRFS_SUBVOLUME_SORT:-"-rootid"}"
## Customize GRUB directory, where "grub.cfg" file is saved
grub_directory=${GRUB_BTRFS_GRUB_DIRNAME:-"/boot/grub"}
## Customize BOOT directory, where kernels/initrams/microcode is saved.
boot_directory=${GRUB_BTRFS_BOOT_DIRNAME:-"/boot"}
## Password protection management for submenu
# Protection support for submenu (--unrestricted)
case "${GRUB_BTRFS_DISABLE_PROTECTION_SUBMENU,,}" in
true) unrestricted_access_submenu="--unrestricted ";;
*) unrestricted_access_submenu=""
esac
# Authorized users (--users foo,bar)
if [ -n "${GRUB_BTRFS_PROTECTION_AUTHORIZED_USERS}" ] ; then
protection_authorized_users="--users ${GRUB_BTRFS_PROTECTION_AUTHORIZED_USERS} "
fi
## Probe informations of Root and Boot devices
# Probe info "Root partition"
root_device=$(${grub_probe} --target=device /) # Root device
root_uuid=$(${grub_probe} --device ${root_device} --target="fs_uuid" 2>/dev/null) # UUID of the root device
root_uuid_subvolume=$(btrfs subvolume show / 2>/dev/null) || print_error "UUID of the root subvolume is not available"; # If UUID of root subvolume is not available, then exit
root_uuid_subvolume=$(awk -F":" 'match($1, /(^[ \t]+UUID)/) {sub(/^[ \t]+/, "", $2); print $2}' <<< "$root_uuid_subvolume") # UUID of the root subvolume
# Probe info "Boot partition"
boot_device=$(${grub_probe} --target=device ${boot_directory}) # Boot device
boot_uuid=$(${grub_probe} --device ${boot_device} --target="fs_uuid" 2>/dev/null) # UUID of the boot device
boot_uuid_subvolume=$(btrfs subvolume show "$boot_directory" 2>/dev/null) || boot_uuid_subvolume=" UUID: $root_uuid_subvolume"; # If boot folder isn't a subvolume, then UUID=root_uuid_subvolume
boot_uuid_subvolume=$(awk -F":" 'match($1, /(^[ \t]+UUID)/) {sub(/^[ \t]+/, "", $2); print $2}' <<< "$boot_uuid_subvolume") # UUID of the boot subvolume
boot_hs=$(${grub_probe} --device ${boot_device} --target="hints_string" 2>/dev/null) # hints string
boot_fs=$(${grub_probe} --device ${boot_device} --target="fs" 2>/dev/null) # Type filesystem of boot device
## Parameters passed to the kernel
kernel_parameters="$GRUB_CMDLINE_LINUX $GRUB_CMDLINE_LINUX_DEFAULT"
## Mount point location
grub_btrfs_mount_point=$(mktemp -dt grub-btrfs.XXXXXXXXXX)
## Class for theme
CLASS="--class snapshots --class gnu-linux --class gnu --class os"
## save IFS
oldIFS=$IFS
## Detect uuid requirement (lvm,btrfs...)
check_uuid_required() {
if [ "x${root_uuid}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|| ! test -e "/dev/disk/by-uuid/${root_uuid}" \
|| ( test -e "${root_device}" && uses_abstraction "${root_device}" lvm ); then
LINUX_ROOT_DEVICE=${root_device}
else
LINUX_ROOT_DEVICE=UUID=${root_uuid}
fi
}
## Detect rootflags
detect_rootflags()
{
local fstabflags=$(grep -oE '^\s*[^#][[:graph:]]+\s+/\s+btrfs\s+[[:graph:]]+' "${grub_btrfs_mount_point}/${snap_dir_name_trim}/etc/fstab" \
| sed -E 's/^.*[[:space:]]([[:graph:]]+)$/\1/;s/,?subvol(id)?=[^,$]+//g;s/^,//')
rootflags="rootflags=${fstabflags:+$fstabflags,}${GRUB_BTRFS_ROOTFLAGS:+$GRUB_BTRFS_ROOTFLAGS,}"
}
unmount_grub_btrfs_mount_point()
{
if [[ -d "$grub_btrfs_mount_point" ]]; then
local wait=true
local wait_max=0
printf "Unmount %s .." "$grub_btrfs_mount_point" >&2;
while $wait; do
if grep -qs "$grub_btrfs_mount_point" /proc/mounts; then
wait_max=$((1+wait_max))
if umount "$grub_btrfs_mount_point" >/dev/null 2>&1; then
wait=false # umount successful
printf " Success\n" >&2;
elif [[ $wait_max = 10 ]]; then
printf "\nWarning: Unable to unmount %s in %s\n" "$root_device" "$grub_btrfs_mount_point" >&2;
break;
else
printf "." >&2 ; # output to show that the script is alive
sleep 2 # wait 2 seconds before retry
fi
else
wait=false # not mounted
printf " Success\n" >&2;
fi
done
if [[ "$wait" != true ]]; then
if ! rm -d "$grub_btrfs_mount_point" >/dev/null 2>&1; then
printf "Unable to delete %s: Device or ressource is busy\n" "$grub_btrfs_mount_point" >&2;
fi
fi
fi
}
## Create entry
entry()
{
echo "$@" >> "$grub_directory/grub-btrfs.new"
}
## menu entries
make_menu_entries()
{
## \" required for snap,kernels,init,microcode with space in their name
entry "submenu '${title_menu}' {
submenu '${title_submenu}' { echo }"
for k in "${name_kernel[@]}"; do
[[ ! -f "${boot_dir}"/"${k}" ]] && continue;
kversion=${k#*"-"}
for i in "${name_initramfs[@]}"; do
if [[ "${name_initramfs}" != "x" ]] ; then
# prefix_i=${i%%"-"*}
suffix_i=${i#*"-"}
# alt_suffix_i=${i##*"-"}
if [ "${kversion}" = "${suffix_i}" ]; then i="${i}";
elif [ "${kversion}.img" = "${suffix_i}" ]; then i="${i}";
elif [ "${kversion}-fallback.img" = "${suffix_i}" ]; then i="${i}";
elif [ "${kversion}.gz" = "${suffix_i}" ]; then i="${i}";
else continue;
fi
for u in "${name_microcode[@]}"; do
if [[ "${name_microcode}" != "x" ]] ; then
entry "
menuentry ' "${k}" & "${i}" & "${u}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
else
entry "
menuentry ' "${k}" & "${i}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
fi
entry "\
if [ x\$feature_all_video_module = xy ]; then
insmod all_video
fi
set gfxpayload=keep
insmod ${boot_fs}
if [ x\$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root ${boot_hs} ${boot_uuid}
else
search --no-floppy --fs-uuid --set=root ${boot_uuid}
fi
echo 'Loading Snapshot: "${snap_date_trim}" "${snap_dir_name_trim}"'
echo 'Loading Kernel: "${k}" ...'
linux \"${boot_dir_root_grub}/"${k}"\" root="${LINUX_ROOT_DEVICE}" ${kernel_parameters} ${rootflags}subvol=\""${snap_dir_name_trim}"\""
if [[ "${name_microcode}" != "x" ]] ; then
entry "\
echo 'Loading Microcode & Initramfs: "${u}" "${i}" ...'
initrd \"${boot_dir_root_grub}/"${u}"\" \"${boot_dir_root_grub}/"${i}"\""
else
entry "\
echo 'Loading Initramfs: "${i}" ...'
initrd \"${boot_dir_root_grub}/"${i}"\""
fi
entry " }"
count_warning_menuentries=$((1+count_warning_menuentries))
done
else
for u in "${name_microcode[@]}"; do
if [[ "${name_microcode}" != "x" ]] ; then
entry "
menuentry ' "${k}" & "${u}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
else
entry "
menuentry ' "${k}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
fi
entry "\
if [ x\$feature_all_video_module = xy ]; then
insmod all_video
fi
set gfxpayload=keep
insmod ${boot_fs}
if [ x\$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root ${boot_hs} ${boot_uuid}
else
search --no-floppy --fs-uuid --set=root ${boot_uuid}
fi
echo 'Loading Snapshot: "${snap_date_trim}" "${snap_dir_name_trim}"'
echo 'Loading Kernel: "${k}" ...'
linux \"${boot_dir_root_grub}/"${k}"\" root="${LINUX_ROOT_DEVICE}" ${kernel_parameters} ${rootflags}subvol=\""${snap_dir_name_trim}"\""
if [[ "${name_microcode}" != "x" ]] ; then
entry "\
echo 'Loading Microcode: "${u}" ...'
initrd \"${boot_dir_root_grub}/"${u}"\""
fi
entry " }"
count_warning_menuentries=$((1+count_warning_menuentries))
done
fi
done
done
entry "}"
}
## Trim a string from leading and trailing whitespaces
trim() {
local var="$*"
var="${var#"${var%%[![:space:]]*}"}"
var="${var%"${var##*[![:space:]]}"}"
echo -n "$var"
}
## List of snapshots on filesystem
snapshot_list()
{
local snapper_info="info.xml"
local timeshift_info="info.json"
local date_snapshots=()
local path_snapshots=()
local type_snapshots=()
local description_snapshots=()
IFS=$'\n'
for snap in $(btrfs subvolume list -sa "${btrfs_subvolume_sort}" /); do # Parse btrfs snapshots
IFS=$oldIFS
snap=($snap)
local path_snapshot=${snap[@]:13:${#snap[@]}}
if [ "$path_snapshot" = "DELETED" ]; then continue; fi # Discard deleted snapshots
[[ ${path_snapshot%%"/"*} == "<FS_TREE>" ]] && path_snapshot=${path_snapshot#*"/"} # Remove the "<FS_TREE>" string at the beginning of the path
# ignore specific path during run "grub-mkconfig"
if [ -n "${GRUB_BTRFS_IGNORE_SPECIFIC_PATH}" ] ; then
for isp in "${GRUB_BTRFS_IGNORE_SPECIFIC_PATH[@]}" ; do
[[ "${path_snapshot}" == "${isp}" ]] && continue 2;
done
fi
if [ -n "${GRUB_BTRFS_IGNORE_PREFIX_PATH}" ] ; then
for isp in "${GRUB_BTRFS_IGNORE_PREFIX_PATH[@]}" ; do
[[ "${path_snapshot}" == "${isp}"/* ]] && continue 2;
done
fi
[[ ! -d "$grub_btrfs_mount_point/$path_snapshot/boot" ]] && continue; # Discard snapshots without /boot folder
# Parse Snapper & timeshift informations
local type_snapshot="N/A"
local description_snapshot="N/A"
if [[ -s "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$snapper_info" ]] ; then
type_snapshot=$(awk -F"<|>" 'match($2, /^type/) {print $3}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$snapper_info") # search matching string beginning "type"
description_snapshot=$(awk -F"<|>" 'match($2, /^description/) {print $3}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$snapper_info") # search matching string beginning "description"
elif [[ -s "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$timeshift_info" ]] ; then
type_snapshot=$(awk -F" : " 'match($1, /^[ \t]+"tags"/) {gsub(/"|,/,"");print $2}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$timeshift_info") # search matching string beginning "tags"
description_snapshot=$(awk -F" : " 'match($1, /^[ \t]+"comments"/) {gsub(/"|,/,"");print $2}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$timeshift_info") # search matching string beginning "comments"
fi
[[ -z "$type_snapshot" ]] && type_snapshot=("N/A")
[[ -z "$description_snapshot" ]] && description_snapshot=("N/A")
# ignore specific {type,tag,description} of snapshot during run "grub-mkconfig"
if [ -n "${GRUB_BTRFS_IGNORE_SNAPSHOT_TYPE}" ] ; then
for ist in "${GRUB_BTRFS_IGNORE_SNAPSHOT_TYPE[@]}" ; do
[[ "${type_snapshot}" == "${ist}" ]] && continue 2;
done
fi
if [ -n "${GRUB_BTRFS_IGNORE_SNAPSHOT_DESCRIPTION}" ] ; then
for isd in "${GRUB_BTRFS_IGNORE_SNAPSHOT_DESCRIPTION[@]}" ; do
[[ "${description_snapshot}" == "${isd}" ]] && continue 2;
done
fi
local date_snapshot="${snap[@]:10:2}"
date_snapshots+=("$date_snapshot")
path_snapshots+=("$path_snapshot")
type_snapshots+=("$type_snapshot")
description_snapshots+=("$description_snapshot")
done
# Find max length of a snapshot date, needed for pretty formatting
local max_date_length=0
for i in "${date_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_date_length" ]] && max_date_length=$length
done
# Find max length of a snapshot name, needed for pretty formatting
local max_path_length=0
for i in "${path_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_path_length" ]] && max_path_length=$length
done
# Find max length of a snapshot type, needed for pretty formatting
local max_type_length=0
for i in "${type_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_type_length" ]] && max_type_length=$length
done
# Find max length of a snapshot description, needed for pretty formatting
local max_description_length=0
for i in "${description_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_description_length" ]] && max_description_length=$length
done
for i in "${!path_snapshots[@]}"; do
printf -v entry "%-${max_date_length}s | %-${max_path_length}s | %-${max_type_length}s | %-${max_description_length}s |" "${date_snapshots[$i]}" "${path_snapshots[$i]}" "${type_snapshots[$i]}" "${description_snapshots[$i]}"
echo "$entry"
done
IFS=$oldIFS
}
## Parse snapshots in snapshot_list
parse_snapshot_list()
{
snap_date=" $(echo "$item" | cut -d'|' -f1)" # column_1, first space is necessary for pretty formatting
snap_date_trim="$(trim "$snap_date")"
snap_dir_name="$(echo "$item" | cut -d'|' -f2)" # column_2
snap_dir_name_trim="$(trim "$snap_dir_name")"
snap_snapshot="$snap_dir_name" # Used by "title_format" function
snap_type="$(echo "$item" | cut -d'|' -f3)" # column_3
snap_description="$(echo "$item" | cut -d'|' -f4)" # column_4
}
## Detect kernels in "boot_directory"
detect_kernel()
{
list_kernel=()
# Original kernel (auto-detect)
for okernel in "${boot_dir}"/vmlinuz-* \
"${boot_dir}"/vmlinux-* \
"${boot_dir}"/kernel-* ; do
[[ ! -f "${okernel}" ]] && continue;
list_kernel+=("$okernel")
done
# Custom name kernel in "GRUB_BTRFS_NKERNEL"
if [ -n "${GRUB_BTRFS_NKERNEL}" ] ; then
for ckernel in "${boot_dir}/${GRUB_BTRFS_NKERNEL[@]}" ; do
[[ ! -f "${ckernel}" ]] && continue;
list_kernel+=("$ckernel")
done
fi
}
## Detect initramfs in "boot_directory"
detect_initramfs()
{
list_initramfs=()
# Original initramfs (auto-detect)
for oinitramfs in "${boot_dir}"/initrd.img-* \
"${boot_dir}"/initramfs-* \
"${boot_dir}"/initrd-* ; do
[[ ! -f "${oinitramfs}" ]] && continue;
list_initramfs+=("$oinitramfs")
done
# Custom name initramfs in "GRUB_BTRFS_NINIT"
if [ -n "${GRUB_BTRFS_NINIT}" ] ; then
for cinitramfs in "${boot_dir}/${GRUB_BTRFS_NINIT[@]}" ; do
[[ ! -f "${cinitramfs}" ]] && continue;
list_initramfs+=("$cinitramfs")
done
fi
if [ -z "${list_initramfs}" ]; then list_initramfs=(x); fi
}
## Detect microcode in "boot_directory"
detect_microcode()
{
list_ucode=()
# Original intel/amd microcode (auto-detect)
# See "https://www.gnu.org/software/grub/manual/grub/html_node/Simple-configuration.html"
for oiucode in "${boot_dir}"/intel-uc.img \
"${boot_dir}"/intel-ucode.img \
"${boot_dir}"/amd-uc.img \
"${boot_dir}"/amd-ucode.img \
"${boot_dir}"/early_ucode.cpio \
"${boot_dir}"/microcode.cpio; do
[[ ! -f "${oiucode}" ]] && continue;
list_ucode+=("$oiucode")
done
# Custom name microcode in "GRUB_BTRFS_CUSTOM_MICROCODE"
if [ -n "${GRUB_BTRFS_CUSTOM_MICROCODE}" ] ; then
for cucode in "${boot_dir}/${GRUB_BTRFS_CUSTOM_MICROCODE[@]}" ; do
[[ ! -f "${cucode}" ]] && continue
list_ucode+=("$cucode")
done
fi
if [ -z "${list_ucode}" ]; then list_ucode=(x); fi
}
## Title format in Grub-menu
declare -A title_column=( [date]=Date [snapshot]=Snapshot [type]=Type [description]=Description ) # Column title that appears in the header
title_format()
{
title_menu="|" # "|" is for visuals only
title_submenu="|" # "|" is for visuals only
[[ -z "${GRUB_BTRFS_TITLE_FORMAT}" ]] && GRUB_BTRFS_TITLE_FORMAT=("date" "snapshot" "type" "description"); # Default parameters
for key in "${!GRUB_BTRFS_TITLE_FORMAT[@]}"; do
[[ ${GRUB_BTRFS_TITLE_FORMAT[$key],,} != "${title_column[${GRUB_BTRFS_TITLE_FORMAT[$key]}],,}" ]] && continue; # User used wrong parameter
declare -n var="snap_${GRUB_BTRFS_TITLE_FORMAT[$key],,}" # $var is a indirect variable
if [[ "${#var}" -lt "${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}" ]]; then # Add extra spaces if length of $var is smaller than the length of column, needed for pretty formatting
printf -v var "%-$(((${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}-${#var})+${#var}))s" "${var}";
fi
title_menu+="${var}|"
title_submenu+=" $(trim "${var}") |"
done
}
# Adds a header to the grub-btrfs.cfg file
header_menu()
{
local header_entry=""
[[ -z "${GRUB_BTRFS_TITLE_FORMAT}" ]] && GRUB_BTRFS_TITLE_FORMAT=("date" "snapshot" "type" "description"); # Default parameters
for key in "${!GRUB_BTRFS_TITLE_FORMAT[@]}"; do
[[ ${GRUB_BTRFS_TITLE_FORMAT[$key],,} != "${title_column[${GRUB_BTRFS_TITLE_FORMAT[$key]}],,}" ]] && continue; # User used wrong parameter
declare -n var="snap_${GRUB_BTRFS_TITLE_FORMAT[$key],,}" # $var is a indirect variable
# Center alignment, needed for pretty formatting
local lenght_title_column_left=$((${#var}-${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}))
((lenght_title_column_left%2)) && lenght_title_column_left=$((lenght_title_column_left+1)); # If the difference is an odd number, add an extra space
lenght_title_column_left=$((((lenght_title_column_left/2)+${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]})));
local lenght_title_column_right=$(((${#var}-lenght_title_column_left)+1)) #+1 is necessary for extra "|" character
header_entry+=$(printf "%${lenght_title_column_left}s%${lenght_title_column_right}s" "${title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}" "|") # Final "|" is for visuals only
done
sed -i "1imenuentry '|${header_entry}' { echo }" "$grub_directory/grub-btrfs.new" # First "|" is for visuals only
}
## List of kernels, initramfs and microcode in snapshots
boot_bounded()
{
# Initialize menu entries
IFS=$'\n'
for item in $(snapshot_list); do
[[ ${limit_snap_show} -le 0 ]] && break; # fix: limit_snap_show=0
IFS=$oldIFS
parse_snapshot_list
boot_dir="$grub_btrfs_mount_point/$snap_dir_name_trim$boot_directory"
detect_kernel
if [ -z "${list_kernel}" ]; then continue; fi
name_kernel=("${list_kernel[@]##*"/"}")
detect_initramfs
name_initramfs=("${list_initramfs[@]##*"/"}")
detect_microcode
name_microcode=("${list_ucode[@]##*"/"}")
detect_rootflags
title_format
boot_dir_root_grub="$(make_system_path_relative_to_its_root "${boot_dir}")" # convert "boot_directory" to root of GRUB (e.g /boot become /)
make_menu_entries
# show snapshot found during run "grub-mkconfig"
if [[ "${GRUB_BTRFS_SHOW_SNAPSHOTS_FOUND:-"true"}" = "true" ]]; then
printf "Found snapshot: %s\n" "$item" >&2 ;
fi
# Limit snapshots found during run "grub-mkconfig"
count_limit_snap=$((1+count_limit_snap))
[[ $count_limit_snap -ge $limit_snap_show ]] && break;
done
IFS=$oldIFS
}
boot_separate()
{
boot_dir="${boot_directory}"
boot_dir_root_grub="$(make_system_path_relative_to_its_root "${boot_dir}")" # convert "boot_directory" to root of GRUB (e.g /boot become /)
detect_kernel
if [ -z "${list_kernel}" ]; then print_error "Kernels not found."; fi
name_kernel=("${list_kernel[@]##*"/"}")
detect_initramfs
name_initramfs=("${list_initramfs[@]##*"/"}")
detect_microcode
name_microcode=("${list_ucode[@]##*"/"}")
# Initialize menu entries
IFS=$'\n'
for item in $(snapshot_list); do
[[ ${limit_snap_show} -le 0 ]] && break; # fix: limit_snap_show=0
IFS=$oldIFS
parse_snapshot_list
detect_rootflags
title_format
make_menu_entries
# show snapshot found during run "grub-mkconfig"
if [[ "${GRUB_BTRFS_SHOW_SNAPSHOTS_FOUND:-"true"}" = "true" ]]; then
printf "Found snapshot: %s\n" "$item" >&2 ;
fi
# Limit snapshots found during run "grub-mkconfig"
count_limit_snap=$((1+count_limit_snap))
[[ $count_limit_snap -ge $limit_snap_show ]] && break;
done
IFS=$oldIFS
}
rm -f "$grub_directory/grub-btrfs.new"
> "$grub_directory/grub-btrfs.new" # Create a "grub-btrfs.new" file in "grub_directory"
# Create mount point then mounting
[[ ! -d $grub_btrfs_mount_point ]] && mkdir -p "$grub_btrfs_mount_point"
mount -o ro,subvolid=5 /dev/disk/by-uuid/"$root_uuid" "$grub_btrfs_mount_point/"
trap "unmount_grub_btrfs_mount_point" EXIT # unmounting mount point on EXIT signal
count_warning_menuentries=0 # Count menuentries
count_limit_snap=0 # Count snapshots
check_uuid_required
# Detects if /boot is a separate partition
[[ "${GRUB_BTRFS_OVERRIDE_BOOT_PARTITION_DETECTION,,}" == "true" ]] && printf "Override boot partition detection : enable \n" >&2 && boot_separate;
if [[ "$root_uuid" != "$boot_uuid" ]] || [[ "$root_uuid_subvolume" != "$boot_uuid_subvolume" ]]; then boot_separate ; else boot_bounded ; fi
# Show warn, menuentries exceeds 250 entries
[[ $count_warning_menuentries -ge 250 ]] && printf "Generated %s total GRUB entries. You might experience issues loading snapshots menu in GRUB.\n" "${count_warning_menuentries}" >&2 ;
# Show total found snapshots
if [[ "${GRUB_BTRFS_SHOW_TOTAL_SNAPSHOTS_FOUND:-"true"}" = "true" && -n "${count_limit_snap}" && "${count_limit_snap}" != "0" ]]; then
printf "Found %s snapshot(s)\n" "${count_limit_snap}" >&2 ;
fi
# if no snapshot found, exit
if [[ "${count_limit_snap}" = "0" || -z "${count_limit_snap}" ]]; then
print_error "No snapshots found."
fi
# Make a submenu in GRUB (grub.cfg) and move "grub-btrfs.new" to "grub-btrfs.cfg"
header_menu
if "${bindir}/${GRUB_BTRFS_SCRIPT_CHECK:-grub-script-check}" "$grub_directory/grub-btrfs.new"; then
cat "$grub_directory/grub-btrfs.new" > "$grub_directory/grub-btrfs.cfg"
rm -f "$grub_directory/grub-btrfs.new"
cat << EOF
submenu '${submenuname}' ${protection_authorized_users}${unrestricted_access_submenu}{
configfile "\${prefix}/grub-btrfs.cfg"
}
EOF
else
print_error "Syntax errors are detected in generated grub-btrfs.cfg file."
fi
====================== sda7/boot/grub/grub.cfg (filtered) ======================
Ubuntu b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.19.0-35-generic b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-67-generic b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-58-generic b28b76e4-88f2-498e-8e74-225e5bf97722
Windows Boot Manager (on sda1) osprober-efi-3741-488E
Manjaro Linux (21.3.7) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (22.0.4) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (21.3.7) (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
========================== sda7/etc/fstab (filtered) ===========================
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda5 during installation
UUID=b28b76e4-88f2-498e-8e74-225e5bf97722 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda2 during installation
UUID=3741-488E /boot/efi vfat umask=0077 0 1
# /home was on /dev/sda6 during installation
UUID=1a57718a-014c-45de-a58d-2c75b4c851a2 /home ext4 defaults 0 2
/swapfile none swap sw 0 0
======================= sda7/etc/default/grub (filtered) =======================
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
==================== sda7: Location of files loaded by Grub ====================
GiB - GB File Fragment(s)
665.423919678 = 714.493493248 boot/grub/grub.cfg 1
698.168968201 = 749.653221376 boot/vmlinuz 1
685.947261810 = 736.530264064 boot/vmlinuz-5.15.0-58-generic 2
698.168968201 = 749.653221376 boot/vmlinuz-5.15.0-67-generic 1
683.833614349 = 734.260752384 boot/vmlinuz-5.19.0-35-generic 1
683.833614349 = 734.260752384 boot/vmlinuz.old 1
667.170825958 = 716.369219584 boot/initrd.img 2
697.714847565 = 749.165613056 boot/initrd.img-5.15.0-58-generic 3
667.170825958 = 716.369219584 boot/initrd.img-5.15.0-67-generic 2
668.106716156 = 717.374124032 boot/initrd.img-5.19.0-35-generic 3
668.106716156 = 717.374124032 boot/initrd.img.old 3
===================== sda7: ls -l /etc/grub.d/ (filtered) ======================
-rwxr-xr-x 1 root root 18683 Apr 15 2022 10_linux
-rwxr-xr-x 1 root root 43031 Apr 15 2022 10_linux_zfs
-rwxr-xr-x 1 root root 14180 Apr 15 2022 20_linux_xen
-rwxr-xr-x 1 root root 13369 Apr 15 2022 30_os-prober
-rwxr-xr-x 1 root root 1372 Apr 15 2022 30_uefi-firmware
-rwxr-xr-x 1 root root 700 Feb 21 2022 35_fwupd
-rwxr-xr-x 1 root root 214 Jan 13 2021 40_custom
-rwxr-xr-x 1 root root 215 Apr 15 2022 41_custom
====================== sda9/boot/grub/grub.cfg (filtered) ======================
Manjaro Linux 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.1.12-1-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.1.12-1-MANJARO x64 - fallback initramfs) gnulinux-6.1.12-1-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.0.19-4-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.0.19-4-MANJARO x64 - fallback initramfs) gnulinux-6.0.19-4-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.15.94-1-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.15.94-1-MANJARO x64 - fallback initramfs) gnulinux-5.15.94-1-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.10.167-1-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.10.167-1-MANJARO x64 - fallback initramfs) gnulinux-5.10.167-1-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Windows Boot Manager (sur sda1) osprober-efi-3741-488E
Manjaro Linux (21.3.7) (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Ubuntu 22.04.1 LTS (22.04) (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.19.0-35-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-67-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-58-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
========================== sda9/etc/fstab (filtered) ===========================
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=336a5083-e549-4809-af3d-fcd44a90c2d6 / ext4 defaults,noatime 0 1
UUID=247b8948-82f8-4825-8c98-6e7dca12cfcf /home ext4 defaults,noatime 0 2
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
UUID=3741-488E /boot/efi vfat defaults 0 1
======================= sda9/etc/default/grub (filtered) =======================
GRUB_DEFAULT=saved
GRUB_TIMEOUT=-1
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet apparmor=1 security=apparmor udev.log_priority=3"
GRUB_CMDLINE_LINUX=""
GRUB_SAVEDEFAULT=true
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=auto
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_OS_PROBER=false
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"
==================== sda9: Location of files loaded by Grub ====================
GiB - GB File Fragment(s)
833.645603180 = 895.120150528 boot/grub/grub.cfg 1
856.003787994 = 919.127068672 boot/vmlinuz-5.10-x86_64 2
851.505146027 = 914.296688640 boot/vmlinuz-5.15-x86_64 2
851.507713318 = 914.299445248 boot/vmlinuz-6.0-x86_64 2
851.522457123 = 914.315276288 boot/vmlinuz-6.1-x86_64 2
851.514556885 = 914.306793472 boot/initramfs-5.10-x86_64-fallback.img 2
851.530269623 = 914.323664896 boot/initramfs-5.10-x86_64.img 2
851.586437225 = 914.383974400 boot/initramfs-5.15-x86_64-fallback.img 2
851.531024933 = 914.324475904 boot/initramfs-5.15-x86_64.img 2
851.639644623 = 914.441105408 boot/initramfs-6.0-x86_64-fallback.img 2
851.600582123 = 914.399162368 boot/initramfs-6.0-x86_64.img 2
851.678707123 = 914.483048448 boot/initramfs-6.1-x86_64-fallback.img 2
851.647457123 = 914.449494016 boot/initramfs-6.1-x86_64.img 2
===================== sda9: ls -l /etc/grub.d/ (filtered) ======================
-rwxr-xr-x 1 root root 13424 Oct 10 17:01 10_linux
-rwxr-xr-x 1 root root 13560 Oct 10 17:01 20_linux_xen
-rwxr-xr-x 1 root root 12525 Oct 10 17:01 30_os-prober
-rwxr-xr-x 1 root root 1372 Oct 10 17:01 30_uefi-firmware
-rwxr-xr-x 1 root root 722 Jan 23 14:41 35_fwupd
-rwxr-xr-x 1 root root 214 Oct 10 17:01 40_custom
-rwxr-xr-x 1 root root 215 Oct 10 17:01 41_custom
-rwxr-xr-x 1 root root 1219 Feb 9 22:50 60_memtest86+
Suggested repair: ______________________________________________________________
The default repair of the Boot-Repair utility would reinstall the grub-efi of
sda7,
using the following options: sda1/boot/efi
Additional repair would be performed: unhide-bootmenu-10s use-standard-efi-file
Final advice in case of suggested repair: ______________________________________
Please do not forget to make your UEFI firmware boot on the Ubuntu 22.04.1 LTS entry (sda1/efi/****/grub****.efi (**** will be updated in the final message) file) !
If your computer reboots directly into Windows, try to change the boot order in your UEFI firmware.
If your UEFI firmware does not allow to change the boot order, change the default boot entry of the Windows bootloader.
For example you can boot into Windows, then type the following command in an admin command prompt:
bcdedit /set {bootmgr} path \EFI\****\grub****.efi (**** will be updated in the final message)
Dernière modification par Caille (Le 09/03/2023, à 17:00)
Hors ligne
#2 Le 09/03/2023, à 17:00
- Caille
Re : [Résolu] Incohérence entre mon menu PC et mon Grub ?
Suite...
Je sais c'est l'heure de la sieste, alors je me réponds à moi-même.
J'ai placé dans le setup du PC Ubuntu en premier boot, ensuite j'ai démarré le PC avec le menu de Manjaro et j'ai choisi Ubuntu qui a démarré sans broncher.
J'ai ensuite lancé boot-repair et exécuté la première option "conseillée", j'ai reçu le message comme quoi la réparation c'était bien terminée.
Par contre il y a maintenant deux Ubuntu via le menu du PC alors qu'il y deux Manjaro, voir ci-dessous.
J'ai bien la possibilité d'utiliser les deux menus de démarrage pour lancer le PC Ubuntu ou Manjaro.
Comment supprimer un des Ubuntu et surtout qu'il ne revienne pas ?
Nouveau boot-infos, je ne sais pas s'il a changé. Je place quand même en [Résolu].
Je constate qu'il reste des traces de plusieurs systèmes déjà installés sur ce PC, est-il possible de les supprimer et surtout comment ?
boot-repair-4ppa2056 [20230309_1643]
============================== Boot Info Summary ===============================
=> No boot loader is installed in the MBR of /dev/sda.
=> Windows 7/8/10/11/2012 is installed in the MBR of /dev/sdb.
sda1: __________________________________________________________________________
File system: vfat
Boot sector type: FAT32
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files: /efi/ArcoLinux/grubx64.efi /efi/boot/bkpbootx64.efi
/efi/boot/bootx64.efi /efi/boot/fbia32.efi
/efi/boot/fbx64.efi /efi/boot/mmx64.efi
/efi/EndeavourOS/grubx64.efi /efi/fedora/gcdia32.efi
/efi/fedora/gcdx64.efi /efi/fedora/grubia32.efi
/efi/fedora/grubx64.efi /efi/fedora/mmia32.efi
/efi/fedora/mmx64.efi /efi/fedora/shim.efi
/efi/fedora/shimia32.efi /efi/fedora/shimx64.efi
/efi/Manjaro/grubx64.efi /efi/ubuntu/grubx64.efi
/efi/ubuntu/mmx64.efi /efi/ubuntu/shimx64.efi
/efi/fedora/grub.cfg /efi/ubuntu/grub.cfg
/efi/Microsoft/Boot/bootmgfw.efi
/efi/Microsoft/Boot/bootmgr.efi
/efi/Microsoft/Boot/cbmr_driver.efi
sda2: __________________________________________________________________________
File system:
Boot sector type: -
Boot sector info:
sda3: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows 8/10/11/2012: NTFS
Boot sector info: No errors found in the Boot Parameter Block.
Operating System: Windows 10 or 11
Boot files: /Windows/System32/winload.exe
sda4: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows 8/10/11/2012: NTFS
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files:
sda5: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Manjaro Linux
Boot files: /boot/grub/grub.cfg /etc/fstab /etc/default/grub
sda6: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files:
sda7: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 22.04.1 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /etc/default/grub
sda8: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files:
sda9: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Manjaro Linux
Boot files: /boot/grub/grub.cfg /etc/fstab /etc/default/grub
sda10: _________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files:
sdb1: __________________________________________________________________________
File system:
Boot sector type: -
Boot sector info:
sdb2: __________________________________________________________________________
File system: ntfs
Boot sector type: Windows 8/10/11/2012: NTFS
Boot sector info: According to the info in the boot sector, sdb2 has
3519033343 sectors, but according to the info from
fdisk, it has 7814000639 sectors.
Operating System:
Boot files:
================================ 4 OS detected =================================
OS#1: Manjaro Linux (21.3.7) on sda5
OS#2: Manjaro Linux (22.0.4) on sda9
OS#3: Ubuntu 22.04.1 LTS on sda7
OS#4: Windows 10 or 11 on sda3
================================ Host/Hardware =================================
CPU architecture: 64-bit
Video: GK107M [GeForce GT 740M] 3rd Gen Core processor Graphics Controller from NVIDIA Corporation Intel Corporation
BOOT_IMAGE of the installed session in use:
/boot/vmlinuz-5.19.0-35-generic root=UUID=b28b76e4-88f2-498e-8e74-225e5bf97722 ro quiet splash vt.handoff=7
df -Th / : /dev/sda7 ext4 49G 26G 21G 55% /
===================================== UEFI =====================================
BIOS/UEFI firmware: N76VB.205(4.6) from American Megatrends Inc.
The firmware is EFI-compatible, and is set in EFI-mode for this installed-session.
SecureBoot disabled (confirmed by mokutil).
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0002,0003,0001,0000
Boot0000* Windows Boot Manager HD(1,GPT,a695adab-994b-448c-9a62-c1d4a17b9173,0x109000,0x32000)/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.}...xt...............
Boot0001* Manjaro HD(1,GPT,a695adab-994b-448c-9a62-c1d4a17b9173,0x109000,0x32000)/File(\EFI\Manjaro\grubx64.efi)
Boot0002* ubuntu HD(1,GPT,a695adab-994b-448c-9a62-c1d4a17b9173,0x109000,0x32000)/File(\EFI\ubuntu\shimx64.efi)
Boot0003* ubuntu HD(1,GPT,a695adab-994b-448c-9a62-c1d4a17b9173,0x109000,0x32000)/File(EFI\Ubuntu\grubx64.efi)
============================= Drive/Partition Info =============================
Disks info: ____________________________________________________________________
sda : is-GPT, no-BIOSboot, has---ESP, not-usb, not-mmc, has-os, has-win, 2048 sectors * 512 bytes
sdb : is-GPT, no-BIOSboot, has-noESP, not-usb, not-mmc, no-os, no-wind, 34 sectors * 512 bytes
Partitions info (1/3): _________________________________________________________
sda7 : is-os, 64, apt-get, signed grub-pc grub-efi , grub2, grub-install, grubenv-ok, update-grub, farbios
sdb2 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda4 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda9 : is-os, 64, pacman, no-docgrub, grub2, grub-install, grubenv-ng, update-grub, farbios
sda10 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda5 : is-os, 64, pacman, grub1 , grub2, grub-install, grubenv-ng, update-grub, farbios
sda3 : is-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda1 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, not-far
sda8 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
sda6 : no-os, 64, nopakmgr, no-docgrub, nogrub, nogrubinstall, no-grubenv, noupdategrub, farbios
Partitions info (2/3): _________________________________________________________
sda7 : isnotESP, fstab-has-goodEFI, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sdb2 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda4 : isnotESP, part-has-no-fstab, no-nt, no-winload, recovery-or-hidden, no-bmgr, notwinboot
sda9 : isnotESP, fstab-has-goodEFI, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda10 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda5 : isnotESP, fstab-has-goodEFI, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda3 : isnotESP, part-has-no-fstab, no-nt, haswinload, no-recov-nor-hid, no-bmgr, notwinboot
sda1 : is---ESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda8 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
sda6 : isnotESP, part-has-no-fstab, no-nt, no-winload, no-recov-nor-hid, no-bmgr, notwinboot
Partitions info (3/3): _________________________________________________________
sda7 : not--sepboot, with-boot, fstab-without-boot, not-sep-usr, with--usr, fstab-without-usr, std-grub.d, sda
sdb2 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sdb
sda4 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda9 : not--sepboot, with-boot, fstab-without-boot, not-sep-usr, with--usr, fstab-without-usr, std-grub.d, sda
sda10 : maybesepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda5 : not--sepboot, with-boot, fstab-without-boot, not-sep-usr, with--usr, fstab-without-usr, std-grub.d, sda
sda3 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda1 : not--sepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda8 : maybesepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
sda6 : maybesepboot, no---boot, part-has-no-fstab, not-sep-usr, no---usr, part-has-no-fstab, no--grub.d, sda
fdisk -l (filtered): ___________________________________________________________
Disk sda: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk identifier: 30C45098-9564-4BB9-A5F5-9970C49D230A
Start End Sectors Size Type
sda1 1085440 1290239 204800 100M EFI System
sda2 1290240 1323007 32768 16M Microsoft reserved
sda3 1323008 409377259 408054252 194.6G Microsoft basic data
sda4 409378816 410918911 1540096 752M Windows recovery environment
sda5 1062787072 1170671615 107884544 51.4G Linux filesystem
sda6 1170671616 1384959999 214288384 102.2G Linux filesystem
sda7 1384960000 1487874047 102914048 49.1G Linux filesystem
sda8 1487874048 1714812927 226938880 108.2G Linux filesystem
sda9 1714812928 1819260927 104448000 49.8G Linux filesystem
sda10 1819260928 2000409230 181148303 86.4G Linux filesystem
Disk sdb: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk identifier: 2394BA3C-43A6-45DB-BC00-343023EE6F1C
Start End Sectors Size Type
sdb1 34 32767 32734 16M Microsoft reserved
sdb2 32768 7814033407 7814000640 3.6T Microsoft basic data
parted -lm (filtered): _________________________________________________________
sda:1024GB:scsi:512:512:gpt:ATA Samsung SSD 860:;
1:556MB:661MB:105MB:fat32:EFI System Partition:boot, esp;
2:661MB:677MB:16.8MB::Microsoft reserved partition:msftres;
3:677MB:210GB:209GB:ntfs:Basic data partition:msftdata;
4:210GB:210GB:789MB:ntfs::hidden, diag;
5:544GB:599GB:55.2GB:ext4:kubuntu_system:;
6:599GB:709GB:110GB:ext4:kubuntu_home:;
7:709GB:762GB:52.7GB:ext4:ubuntu_system:;
8:762GB:878GB:116GB:ext4:ubuntu_home:;
9:878GB:931GB:53.5GB:ext4:manjaro_system:;
10:931GB:1024GB:92.7GB:ext4:manjaro_home:;
sdb:4001GB:scsi:512:512:gpt:ATA Samsung SSD 870:;
1:17.4kB:16.8MB:16.8MB::Microsoft reserved partition:msftres;
2:16.8MB:4001GB:4001GB:ntfs:Basic data partition:msftdata;
Free space >10MiB: ______________________________________________________________
sda: 0.02MiB:530MiB:530MiB
sda: 200644MiB:518939MiB:318295MiB
blkid (filtered): ______________________________________________________________
NAME FSTYPE UUID PARTUUID LABEL PARTLABEL
sda
├─sda1 vfat 3741-488E a695adab-994b-448c-9a62-c1d4a17b9173 EFI System Partition
├─sda2 9709d1d8-e2d1-44ec-b341-c7a46bf5fe10 Microsoft reserved partition
├─sda3 ntfs 1E2A742A2A73FCD9 3ef85129-1b76-4769-a16b-2c62d6f1072c Windows_10 Basic data partition
├─sda4 ntfs B2D8D4DBD8D49F43 dd03189d-df24-4481-bcf0-1cb057ae91fc
├─sda5 ext4 5d685766-2079-49ba-aa9e-8b00fb97e73f 64f87aba-625e-4f5f-bcee-6078713d0a1e kubuntu_system
├─sda6 ext4 7d239bac-319f-448d-9879-876099f64cff 38dbc01d-8653-4511-86b4-864d77bd3b9d kubuntu_home
├─sda7 ext4 b28b76e4-88f2-498e-8e74-225e5bf97722 74033568-724b-4824-b258-cac0c9de0bad ubuntu_system ubuntu_system
├─sda8 ext4 1a57718a-014c-45de-a58d-2c75b4c851a2 67968f1e-0c2c-4797-b0bc-198fda536f5c ubuntu_home ubuntu_home
├─sda9 ext4 336a5083-e549-4809-af3d-fcd44a90c2d6 22dafd60-563c-8d4a-b250-7bb754a3cd97 manjaro_system manjaro_system
└─sda10 ext4 247b8948-82f8-4825-8c98-6e7dca12cfcf a4599952-4b52-f244-b727-5c166eb383e6 manjaro_home manjaro_home
sdb
├─sdb1 a402f706-8621-46e9-aa7c-d30b6426ff09 Microsoft reserved partition
└─sdb2 ntfs FA2441DC24419D0F a759c916-e305-4718-bf8a-4727cca8c79b SSD 4 To Basic data partition
Mount points (filtered): _______________________________________________________
Avail Use% Mounted on
/dev/sda10 60.4G 23% /mnt/boot-sav/sda10
/dev/sda3 40.1G 79% /mnt/boot-sav/sda3
/dev/sda4 89.6M 88% /mnt/boot-sav/sda4
/dev/sda5 39G 17% /mnt/boot-sav/sda5
/dev/sda6 94.8G 0% /mnt/boot-sav/sda6
/dev/sda7 20.5G 52% /
/dev/sda8 57.6G 41% /home
/dev/sda9 14.6G 65% /mnt/boot-sav/sda9
/dev/sdb2 2.3T 36% /mnt/boot-sav/sdb2
Mount options (filtered): ______________________________________________________
===================== sda1/efi/fedora/grub.cfg (filtered) ======================
Windows Boot Manager (on sda2) osprober-efi-3741-488E
Manjaro Linux (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.12.1-2-MANJARO x64) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.12.1-2-MANJARO x64 - fallback initramfs) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.10.34-1-MANJARO x64) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Manjaro Linux (Kernel 5.10.34-1-MANJARO x64 - fallback initramfs) (on sda5) 588ed8c3-f5ef-4bb3-86e8-0ddda51f6547
Ubuntu (on sda6) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, avec Linux 5.8.0-50-generic (on sda6) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, avec Linux 5.8.0-43-generic (on sda6) b28b76e4-88f2-498e-8e74-225e5bf97722
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
===================== sda1/efi/ubuntu/grub.cfg (filtered) ======================
search.fs_uuid b28b76e4-88f2-498e-8e74-225e5bf97722 root hd0,gpt7
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
====================== sda5/boot/grub/grub.cfg (filtered) ======================
Manjaro Linux 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel: 5.15.60-1-MANJARO x64) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel: 5.15.60-1-MANJARO x64 - fallback initramfs) gnulinux-5.15.60-1-MANJARO x64-fallback-5d685766-2079-49ba-aa9e-8b00fb97e73f
Windows Boot Manager (sur sda1) osprober-efi-3741-488E
Ubuntu 22.04.1 LTS (22.04) (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.19.0-35-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-67-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Manjaro Linux (22.0.4) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64 - fallback initramfs) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64 - fallback initramfs) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64 - fallback initramfs) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64 - fallback initramfs) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (21.3.7) (sur sda5) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (sur sda5) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (sur sda5) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (sur sda5) (sur sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
========================== sda5/etc/fstab (filtered) ===========================
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=3741-488E /boot/efi vfat umask=0077 0 2
UUID=5d685766-2079-49ba-aa9e-8b00fb97e73f / ext4 defaults,noatime 0 1
UUID=7d239bac-319f-448d-9879-876099f64cff /home ext4 defaults,noatime 0 2
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
======================= sda5/etc/default/grub (filtered) =======================
GRUB_DEFAULT=saved
GRUB_TIMEOUT=-1
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet udev.log_priority=3"
GRUB_CMDLINE_LINUX=""
GRUB_SAVEDEFAULT=true
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=auto
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_OS_PROBER=false
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"
==================== sda5: Location of files loaded by Grub ====================
GiB - GB File Fragment(s)
550.280296326 = 590.858969088 boot/grub/grub.cfg 1
554.666988373 = 595.569143808 boot/vmlinuz-5.15-x86_64 2
539.050498962 = 578.801065984 boot/initramfs-5.15-x86_64-fallback.img 1
539.018550873 = 578.766761984 boot/initramfs-5.15-x86_64.img 2
===================== sda5: ls -l /etc/grub.d/ (filtered) ======================
-rwxr-xr-x 1 root root 13422 Jun 8 2022 10_linux
-rwxr-xr-x 1 root root 13556 Jun 8 2022 20_linux_xen
-rwxr-xr-x 1 root root 12525 Jun 8 2022 30_os-prober
-rwxr-xr-x 1 root root 1372 Jun 8 2022 30_uefi-firmware
-rwxr-xr-x 1 root root 700 Jul 22 2022 35_fwupd
-rwxr-xr-x 1 root root 214 Jun 8 2022 40_custom
-rwxr-xr-x 1 root root 215 Jun 8 2022 41_custom
-rwxr-xr-x 1 root root 25968 Feb 24 2022 41_snapshots-btrfs
-rwxr-xr-x 1 root root 1219 Jun 12 2021 60_memtest86+
====================== sda5/etc/grub.d/41_snapshots-btrfs ======================
#! /usr/bin/env bash
#
# Written by: Antynea
# BTC donation address: 1Lbvz244WA8xbpHek9W2Y12cakM6rDe5Rt
# Github: https://github.com/Antynea/grub-btrfs
#
# Purpose:
# Improves Grub by adding "btrfs snapshots" to the Grub menu.
# You can boot your system on a "snapshot" from the Grub menu.
# Supports manual snapshots, snapper, timeshift ...
# Warning : booting on read-only snapshots can be tricky.
# (Read about it, https://github.com/Antynea/grub-btrfs#warning-booting-on-read-only-snapshots-can-be-tricky)
#
# What this script does:
# - Automatically List snapshots existing on root partition (btrfs).
# - Automatically Detect if "/boot" is in separate partition.
# - Automatically Detect kernel, initramfs and intel/amd microcode in "/boot" directory on snapshots.
# - Automatically Create corresponding "menuentry" in grub.cfg.
# - Automatically detect the type/tags and descriptions/comments of snapper/timeshift snapshots.
# - Automatically generate grub.cfg if you use the provided systemd service.
#
# Installation:
# - Refer to https://github.com/Antynea/grub-btrfs#installation-
#
# Customization:
# You have the possibility to modify many parameters in /etc/default/grub-btrfs/config.
#
# Automatically update Grub
# If you would like grub-btrfs menu to automatically update when a snapshot is created or deleted:
# - Refer to https://github.com/Antynea/grub-btrfs#automatically-update-grub.
#
# Special thanks for assistance and contributions:
# - My friends
# - All contributors on Github
#
set -e
sysconfdir="/etc"
grub_btrfs_config="${sysconfdir}/default/grub-btrfs/config"
[[ -f "$grub_btrfs_config" ]] && . "$grub_btrfs_config"
[[ -f "${sysconfdir}/default/grub" ]] && . "${sysconfdir}/default/grub"
## Exit the script, if:
[[ "${GRUB_BTRFS_DISABLE,,}" == "true" ]] && exit 0 # Disable Grub-btrfs is set to true (default=false)
if ! type btrfs >/dev/null 2>&1; then exit 0; fi # btrfs-progs isn't installed
[[ -f "${GRUB_BTRFS_MKCONFIG_LIB:-/usr/share/grub/grub-mkconfig_lib}" ]] && . "${GRUB_BTRFS_MKCONFIG_LIB:-/usr/share/grub/grub-mkconfig_lib}" || exit 0 # grub-mkconfig_lib couldn't be found
# Root filesystem isn't btrfs
root_fs=$(${grub_probe} --target="fs" / 2>/dev/null)
[[ "$root_fs" != "btrfs" ]] && exit 0
## Error Handling
print_error()
{
local err_msg="$*"
local bug_report="If you think an error has occurred , please file a bug report at \" https://github.com/Antynea/grub-btrfs \""
printf "%s\n" "${err_msg}" "${bug_report}" >&2 ;
exit 0
}
printf "Detecting snapshots ...\n" >&2 ;
## Submenu name
distro=$(awk -F "=" '/^NAME=/ {gsub(/"/, "", $2); print $2}' /etc/os-release)
submenuname=${GRUB_BTRFS_SUBMENUNAME:-"${distro:-Linux} snapshots"}
## Limit snapshots to show in the Grub menu (default=50)
limit_snap_show="${GRUB_BTRFS_LIMIT:-50}"
## How to sort snapshots list
btrfs_subvolume_sort="--sort=${GRUB_BTRFS_SUBVOLUME_SORT:-"-rootid"}"
## Customize GRUB directory, where "grub.cfg" file is saved
grub_directory=${GRUB_BTRFS_GRUB_DIRNAME:-"/boot/grub"}
## Customize BOOT directory, where kernels/initrams/microcode is saved.
boot_directory=${GRUB_BTRFS_BOOT_DIRNAME:-"/boot"}
## Password protection management for submenu
# Protection support for submenu (--unrestricted)
case "${GRUB_BTRFS_DISABLE_PROTECTION_SUBMENU,,}" in
true) unrestricted_access_submenu="--unrestricted ";;
*) unrestricted_access_submenu=""
esac
# Authorized users (--users foo,bar)
if [ -n "${GRUB_BTRFS_PROTECTION_AUTHORIZED_USERS}" ] ; then
protection_authorized_users="--users ${GRUB_BTRFS_PROTECTION_AUTHORIZED_USERS} "
fi
## Probe informations of Root and Boot devices
# Probe info "Root partition"
root_device=$(${grub_probe} --target=device /) # Root device
root_uuid=$(${grub_probe} --device ${root_device} --target="fs_uuid" 2>/dev/null) # UUID of the root device
root_uuid_subvolume=$(btrfs subvolume show / 2>/dev/null) || print_error "UUID of the root subvolume is not available"; # If UUID of root subvolume is not available, then exit
root_uuid_subvolume=$(awk -F":" 'match($1, /(^[ \t]+UUID)/) {sub(/^[ \t]+/, "", $2); print $2}' <<< "$root_uuid_subvolume") # UUID of the root subvolume
# Probe info "Boot partition"
boot_device=$(${grub_probe} --target=device ${boot_directory}) # Boot device
boot_uuid=$(${grub_probe} --device ${boot_device} --target="fs_uuid" 2>/dev/null) # UUID of the boot device
boot_uuid_subvolume=$(btrfs subvolume show "$boot_directory" 2>/dev/null) || boot_uuid_subvolume=" UUID: $root_uuid_subvolume"; # If boot folder isn't a subvolume, then UUID=root_uuid_subvolume
boot_uuid_subvolume=$(awk -F":" 'match($1, /(^[ \t]+UUID)/) {sub(/^[ \t]+/, "", $2); print $2}' <<< "$boot_uuid_subvolume") # UUID of the boot subvolume
boot_hs=$(${grub_probe} --device ${boot_device} --target="hints_string" 2>/dev/null) # hints string
boot_fs=$(${grub_probe} --device ${boot_device} --target="fs" 2>/dev/null) # Type filesystem of boot device
## Parameters passed to the kernel
kernel_parameters="$GRUB_CMDLINE_LINUX $GRUB_CMDLINE_LINUX_DEFAULT"
## Mount point location
grub_btrfs_mount_point=$(mktemp -dt grub-btrfs.XXXXXXXXXX)
## Class for theme
CLASS="--class snapshots --class gnu-linux --class gnu --class os"
## save IFS
oldIFS=$IFS
## Detect uuid requirement (lvm,btrfs...)
check_uuid_required() {
if [ "x${root_uuid}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
|| ! test -e "/dev/disk/by-uuid/${root_uuid}" \
|| ( test -e "${root_device}" && uses_abstraction "${root_device}" lvm ); then
LINUX_ROOT_DEVICE=${root_device}
else
LINUX_ROOT_DEVICE=UUID=${root_uuid}
fi
}
## Detect rootflags
detect_rootflags()
{
local fstabflags=$(grep -oE '^\s*[^#][[:graph:]]+\s+/\s+btrfs\s+[[:graph:]]+' "${grub_btrfs_mount_point}/${snap_dir_name_trim}/etc/fstab" \
| sed -E 's/^.*[[:space:]]([[:graph:]]+)$/\1/;s/,?subvol(id)?=[^,$]+//g;s/^,//')
rootflags="rootflags=${fstabflags:+$fstabflags,}${GRUB_BTRFS_ROOTFLAGS:+$GRUB_BTRFS_ROOTFLAGS,}"
}
unmount_grub_btrfs_mount_point()
{
if [[ -d "$grub_btrfs_mount_point" ]]; then
local wait=true
local wait_max=0
printf "Unmount %s .." "$grub_btrfs_mount_point" >&2;
while $wait; do
if grep -qs "$grub_btrfs_mount_point" /proc/mounts; then
wait_max=$((1+wait_max))
if umount "$grub_btrfs_mount_point" >/dev/null 2>&1; then
wait=false # umount successful
printf " Success\n" >&2;
elif [[ $wait_max = 10 ]]; then
printf "\nWarning: Unable to unmount %s in %s\n" "$root_device" "$grub_btrfs_mount_point" >&2;
break;
else
printf "." >&2 ; # output to show that the script is alive
sleep 2 # wait 2 seconds before retry
fi
else
wait=false # not mounted
printf " Success\n" >&2;
fi
done
if [[ "$wait" != true ]]; then
if ! rm -d "$grub_btrfs_mount_point" >/dev/null 2>&1; then
printf "Unable to delete %s: Device or ressource is busy\n" "$grub_btrfs_mount_point" >&2;
fi
fi
fi
}
## Create entry
entry()
{
echo "$@" >> "$grub_directory/grub-btrfs.new"
}
## menu entries
make_menu_entries()
{
## \" required for snap,kernels,init,microcode with space in their name
entry "submenu '${title_menu}' {
submenu '${title_submenu}' { echo }"
for k in "${name_kernel[@]}"; do
[[ ! -f "${boot_dir}"/"${k}" ]] && continue;
kversion=${k#*"-"}
for i in "${name_initramfs[@]}"; do
if [[ "${name_initramfs}" != "x" ]] ; then
# prefix_i=${i%%"-"*}
suffix_i=${i#*"-"}
# alt_suffix_i=${i##*"-"}
if [ "${kversion}" = "${suffix_i}" ]; then i="${i}";
elif [ "${kversion}.img" = "${suffix_i}" ]; then i="${i}";
elif [ "${kversion}-fallback.img" = "${suffix_i}" ]; then i="${i}";
elif [ "${kversion}.gz" = "${suffix_i}" ]; then i="${i}";
else continue;
fi
for u in "${name_microcode[@]}"; do
if [[ "${name_microcode}" != "x" ]] ; then
entry "
menuentry ' "${k}" & "${i}" & "${u}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
else
entry "
menuentry ' "${k}" & "${i}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
fi
entry "\
if [ x\$feature_all_video_module = xy ]; then
insmod all_video
fi
set gfxpayload=keep
insmod ${boot_fs}
if [ x\$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root ${boot_hs} ${boot_uuid}
else
search --no-floppy --fs-uuid --set=root ${boot_uuid}
fi
echo 'Loading Snapshot: "${snap_date_trim}" "${snap_dir_name_trim}"'
echo 'Loading Kernel: "${k}" ...'
linux \"${boot_dir_root_grub}/"${k}"\" root="${LINUX_ROOT_DEVICE}" ${kernel_parameters} ${rootflags}subvol=\""${snap_dir_name_trim}"\""
if [[ "${name_microcode}" != "x" ]] ; then
entry "\
echo 'Loading Microcode & Initramfs: "${u}" "${i}" ...'
initrd \"${boot_dir_root_grub}/"${u}"\" \"${boot_dir_root_grub}/"${i}"\""
else
entry "\
echo 'Loading Initramfs: "${i}" ...'
initrd \"${boot_dir_root_grub}/"${i}"\""
fi
entry " }"
count_warning_menuentries=$((1+count_warning_menuentries))
done
else
for u in "${name_microcode[@]}"; do
if [[ "${name_microcode}" != "x" ]] ; then
entry "
menuentry ' "${k}" & "${u}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
else
entry "
menuentry ' "${k}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid' {"
fi
entry "\
if [ x\$feature_all_video_module = xy ]; then
insmod all_video
fi
set gfxpayload=keep
insmod ${boot_fs}
if [ x\$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root ${boot_hs} ${boot_uuid}
else
search --no-floppy --fs-uuid --set=root ${boot_uuid}
fi
echo 'Loading Snapshot: "${snap_date_trim}" "${snap_dir_name_trim}"'
echo 'Loading Kernel: "${k}" ...'
linux \"${boot_dir_root_grub}/"${k}"\" root="${LINUX_ROOT_DEVICE}" ${kernel_parameters} ${rootflags}subvol=\""${snap_dir_name_trim}"\""
if [[ "${name_microcode}" != "x" ]] ; then
entry "\
echo 'Loading Microcode: "${u}" ...'
initrd \"${boot_dir_root_grub}/"${u}"\""
fi
entry " }"
count_warning_menuentries=$((1+count_warning_menuentries))
done
fi
done
done
entry "}"
}
## Trim a string from leading and trailing whitespaces
trim() {
local var="$*"
var="${var#"${var%%[![:space:]]*}"}"
var="${var%"${var##*[![:space:]]}"}"
echo -n "$var"
}
## List of snapshots on filesystem
snapshot_list()
{
local snapper_info="info.xml"
local timeshift_info="info.json"
local date_snapshots=()
local path_snapshots=()
local type_snapshots=()
local description_snapshots=()
IFS=$'\n'
for snap in $(btrfs subvolume list -sa "${btrfs_subvolume_sort}" /); do # Parse btrfs snapshots
IFS=$oldIFS
snap=($snap)
local path_snapshot=${snap[@]:13:${#snap[@]}}
if [ "$path_snapshot" = "DELETED" ]; then continue; fi # Discard deleted snapshots
[[ ${path_snapshot%%"/"*} == "<FS_TREE>" ]] && path_snapshot=${path_snapshot#*"/"} # Remove the "<FS_TREE>" string at the beginning of the path
# ignore specific path during run "grub-mkconfig"
if [ -n "${GRUB_BTRFS_IGNORE_SPECIFIC_PATH}" ] ; then
for isp in "${GRUB_BTRFS_IGNORE_SPECIFIC_PATH[@]}" ; do
[[ "${path_snapshot}" == "${isp}" ]] && continue 2;
done
fi
if [ -n "${GRUB_BTRFS_IGNORE_PREFIX_PATH}" ] ; then
for isp in "${GRUB_BTRFS_IGNORE_PREFIX_PATH[@]}" ; do
[[ "${path_snapshot}" == "${isp}"/* ]] && continue 2;
done
fi
[[ ! -d "$grub_btrfs_mount_point/$path_snapshot/boot" ]] && continue; # Discard snapshots without /boot folder
# Parse Snapper & timeshift informations
local type_snapshot="N/A"
local description_snapshot="N/A"
if [[ -s "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$snapper_info" ]] ; then
type_snapshot=$(awk -F"<|>" 'match($2, /^type/) {print $3}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$snapper_info") # search matching string beginning "type"
description_snapshot=$(awk -F"<|>" 'match($2, /^description/) {print $3}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$snapper_info") # search matching string beginning "description"
elif [[ -s "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$timeshift_info" ]] ; then
type_snapshot=$(awk -F" : " 'match($1, /^[ \t]+"tags"/) {gsub(/"|,/,"");print $2}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$timeshift_info") # search matching string beginning "tags"
description_snapshot=$(awk -F" : " 'match($1, /^[ \t]+"comments"/) {gsub(/"|,/,"");print $2}' "$grub_btrfs_mount_point/${path_snapshot%"/"*}/$timeshift_info") # search matching string beginning "comments"
fi
[[ -z "$type_snapshot" ]] && type_snapshot=("N/A")
[[ -z "$description_snapshot" ]] && description_snapshot=("N/A")
# ignore specific {type,tag,description} of snapshot during run "grub-mkconfig"
if [ -n "${GRUB_BTRFS_IGNORE_SNAPSHOT_TYPE}" ] ; then
for ist in "${GRUB_BTRFS_IGNORE_SNAPSHOT_TYPE[@]}" ; do
[[ "${type_snapshot}" == "${ist}" ]] && continue 2;
done
fi
if [ -n "${GRUB_BTRFS_IGNORE_SNAPSHOT_DESCRIPTION}" ] ; then
for isd in "${GRUB_BTRFS_IGNORE_SNAPSHOT_DESCRIPTION[@]}" ; do
[[ "${description_snapshot}" == "${isd}" ]] && continue 2;
done
fi
local date_snapshot="${snap[@]:10:2}"
date_snapshots+=("$date_snapshot")
path_snapshots+=("$path_snapshot")
type_snapshots+=("$type_snapshot")
description_snapshots+=("$description_snapshot")
done
# Find max length of a snapshot date, needed for pretty formatting
local max_date_length=0
for i in "${date_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_date_length" ]] && max_date_length=$length
done
# Find max length of a snapshot name, needed for pretty formatting
local max_path_length=0
for i in "${path_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_path_length" ]] && max_path_length=$length
done
# Find max length of a snapshot type, needed for pretty formatting
local max_type_length=0
for i in "${type_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_type_length" ]] && max_type_length=$length
done
# Find max length of a snapshot description, needed for pretty formatting
local max_description_length=0
for i in "${description_snapshots[@]}"; do
local length="${#i}"
[[ "$length" -gt "$max_description_length" ]] && max_description_length=$length
done
for i in "${!path_snapshots[@]}"; do
printf -v entry "%-${max_date_length}s | %-${max_path_length}s | %-${max_type_length}s | %-${max_description_length}s |" "${date_snapshots[$i]}" "${path_snapshots[$i]}" "${type_snapshots[$i]}" "${description_snapshots[$i]}"
echo "$entry"
done
IFS=$oldIFS
}
## Parse snapshots in snapshot_list
parse_snapshot_list()
{
snap_date=" $(echo "$item" | cut -d'|' -f1)" # column_1, first space is necessary for pretty formatting
snap_date_trim="$(trim "$snap_date")"
snap_dir_name="$(echo "$item" | cut -d'|' -f2)" # column_2
snap_dir_name_trim="$(trim "$snap_dir_name")"
snap_snapshot="$snap_dir_name" # Used by "title_format" function
snap_type="$(echo "$item" | cut -d'|' -f3)" # column_3
snap_description="$(echo "$item" | cut -d'|' -f4)" # column_4
}
## Detect kernels in "boot_directory"
detect_kernel()
{
list_kernel=()
# Original kernel (auto-detect)
for okernel in "${boot_dir}"/vmlinuz-* \
"${boot_dir}"/vmlinux-* \
"${boot_dir}"/kernel-* ; do
[[ ! -f "${okernel}" ]] && continue;
list_kernel+=("$okernel")
done
# Custom name kernel in "GRUB_BTRFS_NKERNEL"
if [ -n "${GRUB_BTRFS_NKERNEL}" ] ; then
for ckernel in "${boot_dir}/${GRUB_BTRFS_NKERNEL[@]}" ; do
[[ ! -f "${ckernel}" ]] && continue;
list_kernel+=("$ckernel")
done
fi
}
## Detect initramfs in "boot_directory"
detect_initramfs()
{
list_initramfs=()
# Original initramfs (auto-detect)
for oinitramfs in "${boot_dir}"/initrd.img-* \
"${boot_dir}"/initramfs-* \
"${boot_dir}"/initrd-* ; do
[[ ! -f "${oinitramfs}" ]] && continue;
list_initramfs+=("$oinitramfs")
done
# Custom name initramfs in "GRUB_BTRFS_NINIT"
if [ -n "${GRUB_BTRFS_NINIT}" ] ; then
for cinitramfs in "${boot_dir}/${GRUB_BTRFS_NINIT[@]}" ; do
[[ ! -f "${cinitramfs}" ]] && continue;
list_initramfs+=("$cinitramfs")
done
fi
if [ -z "${list_initramfs}" ]; then list_initramfs=(x); fi
}
## Detect microcode in "boot_directory"
detect_microcode()
{
list_ucode=()
# Original intel/amd microcode (auto-detect)
# See "https://www.gnu.org/software/grub/manual/grub/html_node/Simple-configuration.html"
for oiucode in "${boot_dir}"/intel-uc.img \
"${boot_dir}"/intel-ucode.img \
"${boot_dir}"/amd-uc.img \
"${boot_dir}"/amd-ucode.img \
"${boot_dir}"/early_ucode.cpio \
"${boot_dir}"/microcode.cpio; do
[[ ! -f "${oiucode}" ]] && continue;
list_ucode+=("$oiucode")
done
# Custom name microcode in "GRUB_BTRFS_CUSTOM_MICROCODE"
if [ -n "${GRUB_BTRFS_CUSTOM_MICROCODE}" ] ; then
for cucode in "${boot_dir}/${GRUB_BTRFS_CUSTOM_MICROCODE[@]}" ; do
[[ ! -f "${cucode}" ]] && continue
list_ucode+=("$cucode")
done
fi
if [ -z "${list_ucode}" ]; then list_ucode=(x); fi
}
## Title format in Grub-menu
declare -A title_column=( [date]=Date [snapshot]=Snapshot [type]=Type [description]=Description ) # Column title that appears in the header
title_format()
{
title_menu="|" # "|" is for visuals only
title_submenu="|" # "|" is for visuals only
[[ -z "${GRUB_BTRFS_TITLE_FORMAT}" ]] && GRUB_BTRFS_TITLE_FORMAT=("date" "snapshot" "type" "description"); # Default parameters
for key in "${!GRUB_BTRFS_TITLE_FORMAT[@]}"; do
[[ ${GRUB_BTRFS_TITLE_FORMAT[$key],,} != "${title_column[${GRUB_BTRFS_TITLE_FORMAT[$key]}],,}" ]] && continue; # User used wrong parameter
declare -n var="snap_${GRUB_BTRFS_TITLE_FORMAT[$key],,}" # $var is a indirect variable
if [[ "${#var}" -lt "${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}" ]]; then # Add extra spaces if length of $var is smaller than the length of column, needed for pretty formatting
printf -v var "%-$(((${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}-${#var})+${#var}))s" "${var}";
fi
title_menu+="${var}|"
title_submenu+=" $(trim "${var}") |"
done
}
# Adds a header to the grub-btrfs.cfg file
header_menu()
{
local header_entry=""
[[ -z "${GRUB_BTRFS_TITLE_FORMAT}" ]] && GRUB_BTRFS_TITLE_FORMAT=("date" "snapshot" "type" "description"); # Default parameters
for key in "${!GRUB_BTRFS_TITLE_FORMAT[@]}"; do
[[ ${GRUB_BTRFS_TITLE_FORMAT[$key],,} != "${title_column[${GRUB_BTRFS_TITLE_FORMAT[$key]}],,}" ]] && continue; # User used wrong parameter
declare -n var="snap_${GRUB_BTRFS_TITLE_FORMAT[$key],,}" # $var is a indirect variable
# Center alignment, needed for pretty formatting
local lenght_title_column_left=$((${#var}-${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}))
((lenght_title_column_left%2)) && lenght_title_column_left=$((lenght_title_column_left+1)); # If the difference is an odd number, add an extra space
lenght_title_column_left=$((((lenght_title_column_left/2)+${#title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]})));
local lenght_title_column_right=$(((${#var}-lenght_title_column_left)+1)) #+1 is necessary for extra "|" character
header_entry+=$(printf "%${lenght_title_column_left}s%${lenght_title_column_right}s" "${title_column[${GRUB_BTRFS_TITLE_FORMAT[$key],,}]}" "|") # Final "|" is for visuals only
done
sed -i "1imenuentry '|${header_entry}' { echo }" "$grub_directory/grub-btrfs.new" # First "|" is for visuals only
}
## List of kernels, initramfs and microcode in snapshots
boot_bounded()
{
# Initialize menu entries
IFS=$'\n'
for item in $(snapshot_list); do
[[ ${limit_snap_show} -le 0 ]] && break; # fix: limit_snap_show=0
IFS=$oldIFS
parse_snapshot_list
boot_dir="$grub_btrfs_mount_point/$snap_dir_name_trim$boot_directory"
detect_kernel
if [ -z "${list_kernel}" ]; then continue; fi
name_kernel=("${list_kernel[@]##*"/"}")
detect_initramfs
name_initramfs=("${list_initramfs[@]##*"/"}")
detect_microcode
name_microcode=("${list_ucode[@]##*"/"}")
detect_rootflags
title_format
boot_dir_root_grub="$(make_system_path_relative_to_its_root "${boot_dir}")" # convert "boot_directory" to root of GRUB (e.g /boot become /)
make_menu_entries
# show snapshot found during run "grub-mkconfig"
if [[ "${GRUB_BTRFS_SHOW_SNAPSHOTS_FOUND:-"true"}" = "true" ]]; then
printf "Found snapshot: %s\n" "$item" >&2 ;
fi
# Limit snapshots found during run "grub-mkconfig"
count_limit_snap=$((1+count_limit_snap))
[[ $count_limit_snap -ge $limit_snap_show ]] && break;
done
IFS=$oldIFS
}
boot_separate()
{
boot_dir="${boot_directory}"
boot_dir_root_grub="$(make_system_path_relative_to_its_root "${boot_dir}")" # convert "boot_directory" to root of GRUB (e.g /boot become /)
detect_kernel
if [ -z "${list_kernel}" ]; then print_error "Kernels not found."; fi
name_kernel=("${list_kernel[@]##*"/"}")
detect_initramfs
name_initramfs=("${list_initramfs[@]##*"/"}")
detect_microcode
name_microcode=("${list_ucode[@]##*"/"}")
# Initialize menu entries
IFS=$'\n'
for item in $(snapshot_list); do
[[ ${limit_snap_show} -le 0 ]] && break; # fix: limit_snap_show=0
IFS=$oldIFS
parse_snapshot_list
detect_rootflags
title_format
make_menu_entries
# show snapshot found during run "grub-mkconfig"
if [[ "${GRUB_BTRFS_SHOW_SNAPSHOTS_FOUND:-"true"}" = "true" ]]; then
printf "Found snapshot: %s\n" "$item" >&2 ;
fi
# Limit snapshots found during run "grub-mkconfig"
count_limit_snap=$((1+count_limit_snap))
[[ $count_limit_snap -ge $limit_snap_show ]] && break;
done
IFS=$oldIFS
}
rm -f "$grub_directory/grub-btrfs.new"
> "$grub_directory/grub-btrfs.new" # Create a "grub-btrfs.new" file in "grub_directory"
# Create mount point then mounting
[[ ! -d $grub_btrfs_mount_point ]] && mkdir -p "$grub_btrfs_mount_point"
mount -o ro,subvolid=5 /dev/disk/by-uuid/"$root_uuid" "$grub_btrfs_mount_point/"
trap "unmount_grub_btrfs_mount_point" EXIT # unmounting mount point on EXIT signal
count_warning_menuentries=0 # Count menuentries
count_limit_snap=0 # Count snapshots
check_uuid_required
# Detects if /boot is a separate partition
[[ "${GRUB_BTRFS_OVERRIDE_BOOT_PARTITION_DETECTION,,}" == "true" ]] && printf "Override boot partition detection : enable \n" >&2 && boot_separate;
if [[ "$root_uuid" != "$boot_uuid" ]] || [[ "$root_uuid_subvolume" != "$boot_uuid_subvolume" ]]; then boot_separate ; else boot_bounded ; fi
# Show warn, menuentries exceeds 250 entries
[[ $count_warning_menuentries -ge 250 ]] && printf "Generated %s total GRUB entries. You might experience issues loading snapshots menu in GRUB.\n" "${count_warning_menuentries}" >&2 ;
# Show total found snapshots
if [[ "${GRUB_BTRFS_SHOW_TOTAL_SNAPSHOTS_FOUND:-"true"}" = "true" && -n "${count_limit_snap}" && "${count_limit_snap}" != "0" ]]; then
printf "Found %s snapshot(s)\n" "${count_limit_snap}" >&2 ;
fi
# if no snapshot found, exit
if [[ "${count_limit_snap}" = "0" || -z "${count_limit_snap}" ]]; then
print_error "No snapshots found."
fi
# Make a submenu in GRUB (grub.cfg) and move "grub-btrfs.new" to "grub-btrfs.cfg"
header_menu
if "${bindir}/${GRUB_BTRFS_SCRIPT_CHECK:-grub-script-check}" "$grub_directory/grub-btrfs.new"; then
cat "$grub_directory/grub-btrfs.new" > "$grub_directory/grub-btrfs.cfg"
rm -f "$grub_directory/grub-btrfs.new"
cat << EOF
submenu '${submenuname}' ${protection_authorized_users}${unrestricted_access_submenu}{
configfile "\${prefix}/grub-btrfs.cfg"
}
EOF
else
print_error "Syntax errors are detected in generated grub-btrfs.cfg file."
fi
====================== sda7/boot/grub/grub.cfg (filtered) ======================
Ubuntu b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.19.0-35-generic b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-67-generic b28b76e4-88f2-498e-8e74-225e5bf97722
Windows Boot Manager (on sda1) osprober-efi-3741-488E
Manjaro Linux (21.3.7) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64) (sur sda9) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64 - fallback initramfs) (sur sda9) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (21.3.7) (sur sda5) (sur sda9) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (sur sda5) (sur sda9) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (sur sda5) (sur sda9) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (sur sda5) (sur sda9) (on sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (22.0.4) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.1.12-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 6.0.19-4-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.94-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.10.167-1-MANJARO x64 - fallback initramfs) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (21.3.7) (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (sur sda5) (on sda9) 336a5083-e549-4809-af3d-fcd44a90c2d6
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
========================== sda7/etc/fstab (filtered) ===========================
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda5 during installation
UUID=b28b76e4-88f2-498e-8e74-225e5bf97722 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda2 during installation
UUID=3741-488E /boot/efi vfat umask=0077 0 1
# /home was on /dev/sda6 during installation
UUID=1a57718a-014c-45de-a58d-2c75b4c851a2 /home ext4 defaults 0 2
/swapfile none swap sw 0 0
======================= sda7/etc/default/grub (filtered) =======================
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_DISABLE_OS_PROBER=false
==================== sda7: Location of files loaded by Grub ====================
GiB - GB File Fragment(s)
670.338851929 = 719.770861568 boot/grub/grub.cfg 1
698.168968201 = 749.653221376 boot/vmlinuz 1
698.168968201 = 749.653221376 boot/vmlinuz-5.15.0-67-generic 1
683.833614349 = 734.260752384 boot/vmlinuz-5.19.0-35-generic 1
683.833614349 = 734.260752384 boot/vmlinuz.old 1
667.170825958 = 716.369219584 boot/initrd.img 2
667.170825958 = 716.369219584 boot/initrd.img-5.15.0-67-generic 2
690.705074310 = 741.638926336 boot/initrd.img-5.19.0-35-generic 8
690.705074310 = 741.638926336 boot/initrd.img.old 8
===================== sda7: ls -l /etc/grub.d/ (filtered) ======================
-rwxr-xr-x 1 root root 18683 Apr 15 2022 10_linux
-rwxr-xr-x 1 root root 43031 Apr 15 2022 10_linux_zfs
-rwxr-xr-x 1 root root 14180 Apr 15 2022 20_linux_xen
-rwxr-xr-x 1 root root 13369 Apr 15 2022 30_os-prober
-rwxr-xr-x 1 root root 1372 Apr 15 2022 30_uefi-firmware
-rwxr-xr-x 1 root root 700 Feb 21 2022 35_fwupd
-rwxr-xr-x 1 root root 214 Jan 13 2021 40_custom
-rwxr-xr-x 1 root root 215 Apr 15 2022 41_custom
====================== sda9/boot/grub/grub.cfg (filtered) ======================
Manjaro Linux 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.1.12-1-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.1.12-1-MANJARO x64 - fallback initramfs) gnulinux-6.1.12-1-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.0.19-4-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 6.0.19-4-MANJARO x64 - fallback initramfs) gnulinux-6.0.19-4-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.15.94-1-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.15.94-1-MANJARO x64 - fallback initramfs) gnulinux-5.15.94-1-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.10.167-1-MANJARO x64) 336a5083-e549-4809-af3d-fcd44a90c2d6
Manjaro Linux (Kernel: 5.10.167-1-MANJARO x64 - fallback initramfs) gnulinux-5.10.167-1-MANJARO x64-fallback-336a5083-e549-4809-af3d-fcd44a90c2d6
Windows Boot Manager (sur sda1) osprober-efi-3741-488E
Manjaro Linux (21.3.7) (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64) (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Manjaro Linux (Kernel 5.15.60-1-MANJARO x64 - fallback initramfs) (sur sda5) 5d685766-2079-49ba-aa9e-8b00fb97e73f
Ubuntu 22.04.1 LTS (22.04) (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.19.0-35-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-67-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
Ubuntu, with Linux 5.15.0-58-generic (sur sda7) b28b76e4-88f2-498e-8e74-225e5bf97722
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###
========================== sda9/etc/fstab (filtered) ===========================
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=336a5083-e549-4809-af3d-fcd44a90c2d6 / ext4 defaults,noatime 0 1
UUID=247b8948-82f8-4825-8c98-6e7dca12cfcf /home ext4 defaults,noatime 0 2
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
UUID=3741-488E /boot/efi vfat defaults 0 1
======================= sda9/etc/default/grub (filtered) =======================
GRUB_DEFAULT=saved
GRUB_TIMEOUT=-1
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet apparmor=1 security=apparmor udev.log_priority=3"
GRUB_CMDLINE_LINUX=""
GRUB_SAVEDEFAULT=true
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=auto
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_OS_PROBER=false
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"
==================== sda9: Location of files loaded by Grub ====================
GiB - GB File Fragment(s)
832.956073761 = 894.379773952 boot/grub/grub.cfg 1
856.003787994 = 919.127068672 boot/vmlinuz-5.10-x86_64 2
851.505146027 = 914.296688640 boot/vmlinuz-5.15-x86_64 2
851.507713318 = 914.299445248 boot/vmlinuz-6.0-x86_64 2
851.522457123 = 914.315276288 boot/vmlinuz-6.1-x86_64 2
851.514556885 = 914.306793472 boot/initramfs-5.10-x86_64-fallback.img 2
851.530269623 = 914.323664896 boot/initramfs-5.10-x86_64.img 2
851.586437225 = 914.383974400 boot/initramfs-5.15-x86_64-fallback.img 2
851.531024933 = 914.324475904 boot/initramfs-5.15-x86_64.img 2
851.639644623 = 914.441105408 boot/initramfs-6.0-x86_64-fallback.img 2
851.600582123 = 914.399162368 boot/initramfs-6.0-x86_64.img 2
851.678707123 = 914.483048448 boot/initramfs-6.1-x86_64-fallback.img 2
851.647457123 = 914.449494016 boot/initramfs-6.1-x86_64.img 2
===================== sda9: ls -l /etc/grub.d/ (filtered) ======================
-rwxr-xr-x 1 root root 13424 Oct 10 17:01 10_linux
-rwxr-xr-x 1 root root 13560 Oct 10 17:01 20_linux_xen
-rwxr-xr-x 1 root root 12525 Oct 10 17:01 30_os-prober
-rwxr-xr-x 1 root root 1372 Oct 10 17:01 30_uefi-firmware
-rwxr-xr-x 1 root root 722 Jan 23 14:41 35_fwupd
-rwxr-xr-x 1 root root 214 Oct 10 17:01 40_custom
-rwxr-xr-x 1 root root 215 Oct 10 17:01 41_custom
-rwxr-xr-x 1 root root 1219 Feb 9 22:50 60_memtest86+
Suggested repair: ______________________________________________________________
The default repair of the Boot-Repair utility would reinstall the grub-efi of
sda7,
using the following options: sda1/boot/efi
Additional repair would be performed: unhide-bootmenu-10s use-standard-efi-file restore-efi-backups
Final advice in case of suggested repair: ______________________________________
Please do not forget to make your UEFI firmware boot on the Ubuntu 22.04.1 LTS entry (sda1/efi/****/grub****.efi (**** will be updated in the final message) file) !
If your computer reboots directly into Windows, try to change the boot order in your UEFI firmware.
If your UEFI firmware does not allow to change the boot order, change the default boot entry of the Windows bootloader.
For example you can boot into Windows, then type the following command in an admin command prompt:
bcdedit /set {bootmgr} path \EFI\****\grub****.efi (**** will be updated in the final message)
Dernière modification par Caille (Le 09/03/2023, à 17:19)
Hors ligne