Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/03/2023, à 12: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). lol
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, à 18:00)

Hors ligne

#2 Le 09/03/2023, à 18: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. lol
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 ? tongue

20230309-161432.jpg

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, à 18:19)

Hors ligne