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.

#51 Le 14/01/2021, à 14:36

Zakhar

Re : {Résolu] Pas de signal vers l'écran

moko138 a écrit :

Le même fil indique le remède (pour les 20.04):

Remove HWE meta packages by running:

sudo apt remove linux-{image,headers}-generic-hwe-20.04
sudo apt install linux-generic

If you also remove the already installed 5.8 kernel packages, it'll stick with the 5.4 kernels. They will get updates (bug fixes and security) till the end of life of the 20.04 release.

Remarque : je crains que la dernière phrase ne soit erronée. Mais, même en ce cas, ça laisse le temps de voir venir.

Tu parles de la phrase qui dit qu'on recevra les "bug fixes and security" sur la 5.4. jusqu'à la fin de vie de la 20.04 ?

Je n'ai pas de boule de cristal jusqu'en avril 2025, mais en tout ces la fait d'appliquer les 2 lignes de commande ci-dessus déclenche bien le noyau "bug fixes and security" 5.4.0.60, sur lequel je tourne actuellement, et qui n'est jamais proposé quand on part dans la branche HWE.

Je serais donc plutôt pour laisser le "bénéfice du doute", oui, on aura bien les MàJ de sécurité (et bugfix) sur la 5.4 jusqu'en 2025 !..


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#52 Le 14/01/2021, à 15:23

moko138

Re : {Résolu] Pas de signal vers l'écran

Zakhar a écrit :

Tu parles de la phrase qui dit qu'on recevra les "bug fixes and security" sur la 5.4. jusqu'à la fin de vie de la 20.04 ?

Exactement. Puisque, dans mon souvenir, c'est le contraire qui était annoncé.

Je serais donc plutôt pour laisser le "bénéfice du doute"

C'est bien ce que j'ai écrit...  smile

Cela dit, Laadna déclare tourner avec 20.10 Kubuntu, et nous attendons l'url de son boot-info.


À propos, Laadna, il y a une troisième voie :
si tu n'as pas une raison impérative d'utiliser la version intermédiaire 20.10, tu peux aussi,
  - sauvegarder tes données,
  - remplacer ta 20.10 par une 20.04.1
  - et enfin, avant toute mise à jour, désactiver le HWE comme l'a signalé Zakhar.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#53 Le 14/01/2021, à 15:27

Laadna

Re : {Résolu] Pas de signal vers l'écran

moko138 a écrit :

Cela dit, Laadna déclare tourner avec 20.10 Kubuntu, et nous attendons l'url de son boot-info

En bas de page précédente (souvent le dernier message d'une page passe inaperçu).

Je peux en effet remettre une installation propre d'une 20.04 LTS. Mais le temps de sauvegarder toutes mes données, jongler entre mes disques durs (j'étais au milieu d'une récupération d'un NAS, j'ai plus beaucoup de place disponible et c'est réparti sur trois disques usb) et de réinstaller tous les logiciels dont j'ai besoin ensuite... Franchement j'aimerais autant m'épargner ça. big_smile

Dernière modification par Laadna (Le 14/01/2021, à 15:28)

Hors ligne

#54 Le 14/01/2021, à 19:59

moko138

Re : {Résolu] Pas de signal vers l'écran

OK !
Donc tu as bien une 20.10 installée en sdb2

Noyaux 5.8.0-36 et 5.8.0-33, et aucun autre.

Ton /etc/default/grub en sdb2 a bien enregistré "nomodeset" (*) et l'activation du bip de grub
Et comme la réparation recommandée inclut :

unhide-bootmenu-10s  use-standard-efi-file 

elle imposera en plus le nécessaire update-grub :
de ce côté, tout va bien.


Dans les onglets de boot-repair, tu devrais même trouver (je crois bien, mais à vérifier) à imposer le démarrage préférentiel sur le noyau 5.8.0-33 :
  peux-tu déjà le vérifier, pendant que je demande du renfort parce que je ne suis pas connaisseur de l'EFI ?
  Merci !


Remarque :
En cas de réinstallation, comme presque toutes tes données sont déjà en réseau ou sur l'autre disque, tu n'aurais pas une grosse quantité de données à sauvegarder (voire rien du tout, mais ça, il n'y a que toi qui peux le savoir).  smile


___
(*) Si le bug n'affecte que le noyau 5.8.0-36, l'option nomodeset ne sera pas utile sur le noyau 0-33.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#55 Le 14/01/2021, à 20:19

Laadna

Re : {Résolu] Pas de signal vers l'écran

Je ne vois pas de quel onglet tu parles.

J'ai lancé boot-info par la commande

sudo boot-info --no-filter

L'interface qui s'affiche est celle-ci :
http://pix.toile-libre.org/upload/origi … 653164.png
http://pix.toile-libre.org/upload/origi … 651963.png

J'ai essayé (à tout hasard, c'est le nom du logiciel que tu cites) :

kubuntu@kubuntu:~$ sudo boot-repair
sudo: boot-repair: command not found

J'ai installé boot-info via la commande

sudo add-apt-repository -y ppa:yannubuntu/boot-repair && sudo apt update && sudo apt install -y  boot-info && boot-info

Citée dans le lien que tu m'as indiqué plus haut.

J'imagine que l'onglet auquel tu fais référence se trouve dans l'interface graphique du logiciel boot-repair mais je ne sais pas comment le lancer.


moko138 a écrit :

En cas de réinstallation, comme presque toutes tes données sont déjà en réseau ou sur l'autre disque, tu n'aurais pas une grosse quantité de données à sauvegarder (voire rien du tout, mais ça, il n'y a que toi qui peux le savoir).  smile

C'est plus compliqué que ça (et pas très important je pense). Sur des linux plus vieux j'avais l'habitude de mettre un / et un /home séparé, justement dans les cas de réinstallation du système. Sur la 20.10 je n'ai pas pu faire ça, je crois que c'est lié à EFI qui demande des partitions spécifiques. Je n'ai jamais réussi, en préparation manuelle au partitionnement, à satisfaire les exigences de l'installateur (et pourtant j'avais demandé de l'aide ici, j'ai eu une réponse très claire qui a très bien fonctionné pour partitionner le portable de ma copine, mais va savoir pourquoi ça n'a pas fonctionné pour le mien). Donc j'ai fini par laisser les options par défaut. Soit une seule partition, / et /home ensemble. Et en effet, j'ai pas trouvé ça super sécurisé comme configuration, mais je me suis dit que si en dix ans j'avais pu me passer de la moindre réinstallation système, ça n'allait pas arriver tout de suite avec cet ordinateur neuf. roll lol

Le deuxième disque a des liens symboliques vers certains dossiers du sous-répertoire /home (musique, download et images), mais l'essentiel de /home se trouve sur sdb2, comme le root. Et comme je suis gros amateur de jeux vidéo, en fait dans /home si on raisonne en volume de données il y a surtout des jeux, leurs sauvegardes et leurs fichiers de configuration. Ça fait une bonne pile de Go à copier (ou d'heures à re-télécharger puis réinstaller). Bref comme ça a l'air bien parti pour que je retrouve l'ensemble, je vais m'épargner cette galère supplémentaire. Quand elle sera réglée et que j'aurai récupéré les données du disque réseau que j'ai scratché par erreur (mais 1 To à passer à la moulinette de photorec ça prend au moins huit hours), je m'attaquerai à l'isolement de /home.

Dernière modification par cqfd93 (Le 15/01/2021, à 15:20)

Hors ligne

#56 Le 14/01/2021, à 20:47

moko138

Re : {Résolu] Pas de signal vers l'écran

J'imagine que l'onglet auquel tu fais référence se trouve dans l'interface graphique du logiciel boot-repair mais je ne sais pas comment le lancer.

Essaie le bouton (à gauche sur tes captures) "Options avancées".

= =

Ton boot-info filtré :

Paste from boot-repair at Thu, 14 Jan 2021 12:32
boot-info-4ppa125                                              [20210114_1232]

============================== Boot Info Summary ===============================

 => No boot loader is installed in the MBR of /dev/sdb.
 => Grub2 (v2.00) is installed in the MBR of /dev/sdc and looks at sector 1 of 
    the same hard drive for core.img. core.img is at this location and looks 
    for (,msdos6)/boot/grub. It also embeds following components:
    
    modules
    ---------------------------------------------------------------------------
    fshelp ext2 part_msdos biosdisk
    ---------------------------------------------------------------------------

sdb1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /efi/BOOT/fbx64.efi /efi/BOOT/mmx64.efi 
                       /efi/ubuntu/grubx64.efi /efi/ubuntu/mmx64.efi 
                       /efi/ubuntu/shimx64.efi /efi/ubuntu/grub.cfg

sdb2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 20.10
    Boot files:        /boot/grub/grub.cfg /etc/fstab /etc/default/grub

sdc1: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        

sda: ___________________________________________________________________________

    File system:       iso9660
    Boot sector type:  Unknown
    Boot sector info: 
    Mounting failed:   mount: /mnt/BootInfo/FD/sda: /dev/sda already mounted or mount point busy.


================================ 1 OS detected =================================

OS#1:   Ubuntu 20.10 on sdb2

============================ Architecture/Host Info ============================

CPU architecture: 64-bit
Live-session OS is Ubuntu 64-bit (Ubuntu 20.04.1 LTS, focal, x86_64)


===================================== UEFI =====================================

BIOS is EFI-compatible, and is setup in EFI-mode for this live-session.
SecureBoot disabled.

efibootmgr -v
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002
Boot0001* UEFI: Generic USB Flash Disk 0.00	PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/USB(6,0)/CDROM(1,0x3cd504,0x7c00)..BO
Boot0002* UEFI: Generic USB Flash Disk 0.00, Partition 2	PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/USB(6,0)/HD(2,MBR,0x7341469f,0x3cd504,0x1f00)..BO

2895d47544fd587b26c7e29be1295c27   sdb1/BOOT/fbx64.efi
dc3c47be2f78a78e5e57d097ae6c5c84   sdb1/BOOT/mmx64.efi
951288adcc81d2d86508f3f18d9753e0   sdb1/ubuntu/grubx64.efi
dc3c47be2f78a78e5e57d097ae6c5c84   sdb1/ubuntu/mmx64.efi
78415fb8fb9b909f8029858113f1335f   sdb1/ubuntu/shimx64.efi
78415fb8fb9b909f8029858113f1335f   sdb1/BOOT/BOOTX64.efi


============================= Drive/Partition Info =============================

Disks info: ____________________________________________________________________

sdb	: is-GPT,	no-BIOSboot,	has---ESP, 	not-usb,	not-mmc, has-os,	2048 sectors * 512 bytes
sdc	: notGPT,	no-BIOSboot,	has-noESP, 	not-usb,	not-mmc, no-os,	2048 sectors * 512 bytes

Partitions info (1/3): _________________________________________________________

sdb1	: no-os,	32, nopakmgr,	no-docgrub,	nogrub,	nogrubinstall,	no-grubenv,	noupdategrub,	not-far
sdb2	: is-os,	64, apt-get,	signed grub-pc grub-efi ,	grub2,	grub-install,	grubenv-ng,	update-grub,	farbios
sdc1	: no-os,	32, nopakmgr,	no-docgrub,	nogrub,	nogrubinstall,	no-grubenv,	noupdategrub,	farbios

Partitions info (2/3): _________________________________________________________

sdb1	: is---ESP,	part-has-no-fstab,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot
sdb2	: isnotESP,	fstab-has-goodEFI,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot
sdc1	: isnotESP,	part-has-no-fstab,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot

Partitions info (3/3): _________________________________________________________

sdb1	: not-sepboot,	no-boot,	part-has-no-fstab,	not-sep-usr,	no---usr,	part-has-no-fstab,	std-grub.d,	sdb
sdb2	: not-sepboot,	with-boot,	fstab-without-boot,	not-sep-usr,	with--usr,	fstab-without-usr,	std-grub.d,	sdb
sdc1	: maybesepboot,	no-boot,	part-has-no-fstab,	not-sep-usr,	no---usr,	part-has-no-fstab,	std-grub.d,	sdc

fdisk -l (filtered): ___________________________________________________________

Disk sda: 3.77 GiB, 4027580416 bytes, 7866368 sectors
Disk identifier: 0x7341469f
      Boot   Start     End Sectors  Size Id Type
sda1  *          0 5031487 5031488  2.4G  0 Empty
sda2       3986692 3994627    7936  3.9M ef EFI (FAT-12/16/32)
sda3       5033984 7866367 2832384  1.4G 83 Linux
Disk sdb: 223.58 GiB, 240057409536 bytes, 468862128 sectors
Disk identifier: A87F0FAF-0D2E-4945-8307-C46DC9C481FC
        Start       End   Sectors   Size Type
sdb1     2048   1050623   1048576   512M EFI System
sdb2  1050624 468860927 467810304 223.1G Linux filesystem
Disk sdc: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk identifier: 0xb3a6592b
      Boot Start       End   Sectors   Size Id Type
sdc1        2048 488390655 488388608 232.9G 83 Linux

parted -lm (filtered): _________________________________________________________

sda:4028MB:scsi:512:512:unknown:Generic USB Flash Disk:;
sdb:240GB:scsi:512:512:gpt:ATA ADATA SU630:;
1:1049kB:538MB:537MB:fat32:EFI System Partition:boot, esp;
2:538MB:240GB:240GB:ext4::;
sdc:250GB:scsi:512:512:msdos:ATA ST3250410AS:;
1:1049kB:250GB:250GB:ext4::;

blkid (filtered): ______________________________________________________________

NAME   FSTYPE   UUID                                 PARTUUID                             LABEL                     PARTLABEL
sda    iso9660  2020-07-31-16-50-07-00                                                    Kubuntu 20.04.1 LTS amd64 
├─sda1 iso9660  2020-07-31-16-50-07-00               7341469f-01                          Kubuntu 20.04.1 LTS amd64 
├─sda2 vfat     C26E-047E                            7341469f-02                                                    
└─sda3 ext4     36e65b85-6611-4f8e-8f51-7e52e5fac808 7341469f-03                          writable                  
sdb                                                                                                                 
├─sdb1 vfat     B5CC-1239                            6569e7c6-d660-400e-94db-12b6eb62e03a                           EFI System Partition
└─sdb2 ext4     38ab177a-41a5-4681-8b7e-9c2a016b08f6 413c4b0b-2e43-4902-ad1c-4878fd709d5d                           
sdc                                                                                                                 
└─sdc1 ext4     817b511f-80e5-4647-9679-1a9a72451739 b3a6592b-01                                                    

df (filtered): _________________________________________________________________

                                                          Avail Use% Mounted on
disk/by-label/writable[/install-logs-2020-01-01.0/crash]   1.2G   1% /var/crash
disk/by-label/writable[/install-logs-2020-01-01.0/log]     1.2G   1% /var/log
sda1                                                          0 100% /cdrom
sdb1                                                     503.2M   2% /mnt/boot-sav/sdb1
sdb2                                                      49.4G  72% /mnt/boot-sav/sdb2
sdc1                                                      89.3G  56% /mnt/boot-sav/sdc1

Mount options: __________________________________________________________________

disk/by-label/writable[/install-logs-2020-01-01.0/crash] rw,relatime
disk/by-label/writable[/install-logs-2020-01-01.0/log]   rw,relatime
sda1                                                     ro,noatime,nojoliet,check=s,map=n,blocksize=2048
sdb1                                                     rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
sdb2                                                     rw,relatime
sdc1                                                     rw,relatime

===================== sdb1/efi/ubuntu/grub.cfg (filtered) ======================

search.fs_uuid 38ab177a-41a5-4681-8b7e-9c2a016b08f6 root hd0,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

====================== sdb2/boot/grub/grub.cfg (filtered) ======================

Ubuntu   38ab177a-41a5-4681-8b7e-9c2a016b08f6
Ubuntu, avec Linux 5.8.0-36-generic   38ab177a-41a5-4681-8b7e-9c2a016b08f6
Ubuntu, avec Linux 5.8.0-33-generic   38ab177a-41a5-4681-8b7e-9c2a016b08f6
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings   uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###

========================== sdb2/etc/fstab (filtered) ===========================

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=B5CC-1239  /boot/efi       vfat    umask=0077      0       1
/swapfile                                 none            swap    sw              0       0
//192.168.1.11/Volume_1	/mnt/NAS	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Images	/home/benoit/Images	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Musique	/home/benoit/Musique	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Videos	/home/benoit/Vidéos	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
UUID=817b511f-80e5-4647-9679-1a9a72451739 /mnt/save	ext4	errors=remount-ro	0	1

======================= sdb2/etc/default/grub (filtered) =======================

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
GRUB_CMDLINE_LINUX=""
GRUB_INIT_TUNE="480 440 1"

==================== sdb2: Location of files loaded by Grub ====================

           GiB - GB             File                                 Fragment(s)
 203,040042877 = 218,012585984  boot/grub/grub.cfg                             2
  73,954097748 = 79,407607808   boot/vmlinuz                                   2
 154,318435669 = 165,698158592  boot/vmlinuz-5.8.0-33-generic                  1
  73,954097748 = 79,407607808   boot/vmlinuz-5.8.0-36-generic                  2
 154,318435669 = 165,698158592  boot/vmlinuz.old                               1
 220,041336060 = 236,267585536  boot/initrd.img                                8
 155,252693176 = 166,701309952  boot/initrd.img-5.8.0-33-generic               1
 220,041336060 = 236,267585536  boot/initrd.img-5.8.0-36-generic               8
 155,252693176 = 166,701309952  boot/initrd.img.old                            1

===================== sdb2: ls -l /etc/grub.d/ (filtered) ======================

-rwxr-xr-x 1 root root 17622 oct.   1 14:59 10_linux
-rwxr-xr-x 1 root root 42359 oct.   1 14:59 10_linux_zfs
-rwxr-xr-x 1 root root 12894 oct.   1 14:59 20_linux_xen
-rwxr-xr-x 1 root root 12059 oct.   1 14:59 30_os-prober
-rwxr-xr-x 1 root root  1424 oct.   1 14:59 30_uefi-firmware
-rwxr-xr-x 1 root root   214 oct.   1 14:59 40_custom
-rwxr-xr-x 1 root root   216 oct.   1 14:59 41_custom


======================== Unknown MBRs/Boot Sectors/etc =========================

Unknown BootLoader on sda

00000000  45 52 08 00 00 00 90 90  00 00 00 00 00 00 00 00  |ER..............|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  33 ed fa 8e d5 bc 00 7c  fb fc 66 31 db 66 31 c9  |3......|..f1.f1.|
00000030  66 53 66 51 06 57 8e dd  8e c5 52 be 00 7c bf 00  |fSfQ.W....R..|..|
00000040  06 b9 00 01 f3 a5 ea 4b  06 00 00 52 b4 41 bb aa  |.......K...R.A..|
00000050  55 31 c9 30 f6 f9 cd 13  72 16 81 fb 55 aa 75 10  |U1.0....r...U.u.|
00000060  83 e1 01 74 0b 66 c7 06  f3 06 b4 42 eb 15 eb 02  |...t.f.....B....|
00000070  31 c9 5a 51 b4 08 cd 13  5b 0f b6 c6 40 50 83 e1  |1.ZQ....[...@P..|
00000080  3f 51 f7 e1 53 52 50 bb  00 7c b9 04 00 66 a1 b0  |?Q..SRP..|...f..|
00000090  07 e8 44 00 0f 82 80 00  66 40 80 c7 02 e2 f2 66  |..D.....f@.....f|
000000a0  81 3e 40 7c fb c0 78 70  75 09 fa bc ec 7b ea 44  |.>@|..xpu....{.D|
000000b0  7c 00 00 e8 83 00 69 73  6f 6c 69 6e 75 78 2e 62  ||.....isolinux.b|
000000c0  69 6e 20 6d 69 73 73 69  6e 67 20 6f 72 20 63 6f  |in missing or co|
000000d0  72 72 75 70 74 2e 0d 0a  66 60 66 31 d2 66 03 06  |rrupt...f`f1.f..|
000000e0  f8 7b 66 13 16 fc 7b 66  52 66 50 06 53 6a 01 6a  |.{f...{fRfP.Sj.j|
000000f0  10 89 e6 66 f7 36 e8 7b  c0 e4 06 88 e1 88 c5 92  |...f.6.{........|
00000100  f6 36 ee 7b 88 c6 08 e1  41 b8 01 02 8a 16 f2 7b  |.6.{....A......{|
00000110  cd 13 8d 64 10 66 61 c3  e8 1e 00 4f 70 65 72 61  |...d.fa....Opera|
00000120  74 69 6e 67 20 73 79 73  74 65 6d 20 6c 6f 61 64  |ting system load|
00000130  20 65 72 72 6f 72 2e 0d  0a 5e ac b4 0e 8a 3e 62  | error...^....>b|
00000140  04 b3 07 cd 10 3c 0a 75  f1 cd 18 f4 eb fd 00 00  |.....<.u........|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  68 45 39 00 00 00 00 00  9f 46 41 73 00 00 80 00  |hE9......FAs....|
000001c0  01 00 00 99 e0 fc 00 00  00 00 40 c6 4c 00 00 fe  |..........@.L...|
000001d0  ff ff ef fe ff ff 04 d5  3c 00 00 1f 00 00 00 59  |........<......Y|
000001e0  61 39 83 a7 7e e9 00 d0  4c 00 00 38 2b 00 00 00  |a9..~...L..8+...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200


=============================== StdErr Messages ================================

File descriptor 63 (pipe:[113468]) leaked on lvs invocation. Parent PID 7607: /bin/bash

Suggested repair: ______________________________________________________________

The default repair of the Boot-Repair utility would purge (in order to sign-grub) and reinstall the grub-efi-amd64-signed of
sdb2,
using the following options:        sdb1/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 20.10 entry (sdb1/efi/****/shim****.efi (**** will be updated in the final message) file) !

%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#57 Le 15/01/2021, à 00:41

Laadna

Re : {Résolu] Pas de signal vers l'écran

En fait la deuxième image montre le contenu des options avancées de boot-info. Mais à mon avis tu parles d'un logiciel différent de boot-info (tu évoques boot-repair).

Sur mon laptop j'ai cette mise à jour de proposée :
http://pix.toile-libre.org/upload/origi … 668414.png
C'est la même que celle qui m'a planté mon ordinateur ?


Sur Toile Libre ou TDCT'Pix, choisir le lien « Insérer la miniature dans un forum : »

           1469894479.png

Dernière modification par cqfd93 (Le 15/01/2021, à 10:54)

Hors ligne

#58 Le 15/01/2021, à 01:14

moko138

Re : {Résolu] Pas de signal vers l'écran

[HS]     Sur le laptop,
Pour l'instant, tu refuses. (Pas la peine de risquer d'avoir ses deux pc hors-service en même temps).
  Note qu'il s'agit d'une 20.04 hwe, pas d'une 20.10.
                         [/HS]

= =

Dans le pc à 20.10, objet de ce fil :
Essaie le bouton (à gauche sur tes captures) "Options avancées". (bis)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#59 Le 15/01/2021, à 01:27

moko138

Re : {Résolu] Pas de signal vers l'écran

Je ne te dis pas de valider aucune réparation, pour l'instant. Je te prie juste d'aller voir.

Et puis on verra bien si tu y trouves un taillis ombreux ou un carrefour bien balisé.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#60 Le 15/01/2021, à 08:58

Laadna

Re : {Résolu] Pas de signal vers l'écran

Voila les options avancées de boot-repair. C'est ce que tu me demandais ?
http://pix.toile-libre.org/upload/origi … 706564.png
http://pix.toile-libre.org/upload/origi … 706599.png
http://pix.toile-libre.org/upload/origi … 706615.png
http://pix.toile-libre.org/upload/origi … 706630.png


Modération - Rappel - Sur Toile Libre ou TDCT'Pix, choisir le lien « Insérer la miniature dans un forum : »

           1469894479.png

Dernière modification par cqfd93 (Le 15/01/2021, à 15:21)

Hors ligne

#61 Le 15/01/2021, à 12:18

moko138

Re : {Résolu] Pas de signal vers l'écran

Oui, c'est exactement çabig_smile


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#62 Le 15/01/2021, à 16:13

Laadna

Re : {Résolu] Pas de signal vers l'écran

moko138 a écrit :

Oui, c'est exactement çabig_smile

moko138 a écrit :

Dans les onglets de boot-repair, tu devrais même trouver (je crois bien, mais à vérifier) à imposer le démarrage préférentiel sur le noyau 5.8.0-33 :
  peux-tu déjà le vérifier, pendant que je demande du renfort parce que je ne suis pas connaisseur de l'EFI ?
  Merci !

Du coup, a priori l'option n'existe pas. Dans "os par défaut au démarrage" je n'ai pas d'autre choix que celui affiché. Est-ce que j'ai un autre choix à effectuer que de cocher ""ajouter une option au noyau > nomodeset" ?

Hors ligne

#63 Le 15/01/2021, à 22:58

moko138

Re : {Résolu] Pas de signal vers l'écran

Est-ce que j'ai un autre choix

Non. (Mais "nomodeset", tu l'as déjjà mis !)

Vas-y, et valide. Puis

1) colle ici l'URL du nouveau rapport ;


2) Éteins ; débranche la clef live ; rallume.
  Si, comme je l'espère, le menu de grub s'affiche, tu choisiras, avec les flèches directionnelles,

Options avancées

puis le noyau antérieur... et raconte.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#64 Le 16/01/2021, à 09:17

Laadna

Re : {Résolu] Pas de signal vers l'écran

Voila le terminal dans lequel j'ai saisi les commandes demandées par boot-repair :

kubuntu@kubuntu:~$ sudo chroot "/mnt/boot-sav/sdb2" dpkg --configure -a
kubuntu@kubuntu:~$ sudo chroot "/mnt/boot-sav/sdb2" apt-get install -fy
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  hplip-data printer-driver-postscript-hp python3-pexpect python3-ptyprocess
  python3-renderpm python3-reportlab python3-reportlab-accel
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
kubuntu@kubuntu:~$ sudo chroot "/mnt/boot-sav/sdb2" apt-get purge -y --allow-remove-essential grub*-common shim-signed
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'grub-common' for glob 'grub*-common'
Note, selecting 'grub2-common' for glob 'grub*-common'
The following packages were automatically installed and are no longer required:
  hplip-data printer-driver-postscript-hp python3-pexpect python3-ptyprocess
  python3-renderpm python3-reportlab python3-reportlab-accel
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  grub-common* grub-efi-amd64-bin* grub-efi-amd64-signed* grub-gfxpayload-lists*
  grub-pc* grub-pc-bin* grub2-common* os-prober* shim-signed*
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  shim-signed grub-efi-amd64-signed (due to shim-signed)
  grub2-common (due to shim-signed)
0 upgraded, 0 newly installed, 9 to remove and 8 not upgraded.
After this operation, 33.7 MB disk space will be freed.
dpkg: warning: overriding problem because --force enabled:
dpkg: warning: this is a protected package; it should not be removed
(Reading database ... 266079 files and directories currently installed.)
Removing shim-signed (1.45+15+1552672080.a4a1fbe-0ubuntu2) ...
Removing grub-efi-amd64-signed (1.155.1+2.04-1ubuntu35.1) ...
Removing grub-efi-amd64-bin (2.04-1ubuntu35.1) ...
Removing os-prober (1.74ubuntu2) ...
Removing grub-pc (2.04-1ubuntu35.1) ...
Removing grub2-common (2.04-1ubuntu35.1) ...
Removing grub-pc-bin (2.04-1ubuntu35.1) ...
Removing grub-common (2.04-1ubuntu35.1) ...
Running in chroot, ignoring request.
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'is-active'
Running in chroot, ignoring command 'stop'
Running in chroot, ignoring command 'stop'
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'daemon-reload'
Removing grub-gfxpayload-lists (0.7) ...
Processing triggers for install-info (6.7.0.dfsg.2-5) ...
install-info: warning: no info dir entry in `/usr/share/info/automake-history.info.gz'
Processing triggers for man-db (2.9.3-2) ...
(Reading database ... 265298 files and directories currently installed.)
Purging configuration files for grub2-common (2.04-1ubuntu35.1) ...
Purging configuration files for shim-signed (1.45+15+1552672080.a4a1fbe-0ubuntu2) ...
Purging configuration files for grub-pc (2.04-1ubuntu35.1) ...
Purging configuration files for grub-common (2.04-1ubuntu35.1) ...
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'daemon-reload'
Processing triggers for systemd (246.6-1ubuntu1) ...
Running in chroot, ignoring command 'daemon-reload'
kubuntu@kubuntu:~$ sudo chroot "/mnt/boot-sav/sdb2" apt-get install -y grub-efi-amd64-signed shim-signed linux-headers-generic
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  hplip-data printer-driver-postscript-hp python3-pexpect python3-ptyprocess
  python3-renderpm python3-reportlab python3-reportlab-accel
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  grub-common grub-efi-amd64 grub-efi-amd64-bin grub2-common linux-generic
  linux-headers-5.8.0-38 linux-headers-5.8.0-38-generic linux-image-5.8.0-38-generic
  linux-image-generic linux-modules-5.8.0-38-generic
  linux-modules-extra-5.8.0-38-generic os-prober
Suggested packages:
  multiboot-doc grub-emu xorriso desktop-base fdutils linux-doc | linux-source-5.8.0
  linux-tools
The following NEW packages will be installed:
  grub-common grub-efi-amd64 grub-efi-amd64-bin grub-efi-amd64-signed grub2-common
  linux-headers-5.8.0-38 linux-headers-5.8.0-38-generic linux-image-5.8.0-38-generic
  linux-modules-5.8.0-38-generic linux-modules-extra-5.8.0-38-generic os-prober
  shim-signed
The following packages will be upgraded:
  linux-generic linux-headers-generic linux-image-generic
3 upgraded, 12 newly installed, 0 to remove and 5 not upgraded.
Need to get 79.3 MB/83.0 MB of archives.
After this operation, 412 MB of additional disk space will be used.
Get:1 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 grub-efi-amd64 amd64 2.04-1ubuntu35.1 [46.7 kB]
Get:2 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-modules-5.8.0-38-generic amd64 5.8.0-38.43 [15.1 MB]
Get:3 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-image-5.8.0-38-generic amd64 5.8.0-38.43 [10.7 MB]
Get:4 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-modules-extra-5.8.0-38-generic amd64 5.8.0-38.43 [40.6 MB]
Get:5 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-generic amd64 5.8.0.38.42 [1,896 B]
Get:6 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-image-generic amd64 5.8.0.38.42 [2,548 B]
Get:7 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-headers-5.8.0-38 all 5.8.0-38.43 [11.3 MB]
Get:8 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-headers-5.8.0-38-generic amd64 5.8.0-38.43 [1,231 kB]
Get:9 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 linux-headers-generic amd64 5.8.0.38.42 [2,444 B]
Get:10 http://fr.archive.ubuntu.com/ubuntu groovy/main amd64 os-prober amd64 1.74ubuntu2 [20.1 kB]
Get:11 http://fr.archive.ubuntu.com/ubuntu groovy/main amd64 shim-signed amd64 1.45+15+1552672080.a4a1fbe-0ubuntu2 [346 kB]
Fetched 79.3 MB in 31s (2,523 kB/s)                                                    
Preconfiguring packages ...
Selecting previously unselected package grub-common.
(Reading database ... 265281 files and directories currently installed.)
Preparing to unpack .../00-grub-common_2.04-1ubuntu35.1_amd64.deb ...
Unpacking grub-common (2.04-1ubuntu35.1) ...
Selecting previously unselected package grub-efi-amd64-bin.
Preparing to unpack .../01-grub-efi-amd64-bin_2.04-1ubuntu35.1_amd64.deb ...
Unpacking grub-efi-amd64-bin (2.04-1ubuntu35.1) ...
Selecting previously unselected package grub2-common.
Preparing to unpack .../02-grub2-common_2.04-1ubuntu35.1_amd64.deb ...
Unpacking grub2-common (2.04-1ubuntu35.1) ...
Selecting previously unselected package grub-efi-amd64.
Preparing to unpack .../03-grub-efi-amd64_2.04-1ubuntu35.1_amd64.deb ...
Unpacking grub-efi-amd64 (2.04-1ubuntu35.1) ...
Selecting previously unselected package grub-efi-amd64-signed.
Preparing to unpack .../04-grub-efi-amd64-signed_1.155.1+2.04-1ubuntu35.1_amd64.deb ...
Unpacking grub-efi-amd64-signed (1.155.1+2.04-1ubuntu35.1) ...
Selecting previously unselected package linux-modules-5.8.0-38-generic.
Preparing to unpack .../05-linux-modules-5.8.0-38-generic_5.8.0-38.43_amd64.deb ...
Unpacking linux-modules-5.8.0-38-generic (5.8.0-38.43) ...
Selecting previously unselected package linux-image-5.8.0-38-generic.
Preparing to unpack .../06-linux-image-5.8.0-38-generic_5.8.0-38.43_amd64.deb ...
Unpacking linux-image-5.8.0-38-generic (5.8.0-38.43) ...
Selecting previously unselected package linux-modules-extra-5.8.0-38-generic.
Preparing to unpack .../07-linux-modules-extra-5.8.0-38-generic_5.8.0-38.43_amd64.deb ...
Unpacking linux-modules-extra-5.8.0-38-generic (5.8.0-38.43) ...
Preparing to unpack .../08-linux-generic_5.8.0.38.42_amd64.deb ...
Unpacking linux-generic (5.8.0.38.42) over (5.8.0.36.40) ...
Preparing to unpack .../09-linux-image-generic_5.8.0.38.42_amd64.deb ...
Unpacking linux-image-generic (5.8.0.38.42) over (5.8.0.36.40) ...
Selecting previously unselected package linux-headers-5.8.0-38.
Preparing to unpack .../10-linux-headers-5.8.0-38_5.8.0-38.43_all.deb ...
Unpacking linux-headers-5.8.0-38 (5.8.0-38.43) ...
Selecting previously unselected package linux-headers-5.8.0-38-generic.
Preparing to unpack .../11-linux-headers-5.8.0-38-generic_5.8.0-38.43_amd64.deb ...
Unpacking linux-headers-5.8.0-38-generic (5.8.0-38.43) ...
Preparing to unpack .../12-linux-headers-generic_5.8.0.38.42_amd64.deb ...
Unpacking linux-headers-generic (5.8.0.38.42) over (5.8.0.36.40) ...
Selecting previously unselected package os-prober.
Preparing to unpack .../13-os-prober_1.74ubuntu2_amd64.deb ...
Unpacking os-prober (1.74ubuntu2) ...
Selecting previously unselected package shim-signed.
Preparing to unpack .../14-shim-signed_1.45+15+1552672080.a4a1fbe-0ubuntu2_amd64.deb ...
Unpacking shim-signed (1.45+15+1552672080.a4a1fbe-0ubuntu2) ...
Setting up linux-modules-5.8.0-38-generic (5.8.0-38.43) ...
Setting up grub-common (2.04-1ubuntu35.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/grub-initrd-fallback.service → /lib/systemd/system/grub-initrd-fallback.service.
Created symlink /etc/systemd/system/rescue.target.wants/grub-initrd-fallback.service → /lib/systemd/system/grub-initrd-fallback.service.
Created symlink /etc/systemd/system/emergency.target.wants/grub-initrd-fallback.service → /lib/systemd/system/grub-initrd-fallback.service.
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'is-active'
Running in chroot, ignoring command 'start'
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring request.
Running in chroot, ignoring command 'daemon-reload'
Running in chroot, ignoring command 'is-active'
Running in chroot, ignoring command 'start'
Setting up os-prober (1.74ubuntu2) ...
Setting up linux-headers-5.8.0-38 (5.8.0-38.43) ...
Setting up linux-image-5.8.0-38-generic (5.8.0-38.43) ...
I: /boot/vmlinuz.old is now a symlink to vmlinuz-5.8.0-36-generic
I: /boot/initrd.img.old is now a symlink to initrd.img-5.8.0-36-generic
I: /boot/vmlinuz is now a symlink to vmlinuz-5.8.0-38-generic
I: /boot/initrd.img is now a symlink to initrd.img-5.8.0-38-generic
Setting up grub-efi-amd64-bin (2.04-1ubuntu35.1) ...
Setting up grub2-common (2.04-1ubuntu35.1) ...
Setting up linux-headers-5.8.0-38-generic (5.8.0-38.43) ...
Setting up linux-modules-extra-5.8.0-38-generic (5.8.0-38.43) ...
Setting up grub-efi-amd64 (2.04-1ubuntu35.1) ...

Creating config file /etc/default/grub with new version
Setting up linux-image-generic (5.8.0.38.42) ...
Setting up grub-efi-amd64-signed (1.155.1+2.04-1ubuntu35.1) ...
Setting up linux-headers-generic (5.8.0.38.42) ...
Setting up shim-signed (1.45+15+1552672080.a4a1fbe-0ubuntu2) ...
Setting up linux-generic (5.8.0.38.42) ...
Processing triggers for man-db (2.9.3-2) ...
Processing triggers for install-info (6.7.0.dfsg.2-5) ...
install-info: warning: no info dir entry in `/usr/share/info/automake-history.info.gz'
Processing triggers for systemd (246.6-1ubuntu1) ...
Running in chroot, ignoring command 'daemon-reload'
Processing triggers for linux-image-5.8.0-38-generic (5.8.0-38.43) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.8.0-38-generic
W: Possible missing firmware /lib/firmware/amdgpu/navi12_gpu_info.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_gpu_info.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_ta.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_ta.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_me.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_pfp.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_ce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/arcturus_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_sdma1.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi10_mes.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/navi12_dmcu.bin for module amdgpu
kubuntu@kubuntu:~$ 

En fin d'opération, après avoir généré le rapport, boot-repair m'indique "an error occured during the repair". J'avoue qu'avec le spam de "possible missing firmware", je m'attendais à ça...

Voila le rapport de boot-repair :

boot-repair-4ppa125                                              [20210116_0905]

============================= Boot Repair Summary ==============================



Default settings: ______________________________________________________________

The default repair of the Boot-Repair utility would purge (in order to sign-grub) and reinstall the grub-efi-amd64-signed of
sdb2,
using the following options:        sdb1/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 20.10 entry (sdb1/efi/****/shim****.efi (**** will be updated in the final message) file) !

User settings: _________________________________________________________________

Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes.
/usr/share/boot-sav/bs-cmd_terminal.sh: line 177: warning: command substitution: ignored null byte in input
The settings chosen by the user will purge (in order to sign-grub) and reinstall the grub-efi-amd64-signed of
sdb2,
using the following options:        sdb1/boot/efi,
Additional repair will be performed: unhide-bootmenu-10s  use-standard-efi-file


/boot/efi added in sdb2/fstab
Mount sdb1 on /mnt/boot-sav/sdb2/boot/efi
chroot /mnt/boot-sav/sdb2 apt-get -y update
Purge the GRUB of sdb2
grub-efi-amd64-signed available

The following packages were automatically installed and are no longer required:
hplip-data printer-driver-postscript-hp python3-pexpect python3-ptyprocess
python3-renderpm python3-reportlab python3-reportlab-accel
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 8 not upgraded.
DEBCHECK debOK, grub-efi-amd64-signed
DEBCHECK debOK
shim-signed available
Please type: sudo chroot "/mnt/boot-sav/sdb2" dpkg --configure -ansudo chroot "/mnt/boot-sav/sdb2" apt-get install -fynsudo chroot "/mnt/boot-sav/sdb2" apt-get purge -y grub*-common shim-signed
GRUB is still present. Please try again.
GRUB is still present. Please try again.
GRUB is still present. Please try again.
shim-signed available
linux-headers-generic available
linux-signed-generic NOT available (apt-cache policy  problem)
Then type: sudo chroot "/mnt/boot-sav/sdb2" apt-get install -y grub-efi-amd64-signed shim-signed linux-headers-generic

Unhide GRUB boot menu in sdb2/etc/default/grub

Reinstall the grub-efi-amd64-signed shim-signed linux-headers-generic of sdb2 =

grub-install --version
grub-install (GRUB) 2.04-1ubuntu35.1

efibootmgr -v from chroot before grub install
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002
Boot0001* UEFI: Generic USB Flash Disk 0.00	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/CDROM(1,0x3cd504,0x7c00)..BO
Boot0002* UEFI: Generic USB Flash Disk 0.00, Partition 2	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/HD(2,MBR,0x7341469f,0x3cd504,0x1f00)..BO

uname -r
5.4.0-42-generic

grub-install --efi-directory=/boot/efi --target=x86_64-efi --uefi-secure-boot
Installing for x86_64-efi platform.
Installation finished. No error reported.
df /dev/sdb1
mv /mnt/boot-sav/sdb2/boot/efi/EFI/Boot/bootx64.efi /mnt/boot-sav/sdb2/boot/efi/EFI/Boot/bkpbootx64.efi
cp /mnt/boot-sav/sdb2/boot/efi/EFI/ubuntu/shimx64.efi /mnt/boot-sav/sdb2/boot/efi/EFI/Boot/bootx64.efi
cp /mnt/boot-sav/sdb2/boot/efi/EFI/ubuntu/grubx64.efi /mnt/boot-sav/sdb2/boot/efi/EFI/Boot/

grub-install --efi-directory=/boot/efi --target=x86_64-efi --uefi-secure-boot
Installing for x86_64-efi platform.
Installation finished. No error reported.

efibootmgr -v from chroot after grub install
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0002
Boot0000* ubuntu	HD(1,GPT,6569e7c6-d660-400e-94db-12b6eb62e03a,0x800,0x100000)/File(EFIubuntushimx64.efi)
Boot0001* UEFI: Generic USB Flash Disk 0.00	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/CDROM(1,0x3cd504,0x7c00)..BO
Boot0002* UEFI: Generic USB Flash Disk 0.00, Partition 2	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/HD(2,MBR,0x7341469f,0x3cd504,0x1f00)..BO

chroot /mnt/boot-sav/sdb2 update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.8.0-38-generic
Found initrd image: /boot/initrd.img-5.8.0-38-generic
Found linux image: /boot/vmlinuz-5.8.0-36-generic
Found initrd image: /boot/initrd.img-5.8.0-36-generic
Found linux image: /boot/vmlinuz-5.8.0-33-generic
Found initrd image: /boot/initrd.img-5.8.0-33-generic
grub-probe: error: cannot find a GRUB drive for /dev/sda1.  Check your device.map.
Adding boot menu entry for UEFI Firmware Settings

Unhide GRUB boot menu in sdb2/boot/grub/grub.cfg

An error occurred during the repair.

You can now reboot your computer.

Please do not forget to make your UEFI firmware boot on the Ubuntu 20.10 entry (sdb1/EFI/ubuntu/shimx64.efi file) !

============================ Boot Info After Repair ============================

 => No boot loader is installed in the MBR of /dev/sdb.
 => Grub2 (v2.00) is installed in the MBR of /dev/sdc and looks at sector 1 of 
    the same hard drive for core.img. core.img is at this location and looks 
    for (,msdos6)/boot/grub. It also embeds following components:
    
    modules
    ---------------------------------------------------------------------------
    fshelp ext2 part_msdos biosdisk
    ---------------------------------------------------------------------------

sdb1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /efi/BOOT/bkpbootx64.efi /efi/BOOT/bootx64.efi 
                       /efi/BOOT/fbx64.efi /efi/BOOT/grubx64.efi 
                       /efi/BOOT/mmx64.efi /efi/ubuntu/grubx64.efi 
                       /efi/ubuntu/mmx64.efi /efi/ubuntu/shimx64.efi 
                       /efi/ubuntu/grub.cfg

sdb2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 20.10
    Boot files:        /boot/grub/grub.cfg /etc/fstab /etc/default/grub

sdc1: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        

sda: ___________________________________________________________________________

    File system:       iso9660
    Boot sector type:  Unknown
    Boot sector info: 
    Mounting failed:   mount: /mnt/BootInfo/FD/sda: /dev/sda already mounted or mount point busy.


================================ 1 OS detected =================================

OS#1:   Ubuntu 20.10 on sdb2

============================ Architecture/Host Info ============================

CPU architecture: 64-bit
Live-session OS is Ubuntu 64-bit (Ubuntu 20.04.1 LTS, focal, x86_64)


===================================== UEFI =====================================

BIOS is EFI-compatible, and is setup in EFI-mode for this live-session.
SecureBoot disabled.

efibootmgr -v
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002
Boot0001* UEFI: Generic USB Flash Disk 0.00	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/CDROM(1,0x3cd504,0x7c00)..BO
Boot0002* UEFI: Generic USB Flash Disk 0.00, Partition 2	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/HD(2,MBR,0x7341469f,0x3cd504,0x1f00)..BO

2895d47544fd587b26c7e29be1295c27   sdb1/BOOT/fbx64.efi
dc3c47be2f78a78e5e57d097ae6c5c84   sdb1/BOOT/mmx64.efi
951288adcc81d2d86508f3f18d9753e0   sdb1/ubuntu/grubx64.efi
dc3c47be2f78a78e5e57d097ae6c5c84   sdb1/ubuntu/mmx64.efi
78415fb8fb9b909f8029858113f1335f   sdb1/ubuntu/shimx64.efi
78415fb8fb9b909f8029858113f1335f   sdb1/BOOT/BOOTX64.efi


============================= Drive/Partition Info =============================

Disks info: ____________________________________________________________________

sdb	: is-GPT,	no-BIOSboot,	has---ESP, 	not-usb,	not-mmc, has-os,	2048 sectors * 512 bytes
sdc	: notGPT,	no-BIOSboot,	has-noESP, 	not-usb,	not-mmc, no-os,	2048 sectors * 512 bytes

Partitions info (1/3): _________________________________________________________

sdb1	: no-os,	32, nopakmgr,	no-docgrub,	nogrub,	nogrubinstall,	no-grubenv,	noupdategrub,	not-far
sdb2	: is-os,	64, apt-get,	signed grub-pc grub-efi ,	grub2,	grub-install,	grubenv-ng,	update-grub,	farbios
sdc1	: no-os,	32, nopakmgr,	no-docgrub,	nogrub,	nogrubinstall,	no-grubenv,	noupdategrub,	farbios

Partitions info (2/3): _________________________________________________________

sdb1	: is---ESP,	part-has-no-fstab,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot
sdb2	: isnotESP,	fstab-has-goodEFI,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot
sdc1	: isnotESP,	part-has-no-fstab,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot

Partitions info (3/3): _________________________________________________________

sdb1	: not-sepboot,	no-boot,	part-has-no-fstab,	not-sep-usr,	no---usr,	part-has-no-fstab,	std-grub.d,	sdb
sdb2	: not-sepboot,	with-boot,	fstab-without-boot,	not-sep-usr,	with--usr,	fstab-without-usr,	std-grub.d,	sdb
sdc1	: maybesepboot,	no-boot,	part-has-no-fstab,	not-sep-usr,	no---usr,	part-has-no-fstab,	std-grub.d,	sdc

fdisk -l (filtered): ___________________________________________________________

Disk sda: 3.77 GiB, 4027580416 bytes, 7866368 sectors
Disk identifier: 0x7341469f
      Boot   Start     End Sectors  Size Id Type
sda1  *          0 5031487 5031488  2.4G  0 Empty
sda2       3986692 3994627    7936  3.9M ef EFI (FAT-12/16/32)
sda3       5033984 7866367 2832384  1.4G 83 Linux
Disk sdb: 223.58 GiB, 240057409536 bytes, 468862128 sectors
Disk identifier: A87F0FAF-0D2E-4945-8307-C46DC9C481FC
        Start       End   Sectors   Size Type
sdb1     2048   1050623   1048576   512M EFI System
sdb2  1050624 468860927 467810304 223.1G Linux filesystem
Disk sdc: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk identifier: 0xb3a6592b
      Boot Start       End   Sectors   Size Id Type
sdc1        2048 488390655 488388608 232.9G 83 Linux

parted -lm (filtered): _________________________________________________________

sda:4028MB:scsi:512:512:unknown:Generic USB Flash Disk:;
sdb:240GB:scsi:512:512:gpt:ATA ADATA SU630:;
1:1049kB:538MB:537MB:fat32:EFI System Partition:boot, esp;
2:538MB:240GB:240GB:ext4::;
sdc:250GB:scsi:512:512:msdos:ATA ST3250410AS:;
1:1049kB:250GB:250GB:ext4::;

blkid (filtered): ______________________________________________________________

NAME   FSTYPE   UUID                                 PARTUUID                             LABEL                     PARTLABEL
sda    iso9660  2020-07-31-16-50-07-00                                                    Kubuntu 20.04.1 LTS amd64 
├─sda1 iso9660  2020-07-31-16-50-07-00               7341469f-01                          Kubuntu 20.04.1 LTS amd64 
├─sda2 vfat     C26E-047E                            7341469f-02                                                    
└─sda3 ext4     36e65b85-6611-4f8e-8f51-7e52e5fac808 7341469f-03                          writable                  
sdb                                                                                                                 
├─sdb1 vfat     B5CC-1239                            6569e7c6-d660-400e-94db-12b6eb62e03a                           EFI System Partition
└─sdb2 ext4     38ab177a-41a5-4681-8b7e-9c2a016b08f6 413c4b0b-2e43-4902-ad1c-4878fd709d5d                           
sdc                                                                                                                 
└─sdc1 ext4     817b511f-80e5-4647-9679-1a9a72451739 b3a6592b-01                                                    

df (filtered): _________________________________________________________________

                                                          Avail Use% Mounted on
disk/by-label/writable[/install-logs-2021-01-16.0/crash]   1.2G   2% /var/crash
disk/by-label/writable[/install-logs-2021-01-16.0/log]     1.2G   2% /var/log
sda1                                                          0 100% /cdrom
sdb1                                                     500.3M   2% /mnt/boot-sav/sdb1
sdb2                                                      48.9G  73% /mnt/boot-sav/sdb2
sdc1                                                      60.3G  68% /mnt/boot-sav/sdc1

Mount options: __________________________________________________________________

disk/by-label/writable[/install-logs-2021-01-16.0/crash] rw,relatime
disk/by-label/writable[/install-logs-2021-01-16.0/log]   rw,relatime
sda1                                                     ro,noatime,nojoliet,check=s,map=n,blocksize=2048
sdb1                                                     rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
sdb2                                                     rw,relatime
sdc1                                                     rw,relatime

===================== sdb1/efi/ubuntu/grub.cfg (filtered) ======================

search.fs_uuid 38ab177a-41a5-4681-8b7e-9c2a016b08f6 root hd1,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

====================== sdb2/boot/grub/grub.cfg (filtered) ======================

Ubuntu   38ab177a-41a5-4681-8b7e-9c2a016b08f6
Ubuntu, with Linux 5.8.0-38-generic   38ab177a-41a5-4681-8b7e-9c2a016b08f6
Ubuntu, with Linux 5.8.0-36-generic   38ab177a-41a5-4681-8b7e-9c2a016b08f6
Ubuntu, with Linux 5.8.0-33-generic   38ab177a-41a5-4681-8b7e-9c2a016b08f6
### END /etc/grub.d/30_os-prober ###
UEFI Firmware Settings   uefi-firmware
### END /etc/grub.d/30_uefi-firmware ###

========================== sdb2/etc/fstab (filtered) ===========================

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
/swapfile                                 none            swap    sw              0       0
//192.168.1.11/Volume_1	/mnt/NAS	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Images	/home/benoit/Images	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Musique	/home/benoit/Musique	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Videos	/home/benoit/Vidéos	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
UUID=817b511f-80e5-4647-9679-1a9a72451739 /mnt/save	ext4	errors=remount-ro	0	1
UUID=B5CC-1239  /boot/efi       vfat    defaults      0       1

======================= sdb2/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=""

==================== sdb2: Location of files loaded by Grub ====================

           GiB - GB             File                                 Fragment(s)
   0.500984192 = 0.537927680    boot/grub/grub.cfg                             1
   4.204097748 = 4.514115584    boot/vmlinuz                                   2
 154.318435669 = 165.698158592  boot/vmlinuz-5.8.0-33-generic                  1
  73.954097748 = 79.407607808   boot/vmlinuz-5.8.0-36-generic                  2
   4.204097748 = 4.514115584    boot/vmlinuz-5.8.0-38-generic                  2
  73.954097748 = 79.407607808   boot/vmlinuz.old                               2
   7.800773621 = 8.376016896    boot/initrd.img                                4
 155.252693176 = 166.701309952  boot/initrd.img-5.8.0-33-generic               1
 220.041336060 = 236.267585536  boot/initrd.img-5.8.0-36-generic               8
   7.800773621 = 8.376016896    boot/initrd.img-5.8.0-38-generic               4
 220.041336060 = 236.267585536  boot/initrd.img.old                            8

===================== sdb2: ls -l /etc/grub.d/ (filtered) ======================

-rwxr-xr-x 1 root root 17622 Nov 13 00:08 10_linux
-rwxr-xr-x 1 root root 42359 Nov 13 00:08 10_linux_zfs
-rwxr-xr-x 1 root root 12894 Nov 13 00:08 20_linux_xen
-rwxr-xr-x 1 root root 12059 Nov 13 00:08 30_os-prober
-rwxr-xr-x 1 root root  1424 Nov 13 00:08 30_uefi-firmware
-rwxr-xr-x 1 root root   214 Nov 13 00:08 40_custom
-rwxr-xr-x 1 root root   216 Nov 13 00:08 41_custom


======================== Unknown MBRs/Boot Sectors/etc =========================

Unknown BootLoader on sda

00000000  45 52 08 00 00 00 90 90  00 00 00 00 00 00 00 00  |ER..............|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  33 ed fa 8e d5 bc 00 7c  fb fc 66 31 db 66 31 c9  |3......|..f1.f1.|
00000030  66 53 66 51 06 57 8e dd  8e c5 52 be 00 7c bf 00  |fSfQ.W....R..|..|
00000040  06 b9 00 01 f3 a5 ea 4b  06 00 00 52 b4 41 bb aa  |.......K...R.A..|
00000050  55 31 c9 30 f6 f9 cd 13  72 16 81 fb 55 aa 75 10  |U1.0....r...U.u.|
00000060  83 e1 01 74 0b 66 c7 06  f3 06 b4 42 eb 15 eb 02  |...t.f.....B....|
00000070  31 c9 5a 51 b4 08 cd 13  5b 0f b6 c6 40 50 83 e1  |1.ZQ....[...@P..|
00000080  3f 51 f7 e1 53 52 50 bb  00 7c b9 04 00 66 a1 b0  |?Q..SRP..|...f..|
00000090  07 e8 44 00 0f 82 80 00  66 40 80 c7 02 e2 f2 66  |..D.....f@.....f|
000000a0  81 3e 40 7c fb c0 78 70  75 09 fa bc ec 7b ea 44  |.>@|..xpu....{.D|
000000b0  7c 00 00 e8 83 00 69 73  6f 6c 69 6e 75 78 2e 62  ||.....isolinux.b|
000000c0  69 6e 20 6d 69 73 73 69  6e 67 20 6f 72 20 63 6f  |in missing or co|
000000d0  72 72 75 70 74 2e 0d 0a  66 60 66 31 d2 66 03 06  |rrupt...f`f1.f..|
000000e0  f8 7b 66 13 16 fc 7b 66  52 66 50 06 53 6a 01 6a  |.{f...{fRfP.Sj.j|
000000f0  10 89 e6 66 f7 36 e8 7b  c0 e4 06 88 e1 88 c5 92  |...f.6.{........|
00000100  f6 36 ee 7b 88 c6 08 e1  41 b8 01 02 8a 16 f2 7b  |.6.{....A......{|
00000110  cd 13 8d 64 10 66 61 c3  e8 1e 00 4f 70 65 72 61  |...d.fa....Opera|
00000120  74 69 6e 67 20 73 79 73  74 65 6d 20 6c 6f 61 64  |ting system load|
00000130  20 65 72 72 6f 72 2e 0d  0a 5e ac b4 0e 8a 3e 62  | error...^....>b|
00000140  04 b3 07 cd 10 3c 0a 75  f1 cd 18 f4 eb fd 00 00  |.....<.u........|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  68 45 39 00 00 00 00 00  9f 46 41 73 00 00 80 00  |hE9......FAs....|
000001c0  01 00 00 99 e0 fc 00 00  00 00 40 c6 4c 00 00 fe  |..........@.L...|
000001d0  ff ff ef fe ff ff 04 d5  3c 00 00 1f 00 00 00 59  |........<......Y|
000001e0  61 39 83 a7 7e e9 00 d0  4c 00 00 38 2b 00 00 00  |a9..~...L..8+...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200


=============================== StdErr Messages ================================

File descriptor 63 (pipe:[140879]) leaked on lvs invocation. Parent PID 30609: /bin/bash

Dans le rapport il y a des instructions. Est-ce qu'elles me concernent, et si oui dois-je m'en occuper avant ou après avoir reboot ?

Et voila le rapport de boot-info :

boot-info-4ppa125                                              [20210116_0922]

============================== Boot Info Summary ===============================

 => No boot loader is installed in the MBR of /dev/sdb.
 => Grub2 (v2.00) is installed in the MBR of /dev/sdc and looks at sector 1 of 
    the same hard drive for core.img. core.img is at this location and looks 
    for (,msdos6)/boot/grub. It also embeds following components:
    
    modules
    ---------------------------------------------------------------------------
    fshelp ext2 part_msdos biosdisk
    ---------------------------------------------------------------------------

sdb1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /efi/BOOT/bkpbootx64.efi /efi/BOOT/bootx64.efi 
                       /efi/BOOT/fbx64.efi /efi/BOOT/grubx64.efi 
                       /efi/BOOT/mmx64.efi /efi/ubuntu/grubx64.efi 
                       /efi/ubuntu/mmx64.efi /efi/ubuntu/shimx64.efi 
                       /efi/ubuntu/grub.cfg

sdb2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 20.10
    Boot files:        /boot/grub/grub.cfg /etc/fstab /etc/default/grub

sdc1: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  
    Boot files:        

sda: ___________________________________________________________________________

    File system:       iso9660
    Boot sector type:  Unknown
    Boot sector info: 
    Mounting failed:   mount: /mnt/BootInfo/FD/sda: /dev/sda already mounted or mount point busy.


================================ 1 OS detected =================================

OS#1:   Ubuntu 20.10 on sdb2

============================ Architecture/Host Info ============================

CPU architecture: 64-bit
Live-session OS is Ubuntu 64-bit (Ubuntu 20.04.1 LTS, focal, x86_64)


===================================== UEFI =====================================

BIOS is EFI-compatible, and is setup in EFI-mode for this live-session.
SecureBoot disabled.

efibootmgr -v
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0000,0001,0002
Boot0001* UEFI: Generic USB Flash Disk 0.00	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/CDROM(1,0x3cd504,0x7c00)..BO
Boot0002* UEFI: Generic USB Flash Disk 0.00, Partition 2	PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(1,0)/HD(2,MBR,0x7341469f,0x3cd504,0x1f00)..BO

78415fb8fb9b909f8029858113f1335f   sdb1/BOOT/bkpbootx64.efi
78415fb8fb9b909f8029858113f1335f   sdb1/BOOT/bootx64.efi
2895d47544fd587b26c7e29be1295c27   sdb1/BOOT/fbx64.efi
951288adcc81d2d86508f3f18d9753e0   sdb1/BOOT/grubx64.efi
dc3c47be2f78a78e5e57d097ae6c5c84   sdb1/BOOT/mmx64.efi
951288adcc81d2d86508f3f18d9753e0   sdb1/ubuntu/grubx64.efi
dc3c47be2f78a78e5e57d097ae6c5c84   sdb1/ubuntu/mmx64.efi
78415fb8fb9b909f8029858113f1335f   sdb1/ubuntu/shimx64.efi


============================= Drive/Partition Info =============================

Disks info: ____________________________________________________________________

sdb	: is-GPT,	no-BIOSboot,	has---ESP, 	not-usb,	not-mmc, has-os,	2048 sectors * 512 bytes
sdc	: notGPT,	no-BIOSboot,	has-noESP, 	not-usb,	not-mmc, no-os,	2048 sectors * 512 bytes

Partitions info (1/3): _________________________________________________________

sdb1	: no-os,	32, nopakmgr,	no-docgrub,	nogrub,	nogrubinstall,	no-grubenv,	noupdategrub,	not-far
sdb2	: is-os,	64, apt-get,	signed grub-efi ,	grub2,	grub-install,	grubenv-ok,	update-grub,	farbios
sdc1	: no-os,	32, nopakmgr,	no-docgrub,	nogrub,	nogrubinstall,	no-grubenv,	noupdategrub,	farbios

Partitions info (2/3): _________________________________________________________

sdb1	: is---ESP,	part-has-no-fstab,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot
sdb2	: isnotESP,	fstab-has-goodEFI,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot
sdc1	: isnotESP,	part-has-no-fstab,	no-nt,	no-winload,	no-recov-nor-hid,	no-bmgr,	notwinboot

Partitions info (3/3): _________________________________________________________

sdb1	: not-sepboot,	no-boot,	part-has-no-fstab,	not-sep-usr,	no---usr,	part-has-no-fstab,	std-grub.d,	sdb
sdb2	: not-sepboot,	with-boot,	fstab-without-boot,	not-sep-usr,	with--usr,	fstab-without-usr,	std-grub.d,	sdb
sdc1	: maybesepboot,	no-boot,	part-has-no-fstab,	not-sep-usr,	no---usr,	part-has-no-fstab,	std-grub.d,	sdc

fdisk -l : ___________________________________________________________

Disk /dev/loop0: 1.71 GiB, 1820860416 bytes, 3556368 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes




Disk /dev/sda: 3.77 GiB, 4027580416 bytes, 7866368 sectors
Disk model: USB Flash Disk  
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7341469f

Device     Boot   Start     End Sectors  Size Id Type
/dev/sda1  *          0 5031487 5031488  2.4G  0 Empty
/dev/sda2       3986692 3994627    7936  3.9M ef EFI (FAT-12/16/32)
/dev/sda3       5033984 7866367 2832384  1.4G 83 Linux


Disk /dev/sdb: 223.58 GiB, 240057409536 bytes, 468862128 sectors
Disk model: ADATA SU630     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A87F0FAF-0D2E-4945-8307-C46DC9C481FC

Device       Start       End   Sectors   Size Type
/dev/sdb1     2048   1050623   1048576   512M EFI System
/dev/sdb2  1050624 468860927 467810304 223.1G Linux filesystem


Disk /dev/sdc: 232.91 GiB, 250059350016 bytes, 488397168 sectors
Disk model: ST3250410AS     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb3a6592b

Device     Boot Start       End   Sectors   Size Id Type
/dev/sdc1        2048 488390655 488388608 232.9G 83 Linux

parted -lm : _________________________________________________________

BYT;
/dev/sda:4028MB:scsi:512:512:unknown:Generic USB Flash Disk:;

BYT;
/dev/sdb:240GB:scsi:512:512:gpt:ATA ADATA SU630:;
1:1049kB:538MB:537MB:fat32:EFI System Partition:boot, esp;
2:538MB:240GB:240GB:ext4::;

BYT;
/dev/sdc:250GB:scsi:512:512:msdos:ATA ST3250410AS:;
1:1049kB:250GB:250GB:ext4::;

blkid : ______________________________________________________________

NAME   FSTYPE   UUID                                 PARTUUID                             LABEL                     PARTLABEL
loop0  squashfs                                                                                                     
sda    iso9660  2020-07-31-16-50-07-00                                                    Kubuntu 20.04.1 LTS amd64 
├─sda1 iso9660  2020-07-31-16-50-07-00               7341469f-01                          Kubuntu 20.04.1 LTS amd64 
├─sda2 vfat     C26E-047E                            7341469f-02                                                    
└─sda3 ext4     36e65b85-6611-4f8e-8f51-7e52e5fac808 7341469f-03                          writable                  
sdb                                                                                                                 
├─sdb1 vfat     B5CC-1239                            6569e7c6-d660-400e-94db-12b6eb62e03a                           EFI System Partition
└─sdb2 ext4     38ab177a-41a5-4681-8b7e-9c2a016b08f6 413c4b0b-2e43-4902-ad1c-4878fd709d5d                           
sdc                                                                                                                 
└─sdc1 ext4     817b511f-80e5-4647-9679-1a9a72451739 b3a6592b-01                                                    
sr0                                                                                                                 

df : _________________________________________________________________

SOURCE                                                         AVAIL USE% TARGET
sysfs                                                              0    - /sys
proc                                                               0    - /proc
udev                                                            7.8G   0% /dev
devpts                                                             0    - /dev/pts
tmpfs                                                           1.6G   1% /run
/dev/sda1                                                          0 100% /cdrom
/dev/loop0                                                         0 100% /rofs
/cow                                                            7.4G   5% /
/dev/disk/by-label/writable[/install-logs-2021-01-16.0/log]     1.2G   2% /var/log
/dev/disk/by-label/writable[/install-logs-2021-01-16.0/crash]   1.2G   2% /var/crash
securityfs                                                         0    - /sys/kernel/security
tmpfs                                                           7.8G   1% /dev/shm
tmpfs                                                             5M   0% /run/lock
tmpfs                                                           7.8G   0% /sys/fs/cgroup
cgroup2                                                            0    - /sys/fs/cgroup/unified
cgroup                                                             0    - /sys/fs/cgroup/systemd
pstore                                                             0    - /sys/fs/pstore
efivarfs                                                           0    - /sys/firmware/efi/efivars
none                                                               0    - /sys/fs/bpf
cgroup                                                             0    - /sys/fs/cgroup/perf_event
cgroup                                                             0    - /sys/fs/cgroup/blkio
cgroup                                                             0    - /sys/fs/cgroup/cpuset
cgroup                                                             0    - /sys/fs/cgroup/memory
cgroup                                                             0    - /sys/fs/cgroup/net_cls,net_prio
cgroup                                                             0    - /sys/fs/cgroup/pids
cgroup                                                             0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                                                             0    - /sys/fs/cgroup/freezer
cgroup                                                             0    - /sys/fs/cgroup/devices
cgroup                                                             0    - /sys/fs/cgroup/hugetlb
cgroup                                                             0    - /sys/fs/cgroup/rdma
systemd-1                                                          0    - /proc/sys/fs/binfmt_misc
mqueue                                                             0    - /dev/mqueue
hugetlbfs                                                          0    - /dev/hugepages
debugfs                                                            0    - /sys/kernel/debug
tracefs                                                            0    - /sys/kernel/tracing
fusectl                                                            0    - /sys/fs/fuse/connections
configfs                                                           0    - /sys/kernel/config
tmpfs                                                           7.8G   0% /tmp
tmpfs                                                           1.6G   0% /run/user/999
binfmt_misc                                                        0    - /proc/sys/fs/binfmt_misc
/dev/sdb1                                                     500.3M   2% /mnt/boot-sav/sdb1
/dev/sdb2                                                      48.9G  73% /mnt/boot-sav/sdb2
/dev/sdc1                                                      60.3G  68% /mnt/boot-sav/sdc1

Mount options: __________________________________________________________________

SOURCE                                                        OPTIONS
sysfs                                                         rw,nosuid,nodev,noexec,relatime
proc                                                          rw,nosuid,nodev,noexec,relatime
udev                                                          rw,nosuid,noexec,relatime,size=8111744k,nr_inodes=2027936,mode=755
devpts                                                        rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000
tmpfs                                                         rw,nosuid,nodev,noexec,relatime,size=1638268k,mode=755
/dev/sda1                                                     ro,noatime,nojoliet,check=s,map=n,blocksize=2048
/dev/loop0                                                    ro,noatime
/cow                                                          rw,relatime,lowerdir=/filesystem.squashfs,upperdir=/cow/upper,workdir=/cow/work
/dev/disk/by-label/writable[/install-logs-2021-01-16.0/log]   rw,relatime
/dev/disk/by-label/writable[/install-logs-2021-01-16.0/crash] rw,relatime
securityfs                                                    rw,nosuid,nodev,noexec,relatime
tmpfs                                                         rw,nosuid,nodev
tmpfs                                                         rw,nosuid,nodev,noexec,relatime,size=5120k
tmpfs                                                         ro,nosuid,nodev,noexec,mode=755
cgroup2                                                       rw,nosuid,nodev,noexec,relatime,nsdelegate
cgroup                                                        rw,nosuid,nodev,noexec,relatime,xattr,name=systemd
pstore                                                        rw,nosuid,nodev,noexec,relatime
efivarfs                                                      rw,nosuid,nodev,noexec,relatime
none                                                          rw,nosuid,nodev,noexec,relatime,mode=700
cgroup                                                        rw,nosuid,nodev,noexec,relatime,perf_event
cgroup                                                        rw,nosuid,nodev,noexec,relatime,blkio
cgroup                                                        rw,nosuid,nodev,noexec,relatime,cpuset
cgroup                                                        rw,nosuid,nodev,noexec,relatime,memory
cgroup                                                        rw,nosuid,nodev,noexec,relatime,net_cls,net_prio
cgroup                                                        rw,nosuid,nodev,noexec,relatime,pids
cgroup                                                        rw,nosuid,nodev,noexec,relatime,cpu,cpuacct
cgroup                                                        rw,nosuid,nodev,noexec,relatime,freezer
cgroup                                                        rw,nosuid,nodev,noexec,relatime,devices
cgroup                                                        rw,nosuid,nodev,noexec,relatime,hugetlb
cgroup                                                        rw,nosuid,nodev,noexec,relatime,rdma
systemd-1                                                     rw,relatime,fd=28,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=18891
mqueue                                                        rw,nosuid,nodev,noexec,relatime
hugetlbfs                                                     rw,relatime,pagesize=2M
debugfs                                                       rw,nosuid,nodev,noexec,relatime
tracefs                                                       rw,nosuid,nodev,noexec,relatime
fusectl                                                       rw,nosuid,nodev,noexec,relatime
configfs                                                      rw,nosuid,nodev,noexec,relatime
tmpfs                                                         rw,nosuid,nodev,relatime
tmpfs                                                         rw,nosuid,nodev,relatime,size=1638268k,mode=700,uid=999,gid=999
binfmt_misc                                                   rw,nosuid,nodev,noexec,relatime
/dev/sdb1                                                     rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro
/dev/sdb2                                                     rw,relatime
/dev/sdc1                                                     rw,relatime

========================== sdb1/efi/ubuntu/grub.cfg  ===========================

search.fs_uuid 38ab177a-41a5-4681-8b7e-9c2a016b08f6 root hd1,gpt2 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

=========================== sdb2/boot/grub/grub.cfg  ===========================

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
if [ "${initrdfail}" = 2 ]; then
   set initrdfail=
elif [ "${initrdfail}" = 1 ]; then
   set next_entry="${prev_entry}"
   set prev_entry=
   save_env prev_entry
   if [ "${next_entry}" ]; then
      set initrdfail=2
   fi
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}
function initrdfail {
    if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
      if [ -z "${initrdfail}" ]; then
        set initrdfail=1
        if [ -n "${boot_once}" ]; then
          set prev_entry="${default}"
          save_env prev_entry
        fi
      fi
      save_env initrdfail
    fi; fi
}
function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
set root='hd1,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
else
  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=10
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=hidden
    set timeout=10
  # Fallback hidden-timeout code in case the timeout_style feature is
  # unavailable.
  elif sleep --interruptible 10 ; then
    set timeout=10
  fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
#set_background_image "images/tile.png";

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 0,0,0; then
  clear
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
	set gfxpayload="${1}"
	if [ "${1}" = "keep" ]; then
		set vt_handoff=vt.handoff=7
	else
		set vt_handoff=
	fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
	recordfail
	load_video
	gfxmode $linux_gfx_mode
	insmod gzio
	if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
	insmod part_gpt
	insmod ext2
	set root='hd1,gpt2'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
	else
	  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
	fi
	linux	/boot/vmlinuz-5.8.0-38-generic root=UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 ro  quiet splash $vt_handoff
	initrd	/boot/initrd.img-5.8.0-38-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
	menuentry 'Ubuntu, with Linux 5.8.0-38-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-38-generic-advanced-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
		recordfail
		load_video
		gfxmode $linux_gfx_mode
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_gpt
		insmod ext2
		set root='hd1,gpt2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
		else
		  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
		fi
		echo	'Loading Linux 5.8.0-38-generic ...'
		linux	/boot/vmlinuz-5.8.0-38-generic root=UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 ro  quiet splash $vt_handoff
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-5.8.0-38-generic
	}
	menuentry 'Ubuntu, with Linux 5.8.0-38-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-38-generic-recovery-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
		recordfail
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_gpt
		insmod ext2
		set root='hd1,gpt2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
		else
		  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
		fi
		echo	'Loading Linux 5.8.0-38-generic ...'
		linux	/boot/vmlinuz-5.8.0-38-generic root=UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 ro recovery nomodeset dis_ucode_ldr 
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-5.8.0-38-generic
	}
	menuentry 'Ubuntu, with Linux 5.8.0-36-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-36-generic-advanced-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
		recordfail
		load_video
		gfxmode $linux_gfx_mode
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_gpt
		insmod ext2
		set root='hd1,gpt2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
		else
		  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
		fi
		echo	'Loading Linux 5.8.0-36-generic ...'
		linux	/boot/vmlinuz-5.8.0-36-generic root=UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 ro  quiet splash $vt_handoff
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-5.8.0-36-generic
	}
	menuentry 'Ubuntu, with Linux 5.8.0-36-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-36-generic-recovery-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
		recordfail
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_gpt
		insmod ext2
		set root='hd1,gpt2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
		else
		  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
		fi
		echo	'Loading Linux 5.8.0-36-generic ...'
		linux	/boot/vmlinuz-5.8.0-36-generic root=UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 ro recovery nomodeset dis_ucode_ldr 
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-5.8.0-36-generic
	}
	menuentry 'Ubuntu, with Linux 5.8.0-33-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-33-generic-advanced-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
		recordfail
		load_video
		gfxmode $linux_gfx_mode
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_gpt
		insmod ext2
		set root='hd1,gpt2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
		else
		  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
		fi
		echo	'Loading Linux 5.8.0-33-generic ...'
		linux	/boot/vmlinuz-5.8.0-33-generic root=UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 ro  quiet splash $vt_handoff
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-5.8.0-33-generic
	}
	menuentry 'Ubuntu, with Linux 5.8.0-33-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.8.0-33-generic-recovery-38ab177a-41a5-4681-8b7e-9c2a016b08f6' {
		recordfail
		load_video
		insmod gzio
		if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
		insmod part_gpt
		insmod ext2
		set root='hd1,gpt2'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  38ab177a-41a5-4681-8b7e-9c2a016b08f6
		else
		  search --no-floppy --fs-uuid --set=root 38ab177a-41a5-4681-8b7e-9c2a016b08f6
		fi
		echo	'Loading Linux 5.8.0-33-generic ...'
		linux	/boot/vmlinuz-5.8.0-33-generic root=UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 ro recovery nomodeset dis_ucode_ldr 
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd.img-5.8.0-33-generic
	}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/10_linux_zfs ###
### END /etc/grub.d/10_linux_zfs ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
	fwsetup
}
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

=============================== sdb2/etc/fstab  ================================

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=38ab177a-41a5-4681-8b7e-9c2a016b08f6 /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
#UUID=B5CC-1239  /boot/efi       vfat    umask=0077      0       1
/swapfile                                 none            swap    sw              0       0
//192.168.1.11/Volume_1	/mnt/NAS	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
#//192.168.1.11/Volume_1/Documents	/home/benoit/Documents	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Images	/home/benoit/Images	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Musique	/home/benoit/Musique	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
//192.168.1.11/Volume_1/Videos	/home/benoit/Vidéos	cifs	user,sec=ntlmv2,guest,uid=1000,_netdev,vers=1.0	0	0
UUID=817b511f-80e5-4647-9679-1a9a72451739 /mnt/save	ext4	errors=remount-ro	0	1
UUID=B5CC-1239  /boot/efi       vfat    defaults      0       1

============================ sdb2/etc/default/grub  ============================

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

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=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

==================== sdb2: Location of files loaded by Grub ====================

           GiB - GB             File                                 Fragment(s)
  88.630382538 = 95.166148608   boot/grub/grub.cfg                             1
   4.204097748 = 4.514115584    boot/vmlinuz                                   2
 154.318435669 = 165.698158592  boot/vmlinuz-5.8.0-33-generic                  1
  73.954097748 = 79.407607808   boot/vmlinuz-5.8.0-36-generic                  2
   4.204097748 = 4.514115584    boot/vmlinuz-5.8.0-38-generic                  2
  73.954097748 = 79.407607808   boot/vmlinuz.old                               2
   7.800773621 = 8.376016896    boot/initrd.img                                4
 155.252693176 = 166.701309952  boot/initrd.img-5.8.0-33-generic               1
 220.041336060 = 236.267585536  boot/initrd.img-5.8.0-36-generic               8
   7.800773621 = 8.376016896    boot/initrd.img-5.8.0-38-generic               4
 220.041336060 = 236.267585536  boot/initrd.img.old                            8

========================== sdb2: ls -l /etc/grub.d/  ===========================

total 128
-rwxr-xr-x 1 root root 10627 Nov 13 00:08 00_header
-rwxr-xr-x 1 root root  6258 Nov 13 00:08 05_debian_theme
-rwxr-xr-x 1 root root 17622 Nov 13 00:08 10_linux
-rwxr-xr-x 1 root root 42359 Nov 13 00:08 10_linux_zfs
-rwxr-xr-x 1 root root 12894 Nov 13 00:08 20_linux_xen
-rwxr-xr-x 1 root root 12059 Nov 13 00:08 30_os-prober
-rwxr-xr-x 1 root root  1424 Nov 13 00:08 30_uefi-firmware
-rwxr-xr-x 1 root root   214 Nov 13 00:08 40_custom
-rwxr-xr-x 1 root root   216 Nov 13 00:08 41_custom
-rw-r--r-- 1 root root   483 Nov 13 00:08 README

========================== sdb2/etc/grub.d/00_header ===========================

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
grub_lang=`echo $LANG | cut -d . -f 1`
grubdir="`echo "/boot/grub" | sed 's,//*,/,g'`"
quick_boot="1"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

. "$pkgdatadir/grub-mkconfig_lib"

# Do this as early as possible, since other commands might depend on it.
# (e.g. the `loadfont' command might need lvm or raid modules)
for i in ${GRUB_PRELOAD_MODULES} ; do
  echo "insmod $i"
done

if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi
if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi
if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi
if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=auto ; fi

if [ "x${GRUB_DEFAULT_BUTTON}" = "x" ] ; then GRUB_DEFAULT_BUTTON="$GRUB_DEFAULT" ; fi
if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_entry}' ; fi
if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi

cat << EOF
if [ -s \$prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
EOF
cat <<EOF
if [ "\${initrdfail}" = 2 ]; then
   set initrdfail=
elif [ "\${initrdfail}" = 1 ]; then
   set next_entry="\${prev_entry}"
   set prev_entry=
   save_env prev_entry
   if [ "\${next_entry}" ]; then
      set initrdfail=2
   fi
fi
EOF
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
   set default="${GRUB_DEFAULT_BUTTON}"
elif [ "\${next_entry}" ] ; then
   set default="\${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${GRUB_DEFAULT}"
fi
EOF
else
    cat <<EOF
if [ "\${next_entry}" ] ; then
   set default="\${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${GRUB_DEFAULT}"
fi
EOF
fi
cat <<EOF

if [ x"\${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "\${prev_saved_entry}" ]; then
  set saved_entry="\${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "\${boot_once}" ]; then
    saved_entry="\${chosen}"
    save_env saved_entry
  fi
}
EOF

cat <<"EOF"
function initrdfail {
    if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
      if [ -z "${initrdfail}" ]; then
        set initrdfail=1
        if [ -n "${boot_once}" ]; then
          set prev_entry="${default}"
          save_env prev_entry
        fi
      fi
      save_env initrdfail
    fi; fi
}
EOF

if [ "$quick_boot" = 1 ]; then
    cat <<EOF
function recordfail {
  set recordfail=1
EOF

  check_writable () {
    abstractions="$(grub-probe --target=abstraction "${grubdir}")"
    for abstraction in $abstractions; do
      case "$abstraction" in
        diskfilter | lvm)
          cat <<EOF
  # GRUB lacks write support for $abstraction, so recordfail support is disabled.
EOF
          return 1
          ;;
      esac
    done

    FS="$(grub-probe --target=fs "${grubdir}")"
    case "$FS" in
      btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
	cat <<EOF
  # GRUB lacks write support for $FS, so recordfail support is disabled.
EOF
	return 1
	;;
    esac

    cat <<EOF
  if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
EOF
  }

  if ! check_writable; then
    recordfail_broken=1
  fi

  cat <<EOF
}
EOF
fi

cat <<EOF
function load_video {
EOF
if [ -n "${GRUB_VIDEO_BACKEND}" ]; then
    cat <<EOF
  insmod ${GRUB_VIDEO_BACKEND}
EOF
else
# If all_video.mod isn't available load all modules available
# with versions prior to introduction of all_video.mod
cat <<EOF
  if [ x\$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
EOF
fi
cat <<EOF
}

EOF

serial=0;
gfxterm=0;
for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
    if [ xserial = "x$x" ]; then
	serial=1;
    fi
    if [ xgfxterm = "x$x" ]; then
	gfxterm=1;
    fi
done

if [ "x$serial" = x1 ]; then
    if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
	grub_warn "$(gettext "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used.")"
	GRUB_SERIAL_COMMAND=serial
    fi
    echo "${GRUB_SERIAL_COMMAND}"
fi

if [ "x$gfxterm" = x1 ]; then
    if [ -n "$GRUB_FONT" ] ; then
       # Make the font accessible
       prepare_grub_to_access_device `${grub_probe} --target=device "${GRUB_FONT}"`
    cat << EOF
if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then
EOF
    else
	for dir in "${pkgdatadir}" "`echo '/boot/grub' | sed "s,//*,/,g"`" /usr/share/grub ; do
	    for basename in unicode unifont ascii; do
		path="${dir}/${basename}.pf2"
		if is_path_readable_by_grub "${path}" > /dev/null ; then
		    font_path="${path}"
		else
		    continue
		fi
		break 2
	    done
	done
	if [ -n "${font_path}" ] ; then
    cat << EOF
if [ x\$feature_default_font_path = xy ] ; then
   font=unicode
else
EOF
                # Make the font accessible
		prepare_grub_to_access_device `${grub_probe} --target=device "${font_path}"`
    cat << EOF
    font="`make_system_path_relative_to_its_root "${font_path}"`"
fi

if loadfont \$font ; then
EOF
	    else
    cat << EOF
if loadfont unicode ; then
EOF
	    fi
	fi

    cat << EOF
  set gfxmode=${GRUB_GFXMODE}
  load_video
  insmod gfxterm
EOF

# Gettext variables and module
if [ "x${LANG}" != "xC" ] &&  [ "x${LANG}" != "x" ]; then
  cat << EOF
  set locale_dir=\$prefix/locale
  set lang=${grub_lang}
  insmod gettext
EOF
fi

cat <<EOF
fi
EOF
fi

case x${GRUB_TERMINAL_INPUT} in
  x)
    # Just use the native terminal
  ;;
  x*)
    cat << EOF
terminal_input ${GRUB_TERMINAL_INPUT}
EOF
  ;;
esac

case x${GRUB_TERMINAL_OUTPUT} in
  x)
    # Just use the native terminal
  ;;
  x*)
    cat << EOF
terminal_output ${GRUB_TERMINAL_OUTPUT}
EOF
  ;;
esac

if [ "x$gfxterm" = x1 ]; then
    if [ "x$GRUB_THEME" != x ] && [ -f "$GRUB_THEME" ] \
	&& is_path_readable_by_grub "$GRUB_THEME"; then
	gettext_printf "Found theme: %s\n" "$GRUB_THEME" >&2

	prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_THEME"`
	cat << EOF
insmod gfxmenu
EOF
	themedir="`dirname "$GRUB_THEME"`"
	for x in "$themedir"/*.pf2 "$themedir"/f/*.pf2; do
	    if [ -f "$x" ]; then
		cat << EOF
loadfont (\$root)`make_system_path_relative_to_its_root $x`
EOF
	    fi
	done
	if [ x"`echo "$themedir"/*.jpg`" != x"$themedir/*.jpg" ] || [ x"`echo "$themedir"/*.jpeg`" != x"$themedir/*.jpeg" ]; then
	    cat << EOF
insmod jpeg
EOF
	fi
	if [ x"`echo "$themedir"/*.png`" != x"$themedir/*.png" ]; then
	    cat << EOF
insmod png
EOF
	fi
	if [ x"`echo "$themedir"/*.tga`" != x"$themedir/*.tga" ]; then
	    cat << EOF
insmod tga
EOF
	fi
	    
	cat << EOF
set theme=(\$root)`make_system_path_relative_to_its_root $GRUB_THEME`
export theme
EOF
    elif [ "x$GRUB_BACKGROUND" != x ] && [ -f "$GRUB_BACKGROUND" ] \
	    && is_path_readable_by_grub "$GRUB_BACKGROUND"; then
	gettext_printf "Found background: %s\n" "$GRUB_BACKGROUND" >&2
	case "$GRUB_BACKGROUND" in 
	    *.png)         reader=png ;;
	    *.tga)         reader=tga ;;
	    *.jpg|*.jpeg)  reader=jpeg ;;
	    *)             gettext "Unsupported image format" >&2; echo >&2; exit 1 ;;
	esac
	prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_BACKGROUND"`
	cat << EOF
insmod $reader
background_image -m stretch `make_system_path_relative_to_its_root "$GRUB_BACKGROUND"`
EOF
    fi
fi

make_timeout ()
{
    cat << EOF
if [ "\${recordfail}" = 1 ] ; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
else
EOF
    if [ "x${3}" != "x" ] ; then
	timeout="${2}"
	style="${3}"
    elif [ "x${1}" != "x" ] && \
	 ([ "$quick_boot" = 1 ] || [ "x${1}" != "x0" ]) ; then
	# Handle the deprecated GRUB_HIDDEN_TIMEOUT scheme.
	timeout="${1}"
	if [ "x${2}" != "x0" ] ; then
	    grub_warn "$(gettext "Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.")"
	fi
	if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
	    style="hidden"
	    verbose=
	else
	    style="countdown"
	    verbose=" --verbose"
	fi
    else
	# No hidden timeout, so treat as GRUB_TIMEOUT_STYLE=menu
	timeout="${2}"
	style="menu"
    fi
    cat << EOF
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=${style}
    set timeout=${timeout}
EOF
    if [ "x${style}" = "xmenu" ] ; then
	cat << EOF
  # Fallback normal timeout code in case the timeout_style feature is
  # unavailable.
  else
    set timeout=${timeout}
EOF
    else
	cat << EOF
  # Fallback hidden-timeout code in case the timeout_style feature is
  # unavailable.
  elif sleep${verbose} --interruptible ${timeout} ; then
    set timeout=0
EOF
    fi
    cat << EOF
  fi
fi
EOF
if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if [ \$grub_platform = efi ]; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF
fi
}

if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_STYLE_BUTTON}"
echo else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
echo fi
else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
fi

if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ] && [ "x$GRUB_BUTTON_CMOS_CLEAN" = "xyes" ]; then
    cat <<EOF
cmosclean $GRUB_BUTTON_CMOS_ADDRESS
EOF
fi

# Play an initial tune
if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then
  echo "play ${GRUB_INIT_TUNE}"
fi

if [ "x${GRUB_BADRAM}" != "x" ] ; then
  echo "badram ${GRUB_BADRAM}"
fi

======================= sdb2/etc/grub.d/05_debian_theme ========================

#!/bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2010  Alexander Kurtz <kurtz.alex@googlemail.com>
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

# Include the GRUB helper library for grub-mkconfig.
. /usr/share/grub/grub-mkconfig_lib

# We want to work in /boot/grub/ only.
test -d /boot/grub; cd /boot/grub

# Set the location of a possibly necessary cache file for the background image.
# NOTE: This MUST BE A DOTFILE to avoid confusing it with user-defined images.
BACKGROUND_CACHE=".background_cache"

set_default_theme(){
	case $GRUB_DISTRIBUTOR in
		Tanglu|Ubuntu|Kubuntu)
			# Set a monochromatic theme for Tanglu/Ubuntu.
			echo "${1}set menu_color_normal=white/black"
			echo "${1}set menu_color_highlight=black/light-gray"

			if [ -e /usr/share/plymouth/themes/default.grub ]; then
				sed "s/^/${1}/" /usr/share/plymouth/themes/default.grub
			fi
			# For plymouth backward compatiblity. Can be removed
			# after xenial.
			if [ -e /lib/plymouth/themes/default.grub ]; then
				sed "s/^/${1}/" /lib/plymouth/themes/default.grub
			fi
			;;
		*)
			# Set the traditional Debian blue theme.
			echo "${1}set menu_color_normal=cyan/blue"
			echo "${1}set menu_color_highlight=white/blue"
			;;
	esac
}

module_available(){
	local module
	for module in "${1}.mod" */"${1}.mod"; do
		if [ -f "${module}" ]; then
			return 0
		fi
	done
	return 1
}

set_background_image(){
	# Step #1: Search all available output modes ...
	local output
	for output in ${GRUB_TERMINAL_OUTPUT}; do
		if [ "x$output" = "xgfxterm" ]; then
			break
		fi
	done

	# ... and check if we are able to display a background image at all.
	if ! [ "x${output}" = "xgfxterm" ]; then
		return 1
	fi

	# Step #2: Check if the specified background image exists.
	if ! [ -f "${1}" ]; then
		return 2
	fi

	# Step #3: Search the correct GRUB module for our background image.
	local reader
	case "${1}" in
		*.jpg|*.JPG|*.jpeg|*.JPEG) reader="jpeg";;
		*.png|*.PNG) reader="png";;
		*.tga|*.TGA) reader="tga";;
		*) return 3;; # Unknown image type.
	esac

	# Step #4: Check if the necessary GRUB module is available.
	if ! module_available "${reader}"; then
		return 4
	fi

	# Step #5: Check if GRUB can read the background image directly.
	# If so, we can remove the cache file (if any). Otherwise the backgound
	# image needs to be cached under /boot/grub/.
	if is_path_readable_by_grub "${1}"; then
		rm --force "${BACKGROUND_CACHE}.jpeg" \
			"${BACKGROUND_CACHE}.png" "${BACKGROUND_CACHE}.tga"
	elif cp "${1}" "${BACKGROUND_CACHE}.${reader}"; then
		set -- "${BACKGROUND_CACHE}.${reader}" "${2}" "${3}"
	else
		return 5
	fi

	# Step #6: Prepare GRUB to read the background image.
	if ! prepare_grub_to_access_device "`${grub_probe} --target=device "${1}"`"; then
		return 6
	fi

	# Step #7: Everything went fine, print out a message to stderr ...
	echo "Found background image: ${1}" >&2

	# ... and write our configuration snippet to stdout. Use the colors
	# desktop-base specified. If we're using a user-defined background, use
	# the default colors since we've got no idea how the image looks like.
	# If loading the background image fails, use the default theme.
	echo "insmod ${reader}"
	echo "if background_image `make_system_path_relative_to_its_root "${1}"`; then"
	if [ -n "${2}" ]; then
		echo "  set color_normal=${2}"
	fi
	if [ -n "${3}" ]; then
		echo "  set color_highlight=${3}"
	fi
	if [ -z "${2}" ] && [ -z "${3}" ]; then
		echo "  true"
	fi
	echo "else"
	set_default_theme "  "
	echo "fi"
}

# Earlier versions of grub-pc copied the default background image to /boot/grub
# during postinst. Remove those obsolete images if they haven't been touched by
# the user. They are still available under /usr/share/images/desktop-base/ if
# desktop-base is installed.
while read checksum background; do
	if [ -f "${background}" ] && [ "x`sha1sum "${background}"`" = "x${checksum}  ${background}" ]; then
		echo "Removing old background image: ${background}" >&2
		rm "${background}"
	fi
done <<EOF
648ee65dd0c157a69b019a5372cbcfea4fc754a5  debian-blueish-wallpaper-640x480.png
0431e97a6c661084c59676c4baeeb8c2f602edb8  debian-blueish-wallpaper-640x480.png
968ecf6696c5638cfe80e8e70aba239526270864  debian-blueish-wallpaper-640x480.tga
11143e8c92a073401de0b0fd42d0c052af4ccd9b  moreblue-orbit-grub.png
d00d5e505ab63f2d53fa880bfac447e2d3bb197c  moreblue-orbit-grub.png
f5b12c1009ec0a3b029185f6b66cd0d7e5611019  moreblue-orbit-grub.png
EOF

# Include the configuration of desktop-base if available.
if [ -f "/usr/share/desktop-base/grub_background.sh" ]; then
	. "/usr/share/desktop-base/grub_background.sh"
fi

# First check whether the user has specified a background image explicitly.
# If so, try to use it. Don't try the other possibilities in that case
# (#608263).
if [ -n "${GRUB_BACKGROUND+x}" ]; then
	set_background_image "${GRUB_BACKGROUND}" || set_default_theme
	exit 0
fi

# Next search for pictures the user put into /boot/grub/ and use the first one.
for background in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG *.tga *.TGA; do
	if set_background_image "${background}"; then
		exit 0
	fi
done

# Next try to use the background image and colors specified by desktop-base.
if set_background_image "${WALLPAPER}" "${COLOR_NORMAL}" "${COLOR_HIGHLIGHT}"; then
	exit 0
fi

# If we haven't found a background image yet, use the default from desktop-base.
case $GRUB_DISTRIBUTOR in
	Ubuntu|Kubuntu)
		;;
	Tanglu)
		if set_background_image "/usr/share/images/grub/grub.png"; then
			exit 0
		fi
		;;
	*)
		if set_background_image "/usr/share/images/desktop-base/desktop-grub.png"; then
			exit 0
		fi
		;;
esac

# Finally, if all of the above fails, use the default theme.
set_default_theme

=========================== sdb2/etc/grub.d/10_linux ===========================

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
ubuntu_recovery="1"
quiet_boot="1"
quick_boot="1"
gfxpayload_dynamic="1"
vt_handoff="1"

. "$pkgdatadir/grub-mkconfig_lib"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

CLASS="--class gnu-linux --class gnu --class os"
SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"

if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
  OS=GNU/Linux
else
  case ${GRUB_DISTRIBUTOR} in
    Ubuntu|Kubuntu)
      OS="${GRUB_DISTRIBUTOR}"
      ;;
    *)
      OS="${GRUB_DISTRIBUTOR} GNU/Linux"
      ;;
  esac
  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
fi

# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don't like that.
case ${GRUB_DEVICE} in
  /dev/loop/*|/dev/loop[0-9])
    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
    # We can't cope with devices loop-mounted from files here.
    case ${GRUB_DEVICE} in
      /dev/*) ;;
      *) exit 0 ;;
    esac
  ;;
esac

# Default to disabling partition uuid support to maintian compatibility with
# older kernels.
GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}

# get_dm_field_for_dev /dev/dm-0 uuid -> get the device mapper UUID for /dev/dm-0
# get_dm_field_for_dev /dev/dm-1 name -> get the device mapper name for /dev/dm-1
# etc
get_dm_field_for_dev () {
    dmsetup info -c --noheadings -o $2 $1 2>/dev/null
}

# Is $1 a multipath device?
is_multipath () {
    local dmuuid dmtype
    dmuuid="$(get_dm_field_for_dev $1 uuid)"
    if [ $? -ne 0 ]; then
        # Not a device mapper device -- or dmsetup not installed, and as
        # multipath depends on kpartx which depends on dmsetup, if there is no
        # dmsetup then there are not going to be any multipath devices.
        return 1
    fi
    # A device mapper "uuid" is always <type>-<uuid>. If <type> is of the form
    # part[0-9] then <uuid> is the device the partition is on and we want to
    # look at that instead. A multipath node always has <type> of mpath.
    dmtype="${dmuuid%%-*}"
    if [ "${dmtype#part}" != "$dmtype" ]; then
        dmuuid="${dmuuid#*-}"
        dmtype="${dmuuid%%-*}"
    fi
    if [ "$dmtype" = "mpath" ]; then
        return 0
    else
        return 1
    fi
}

if test -e "${GRUB_DEVICE}" && is_multipath "${GRUB_DEVICE}"; then
    # If / is multipathed, there will be multiple paths to the partition, so
    # using root=UUID= exposes the boot process to udev races. In addition
    # GRUB_DEVICE in this case will be /dev/dm-0 or similar -- better to use a
    # symlink that depends on the multipath name.
    GRUB_DEVICE=/dev/mapper/"$(get_dm_field_for_dev $GRUB_DEVICE name)"
    GRUB_DISABLE_LINUX_UUID=true
fi

# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
# and mounting btrfs requires user space scanning, so force UUID in this case.
if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
    || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
	&& [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
	&& ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
    || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
else
  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi

case x"$GRUB_FS" in
    xbtrfs)
	rootsubvol="`make_system_path_relative_to_its_root /`"
	rootsubvol="${rootsubvol#/}"
	if [ "x${rootsubvol}" != x ]; then
	    GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
	fi;;
    xzfs)
	# We have a more specialized ZFS handler, with multiple system in 10_linux_zfs.
	if [ -e "`dirname $(readlink -f $0)`/10_linux_zfs" ]; then
	  exit 0
	fi
	rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
	bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
	LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
	;;
esac

title_correction_code=

if [ -x /lib/recovery-mode/recovery-menu ]; then
    GRUB_CMDLINE_LINUX_RECOVERY=recovery
else
    GRUB_CMDLINE_LINUX_RECOVERY=single
fi
if [ "$ubuntu_recovery" = 1 ]; then
    GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
fi

if [ "$vt_handoff" = 1 ]; then
  for word in $GRUB_CMDLINE_LINUX_DEFAULT; do
    if [ "$word" = splash ]; then
      GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff"
    fi
  done
fi

if [ x"$GRUB_FORCE_PARTUUID" != x ]; then
   echo "set partuuid=${GRUB_FORCE_PARTUUID}"
fi

linux_entry ()
{
  os="$1"
  version="$2"
  type="$3"
  args="$4"

  if [ -z "$boot_device_id" ]; then
      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
  fi
  if [ x$type != xsimple ] ; then
      case $type in
	  recovery)
	      title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")" ;;
	  init-*)
	      title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "${type#init-}")" ;;
	  *)
	      title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
      esac
      if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
	  replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
	  quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
	  title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
	  grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
      fi
      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
  else
      echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
  fi      
  if [ "$quick_boot" = 1 ]; then
      echo "	recordfail" | sed "s/^/$submenu_indentation/"
  fi
  if [ x$type != xrecovery ] ; then
      save_default_entry | grub_add_tab
  fi

  # Use ELILO's generic "efifb" when it's known to be available.
  # FIXME: We need an interface to select vesafb in case efifb can't be used.
  if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
      echo "	load_video" | sed "s/^/$submenu_indentation/"
  else
      if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
	  echo "	load_video" | sed "s/^/$submenu_indentation/"
      fi
  fi
  if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
     ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
      echo "	gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
  fi

  echo "	insmod gzio" | sed "s/^/$submenu_indentation/"
  echo "	if [ x\$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi" | sed "s/^/$submenu_indentation/"

  if [ x$dirname = x/ ]; then
    if [ -z "${prepare_root_cache}" ]; then
      prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
    fi
    printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/"
  else
    if [ -z "${prepare_boot_cache}" ]; then
      prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
    fi
    printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
  fi
  if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
    message="$(gettext_printf "Loading Linux %s ..." ${version})"
    sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
  fi
  if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
    sed "s/^/$submenu_indentation/" << EOF
	linux	${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
EOF
  else
    # We have initrd and PARTUUID is set - we try to boot without initrd, and fallback to using it
    # if it fails.
    # "panic=-1" means "on panic reboot immediately". "panic=0" disables the reboot behavior.
    if [ x"$GRUB_FORCE_PARTUUID" != x ]; then
        linux_root_device_thisversion="PARTUUID=${GRUB_FORCE_PARTUUID}"
    fi
    message="$(gettext_printf "Loading initial ramdisk ...")"
    initrd_path=
    for i in ${initrd}; do
        initrd_path="${initrd_path} ${rel_dirname}/${i}"
    done
    initrd_path_only_early=
    for i in ${initrd_early}; do
        initrd_path_only_early="${initrd_path_only_early} ${rel_dirname}/${i}"
    done
    if test -n "${initrd}" && [ x"$GRUB_FORCE_PARTUUID" != x ]; then
        sed "s/^/$submenu_indentation/" << EOF
	if [ "\${initrdfail}" = 1 ]; then
	  linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF
        if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
          sed "s/^/$submenu_indentation/" << EOF
	  echo	'$(echo "$message" | grub_quote)'
EOF
        fi
        sed "s/^/$submenu_indentation/" << EOF
	  initrd	$(echo $initrd_path)
	else
	  linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} panic=-1
EOF
        if [ -n "$initrd_path_only_early" ]; then
          sed "s/^/$submenu_indentation/" << EOF
	  initrd	$(echo $initrd_path_only_early)
EOF
        fi
        sed "s/^/$submenu_indentation/" << EOF
	fi
	initrdfail
EOF
    else
    # We don't have initrd or we don't want to set PARTUUID. Don't try initrd-less boot with fallback.
        sed "s/^/$submenu_indentation/" << EOF
	linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF
        if test -n "${initrd}"; then
            # We do have initrd - let's use it at boot.
            # TRANSLATORS: ramdisk isn't identifier. Should be translated.
            if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
              sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
            fi
            sed "s/^/$submenu_indentation/" << EOF
	initrd	$(echo $initrd_path)
EOF
        fi
    fi
    if test -n "${dtb}" ; then
      if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
        message="$(gettext_printf "Loading device tree blob...")"
        sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
      fi
      sed "s/^/$submenu_indentation/" << EOF
	devicetree	${rel_dirname}/${dtb}
EOF
    fi
  fi
  sed "s/^/$submenu_indentation/" << EOF
}
EOF
}

machine=`uname -m`
case "x$machine" in
    xi?86 | xx86_64)
	list=
	for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
	    if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
	done ;;
    *) 
	list=
	for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
                  if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
	done ;;
esac

case "$machine" in
    i?86) GENKERNEL_ARCH="x86" ;;
    mips|mips64) GENKERNEL_ARCH="mips" ;;
    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
    arm*) GENKERNEL_ARCH="arm" ;;
    *) GENKERNEL_ARCH="$machine" ;;
esac

case "$GENKERNEL_ARCH" in
  x86*) GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY dis_ucode_ldr";;
esac

prepare_boot_cache=
prepare_root_cache=
boot_device_id=
title_correction_code=

cat << 'EOF'
function gfxmode {
	set gfxpayload="${1}"
EOF
if [ "$vt_handoff" = 1 ]; then
  cat << 'EOF'
	if [ "${1}" = "keep" ]; then
		set vt_handoff=vt.handoff=7
	else
		set vt_handoff=
	fi
EOF
fi
cat << EOF
}
EOF

# Use ELILO's generic "efifb" when it's known to be available.
# FIXME: We need an interface to select vesafb in case efifb can't be used.
if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then
  echo "set linux_gfx_mode=$GRUB_GFXPAYLOAD_LINUX"
else
  cat << EOF
if [ "\${recordfail}" != 1 ]; then
  if [ -e \${prefix}/gfxblacklist.txt ]; then
    if hwmatch \${prefix}/gfxblacklist.txt 3; then
      if [ \${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
EOF
fi
cat << EOF
export linux_gfx_mode
EOF

# Extra indentation to add to menu entries in a submenu. We're not in a submenu
# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
submenu_indentation=""

is_top_level=true
while [ "x$list" != "x" ] ; do
  linux=`version_find_latest $list`
  case $linux in
    *.efi.signed)
      # We handle these in linux_entry.
      list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
      continue
      ;;
  esac
  gettext_printf "Found linux image: %s\n" "$linux" >&2
  basename=`basename $linux`
  dirname=`dirname $linux`
  rel_dirname=`make_system_path_relative_to_its_root $dirname`
  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
  alt_version=`echo $version | sed -e "s,\.old$,,g"`
  linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"

  initrd_early=
  for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
	   ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
    if test -e "${dirname}/${i}" ; then
      initrd_early="${initrd_early} ${i}"
    fi
  done

  initrd_real=
  for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
	   "initrd-${version}" "initramfs-${version}.img" \
	   "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
	   "initrd-${alt_version}" "initramfs-${alt_version}.img" \
	   "initramfs-genkernel-${version}" \
	   "initramfs-genkernel-${alt_version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
    if test -e "${dirname}/${i}" ; then
      initrd_real="${i}"
      break
    fi
  done

  initrd=
  if test -n "${initrd_early}" || test -n "${initrd_real}"; then
    initrd="${initrd_early} ${initrd_real}"

    initrd_display=
    for i in ${initrd}; do
      initrd_display="${initrd_display} ${dirname}/${i}"
    done
    gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
  fi

  dtb=
  for i in "dtb-${version}" "dtb-${alt_version}" "dtb"; do
    if test -e "${dirname}/${i}" ; then
      dtb="$i"
      break
    fi
  done

  config=
  for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
    if test -e "${i}" ; then
      config="${i}"
      break
    fi
  done

  initramfs=
  if test -n "${config}" ; then
      initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
  fi

  if test -z "${initramfs}" && test -z "${initrd_real}" ; then
    # "UUID=" and "ZFS=" magic is parsed by initrd or initramfs.  Since there's
    # no initrd or builtin initramfs, it can't work here.
    if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
	|| [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then

	linux_root_device_thisversion=${GRUB_DEVICE}
    else
	linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
    fi
  fi

  if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
    linux_entry "${OS}" "${version}" simple \
    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"

    submenu_indentation="$grub_tab"
    
    if [ -z "$boot_device_id" ]; then
	boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
    fi
    # TRANSLATORS: %s is replaced with an OS name
    echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
    is_top_level=false
  fi

  linux_entry "${OS}" "${version}" advanced \
              "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
  for supported_init in ${SUPPORTED_INITS}; do
    init_path="${supported_init#*:}"
    if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "$(readlink -f "${init_path}")" ]; then
      linux_entry "${OS}" "${version}" "init-${supported_init%%:*}" \
		  "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}"
    fi
  done
  if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
    linux_entry "${OS}" "${version}" recovery \
                "${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
  fi

  list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
done

# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
if [ x"$is_top_level" != xtrue ]; then
  echo '}'
fi

echo "$title_correction_code"

========================= sdb2/etc/grub.d/10_linux_zfs =========================

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2019 Canonical Ltd.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
datarootdir="/usr/share"
ubuntu_recovery="1"
quiet_boot="1"
quick_boot="1"
gfxpayload_dynamic="1"
vt_handoff="1"

. "${pkgdatadir}/grub-mkconfig_lib"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

set -u

## Skip early if zfs utils isn't installed (instead of failing on first zpool list)
if ! `which zfs >/dev/null 2>&1`; then
    exit 0
fi

imported_pools=""
MNTDIR="$(mktemp -d ${TMPDIR:-/tmp}/zfsmnt.XXXXXX)"
ZFSTMP="$(mktemp -d ${TMPDIR:-/tmp}/zfstmp.XXXXXX)"


machine="$(uname -m)"
case "${machine}" in
    i?86) GENKERNEL_ARCH="x86" ;;
    mips|mips64) GENKERNEL_ARCH="mips" ;;
    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
    arm*) GENKERNEL_ARCH="arm" ;;
    *) GENKERNEL_ARCH="${machine}" ;;
esac

RC=0
on_exit() {
    # Restore initial zpool import state
    for pool in ${imported_pools}; do
        zpool export "${pool}"
    done

    mountpoint -q "${MNTDIR}"  && umount "${MNTDIR}" || true
    rmdir "${MNTDIR}"
    rm -rf "${ZFSTMP}"
    exit "${RC}"
}
trap on_exit EXIT INT QUIT ABRT PIPE TERM

# List ONLINE and DEGRADED pools
import_pools() {
    # We have to ignore zpool import output, as potentially multiple / will be available,
    # and we need to autodetect all zpools this way with their real mountpoints.
    local initial_pools="$(zpool list | awk '{if (NR>1) print $1}')"
    local all_pools=""
    local imported_pools=""
    local err=""

    set +e
    err="$(zpool import -f -a -o cachefile=none -o readonly=on -N 2>&1)"
    # Only print stderr if the command returned an error
    # (it can echo "No zpool to import" with success, which we don't want)
    if [ $? -ne 0 ]; then
        echo "Some pools couldn't be imported and will be ignored:\n${err}" >&2
    fi
    set -e

    all_pools="$(zpool list | awk '{if (NR>1) print $1}')"
    for pool in ${all_pools}; do
        if echo "${initial_pools}" | grep -wq "${pool}"; then
            continue
        fi
        imported_pools="${imported_pools} ${pool}"
    done

    echo "${imported_pools}"
}

# List all the dataset with a root mountpoint
get_root_datasets() {
    local pools="$(zpool list | awk '{if (NR>1) print $1}')"

    for p in ${pools}; do
        local rel_pool_root=$(zpool get -H altroot ${p} | awk '{print $3}')
        if [ "${rel_pool_root}" = "-" ]; then
            rel_pool_root="/"
        fi

        zfs list -H -o name,canmount,mountpoint -t filesystem | grep -E '^'"${p}"'(\s|/[[:print:]]*\s)(on|noauto)\s'"${rel_pool_root}"'$' | awk '{print $1}'
    done
}

# find if given datasets can be mounted for directory and return its path (snapshot or real path)
# $1 is our current dataset name
# $2 directory path we look for (cannot contains /)
# $3 is the temporary mount directory to use
# $4 is the optional snapshot name
# return path for directory (which can be a mountpoint)
validate_system_dataset() {
    local dataset="$1"
    local directory="$2"
    local mntdir="$3"
    local snapshot_name="$4"

    local mount_path="${mntdir}/${directory}"

    if ! zfs list "${dataset}" >/dev/null 2>&1; then
        return
    fi

    if ! mount -o noatime,zfsutil -t zfs "${dataset}" "${mount_path}"; then
        grub_warn "Failed to find a valid directory '${directory}' for dataset '${dataset}@${snapshot_name}'. Ignoring"
        return
    fi

    local candidate_path="${mount_path}"
    if [ -n "${snapshot_name}" ]; then
        # WORKAROUND a bug https://github.com/zfsonlinux/zfs/issues/9958
        # Reading the content of a snapshot fails if it is not the first mount
        # for a given dataset
        first_mntdir=$(awk '{if ($1 == "'${dataset}'") {print $2; exit;}}' /proc/mounts)
        if [ "${first_mntdir}" = "/" ]; then
            # prevents // on candidate_path
            first_mntdir=""
        fi
        candidate_path="${first_mntdir}/.zfs/snapshot/${snapshot_name}"
    fi

    if [ -n "$(ls ${candidate_path} 2>/dev/null)" ]; then
        echo "${candidate_path}"
        return
    else
        mountpoint -q "${mount_path}" && umount "${mount_path}" || true
    fi
}

# Detect system directory relevant to the other, trying to find the ones associated on the current dataset or snapshot/
# System directory should be at most a direct child dataset of main datasets (no recursivity)
# We can fallback trying other zfs pools if no match has been found.
# $1 is our current dataset name (which can have @snapshot name)
# $2 directory path we look for (cannot contains /)
# $3 restrict_to_same_pool (true|false) force looking for dataset with the same basename in the current dataset pool only
# $4 is the temporary mount directory to use
# $5 is the optional etc directory (if not $2 is not etc itself)
# return path for directory (which can be a mountpoint)
get_system_directory() {
    local dataset_path="$1"
    local directory="$2"
    local restrict_to_same_pool="$3"
    local mntdir="$4"
    local etc_dir="$5"

    if [ -z "${etc_dir}" ]; then
        etc_dir="${mntdir}/etc"
    fi

    local candidate_path="${mntdir}/${directory}"

    # 1. Look for /etc/fstab first (which will mount even on top of non empty $directory)
    local mounted_fstab_entry="false"
    if [ -f "${etc_dir}/fstab" ]; then
        mount_args=$(awk '/^[^#].*[ \t]\/'"${directory}"'[ \t]/ {print "-t", $3, $1}' "${etc_dir}/fstab")
        if [ -n "${mount_args}" ]; then
            mounted_fstab_entry="true"
            mount -o noatime ${mount_args} "${candidate_path}" || mounted_fstab_entry="false"
        fi
    fi

    # If directory isn't empty. Only count if coming from /etc/fstab. Will be
    # handled below otherwise as we are interested in potential snapshots.
    if [ "${mounted_fstab_entry}" = "true" -a -n "$(ls ${candidate_path} 2>/dev/null)" ]; then
        echo "${candidate_path}"
        return
    fi

    # 2. Handle zfs case, which can be a snapshots.

    local base_dataset_path="${dataset_path}"
    local snapshot_name=""
    # For snapshots we extract the parent dataset
    if echo "${dataset_path}" | grep -q '@'; then
        base_dataset_path=$(echo "${dataset_path}" | cut -d '@' -f1)
        snapshot_name=$(echo "${dataset_path}" | cut -d '@' -f2)
    fi
    base_dataset_name="${base_dataset_path##*/}"
    base_pool="$(echo "${base_dataset_path}" | cut -d'/' -f1)"

    # 2.a) Look for child dataset included in base dataset, which needs to hold same snapshot if any
    candidate_path=$(validate_system_dataset "${base_dataset_path}/${directory}" "${directory}" "${mntdir}" "${snapshot_name}")
    if [ -n "${candidate_path}" ]; then
        echo "${candidate_path}"
        return
    fi

    # 2.b) Look for current dataset (which is already mounted as /)
    candidate_path="${mntdir}/${directory}"
    if [ -n "${snapshot_name}" ]; then
        # WORKAROUND a bug https://github.com/zfsonlinux/zfs/issues/9958
        # Reading the content of a snapshot fails if it is not the first mount
        # for a given dataset
        first_mntdir=$(awk '{if ($1 == "'${base_dataset_path}'") {print $2; exit;}}' /proc/mounts)
        if [ "${first_mntdir}" = "/" ]; then
            # prevents // on candidate_path
            first_mntdir=""
        fi
        candidate_path="${first_mntdir}/.zfs/snapshot/${snapshot_name}/${directory}"
    fi
    if [ -n "$(ls ${candidate_path} 2>/dev/null)" ]; then
        echo "${candidate_path}"
        return
    fi

    # 2.c) Look for every datasets in every pool which isn't the current dataset which holds:
    # - the same dataset name (last section) than our base_dataset_name
    # - mountpoint=directory
    # - canmount!=off
    all_same_base_dataset_name="$(zfs list -H -t filesystem -o name,canmount | awk '/^[^ ]+\/'"${base_dataset_name}"'[ \t](on|noauto)/ {print $1}') "

    # order by local pool datasets first
    current_pool_same_base_datasets=""
    other_pools_same_base_datasets=""
    root_pool=$(echo "${dataset_path%%/*}")
    for d in ${all_same_base_dataset_name}; do
        cur_dataset_pool=$(echo "${d%%/*}")
        if echo "${cur_dataset_pool}" | grep -wq "${root_pool}" 2>/dev/null ; then
            current_pool_same_base_datasets="${current_pool_same_base_datasets} ${d}"
        else
            other_pools_same_base_datasets="${other_pools_same_base_datasets} ${d}"
        fi
    done
    ordered_same_base_datasets="${current_pool_same_base_datasets} ${other_pools_same_base_datasets}"
    if [ "${restrict_to_same_pool}" = "true" ]; then
        ordered_same_base_datasets="${current_pool_same_base_datasets}"
    fi

    # now, loop over them
    for d in ${ordered_same_base_datasets}; do
        cur_dataset_pool=$(echo "${d%%/*}")

        rel_pool_root=$(zpool get -H altroot ${cur_dataset_pool} | awk '{print $3}')
        if [ "${rel_pool_root}" = "-" ]; then
            rel_pool_root=""
        fi

        # check mountpoint match
        candidate_dataset=$(zfs get -H mountpoint ${d} | grep -E "mountpoint\s${rel_pool_root}/${directory}\s" | awk '{print $1}')
        if [ -z "${candidate_dataset}" ]; then
            continue
        fi

        candidate_path=$(validate_system_dataset "${candidate_dataset}" "${directory}" "${mntdir}" "${snapshot_name}")
        if [ -n "${candidate_path}" ]; then
            echo "${candidate_path}"
            return
        fi
    done

    # 2.d) If we didn't find anything yet: check for persistent datasets corresponding to our mountpoint, with canmount=on without any snapshot associated:
    # Note: we go over previous datasets as well, but this is ok, as we didn't include them before.
    all_mountable_datasets="$(zfs list -t filesystem -o name,canmount | awk  '/^[^ ]+[ \t]+on/ {print $1}')"

    # order by local pool datasets first
    current_pool_datasets=""
    other_pools_datasets=""
    root_pool=$(echo "${dataset_path%%/*}")
    for d in ${all_mountable_datasets}; do
        cur_dataset_pool=$(echo "${d%%/*}")
        if echo "${cur_dataset_pool}" | grep -wq "${root_pool}" 2>/dev/null ; then
            current_pool_datasets="${current_pool_datasets} ${d}"
        else
            other_pools_datasets="${other_pools_datasets} ${d}"
        fi
    done
    ordered_datasets="${current_pool_datasets} ${other_pools_datasets}"
    if [ "${restrict_to_same_pool}" = "true" ]; then
        ordered_datasets="${current_pool_datasets}"
    fi

    for d in ${ordered_datasets}; do
        cur_dataset_pool=$(echo "${d%%/*}")

        rel_pool_root=$(zpool get -H altroot ${cur_dataset_pool} | awk '{print $3}')
        if [ "${rel_pool_root}" = "-" ]; then
            rel_pool_root=""
        fi

        # check mountpoint match
        candidate_dataset=$(zfs get -H mountpoint ${d} | grep -E "mountpoint\s${rel_pool_root}/${directory}\s" | awk '{print $1}')
        if [ -z "${candidate_dataset}" ]; then
            continue
        fi

        candidate_path=$(validate_system_dataset "${d}" "${directory}" "${mntdir}" "")
        if [ -n "${candidate_path}" ]; then
            echo "${candidate_path}"
            return
        fi
    done

    grub_warn "Failed to find a valid directory '${directory}' for dataset '${dataset_path}'. Ignoring"
    return
}

# Try our default layout bpool as a prefered layout (fast path)
# This is get_system_directory for boot optimized for our default installation layout
# $1 is our current dataset name (which can have @snapshot name)
# $2 is the temporary mount directory to use
# return path for directory (which can be a mountpoint) if found
try_default_layout_bpool() {
    local root_dataset_path="$1"
    local mntdir="$2"

    dataset_basename="${root_dataset_path##*/}"
    candidate_dataset="bpool/BOOT/${dataset_basename}"
    dataset_properties="$(zfs get -H mountpoint,canmount ${candidate_dataset} | cut -f3 | paste -sd ' ')"
    if [ -z "${dataset_properties}" ]; then
        return
    fi

    rel_pool_root=$(zpool get -H altroot bpool | awk '{print $3}')
    if [ "${rel_pool_root}" = "-" ]; then
        rel_pool_root=""
    fi

    snapshot_name="${dataset_basename##*@}"
    [ "${snapshot_name}" = "${dataset_basename}" ] && snapshot_name=""
    if [ -z "${snapshot_name}" ]; then
        if ! echo "${dataset_properties}" | grep -Eq "${rel_pool_root}/boot (on|noauto)"; then
            return
        fi
    else
        candidate_dataset=$(echo "${candidate_dataset}" | cut -d '@' -f1)
    fi

    validate_system_dataset "${candidate_dataset}" "boot" "${mntdir}" "${snapshot_name}"
}

# Return if secure boot is enabled on that system
is_secure_boot_enabled() {
    if LANG=C mokutil --sb-state 2>/dev/null | grep -qi enabled; then
        echo "true"
        return
    fi
    echo "false"
    return
}

# Given a filesystem or snapshot dataset, returns dataset|machine id|pretty name|last used
# $1 is dataset we want information from
# $2 is the temporary mount directory to use
get_dataset_info() {
    local dataset="$1"
    local mntdir="$2"

    local base_dataset="${dataset}"
    local etc_dir="${mntdir}/etc"
    local is_snapshot="false"
    # For snapshot we extract the parent dataset
    if echo "${dataset}" | grep -q '@'; then
        base_dataset=$(echo "${dataset}" | cut -d '@' -f1)
        is_snapshot="true"
    fi

    mount -o noatime,zfsutil -t zfs "${base_dataset}" "${mntdir}"

    # read machine-id/os-release from /etc
    etc_dir=$(get_system_directory "${dataset}" "etc" "true" "${mntdir}" "")
    if [ -z  "${etc_dir}" ]; then
        grub_warn "Ignoring ${dataset}"
        mountpoint -q "${mntdir}/etc" && umount "${mntdir}/etc" || true
        umount "${mntdir}"
        return
    fi

    machine_id=""
    if [ -f "${etc_dir}/machine-id" ]; then
        machine_id=$(cat "${etc_dir}/machine-id")
    fi
    # We have to use a random temporary id if we don't have any machine-id file or if this one is empty
    # (mostly the case of new installations before first boot).
    # Let's use the dataset name directly for this.
    # Consequence is that all datasets are then separated.
    if [ -z "${machine_id}" ]; then
        machine_id="${dataset}"
    fi
    pretty_name=$(. "${etc_dir}/os-release" && echo "${PRETTY_NAME}")
    mountpoint -q "${mntdir}/etc" && umount "${mntdir}/etc" || true

    # read available kernels from /boot
    boot_dir="$(try_default_layout_bpool "${dataset}" "${mntdir}")"
    if [ -z "${boot_dir}" ]; then
        boot_dir=$(get_system_directory "${dataset}" "boot" "false" "${mntdir}" "${etc_dir}")
    fi

    if [ -z  "${boot_dir}" ]; then
        grub_warn "Ignoring ${dataset}"
        mountpoint -q "${mntdir}/boot" && umount "${mntdir}/boot" || true
        umount "${mntdir}"
        return
    fi

    initrd_list=""
    kernel_list=""
    list=$(find "${boot_dir}" -maxdepth 1 -type f -regex '.*/\(vmlinuz\|vmlinux\|kernel\)-.*')
    while [ "x$list" != "x" ] ; do
        linux=`version_find_latest $list`
        list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
        if ! grub_file_is_not_garbage "${linux}" ; then
            continue
        fi

        # Filters entry if efi/non efi.
        # Note that for now we allow kernel without .efi.signed as those are signed kernel
        # on ubuntu, loaded by the shim.
        case "${linux}" in
            *.efi.signed)
                if [ "$(is_secure_boot_enabled)" = "false" ]; then
                    continue
                fi
            ;;
        esac

        linux_basename=$(basename "${linux}")
        linux_dirname=$(dirname "${linux}")
        version=$(echo "${linux_basename}" | sed -e "s,^[^0-9]*-,,g")
        alt_version=$(echo "${version}" | sed -e "s,\.old$,,g")

        gettext_printf "Found linux image: %s in %s\n" "${linux_basename}" "${dataset}" >&2

        initrd=""
        for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
            "initrd-${version}" "initramfs-${version}.img" \
            "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
            "initrd-${alt_version}" "initramfs-${alt_version}.img" \
            "initramfs-genkernel-${version}" \
            "initramfs-genkernel-${alt_version}" \
            "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
            "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
            if test -e "${linux_dirname}/${i}" ; then
                initrd="$i"
                break
            fi
        done

        if test -z "${initrd}" ; then
            grub_warn "Couldn't find any valid initrd for dataset ${dataset}."
            continue
        fi

        gettext_printf "Found initrd image: %s in %s\n" "${initrd}" "${dataset}" >&2

        rel_linux_dirname=$(make_system_path_relative_to_its_root "${linux_dirname}")

        initrd_list="${initrd_list}|${rel_linux_dirname}/${initrd}"
        kernel_list="${kernel_list}|${rel_linux_dirname}/${linux_basename}"
    done

    initrd_list="${initrd_list#|}"
    kernel_list="${kernel_list#|}"

    initrd_device=$(${grub_probe} --target=device "${boot_dir}" | head -1)

    mountpoint -q "${mntdir}/boot" && umount "${mntdir}/boot" || true
    # We needed to look in / for snapshots on root dataset, umount there before zfs lazily unmount it
    case "${boot_dir}" in /boot/.zfs/snapshot/*)
        umount "${boot_dir}" || true
        ;;
    esac

    # for zsys snapshots: we want to know which kernel we successful last booted with
    last_booted_kernel=$(zfs get -H com.ubuntu.zsys:last-booted-kernel "${dataset}" | awk '{print $3}')

    # snapshot: last_used is dataset creation time
    if [ "${is_snapshot}" = "true" ]; then
        last_used="$(zfs get -pH creation "${dataset}" | awk -F '\t' '{print $3}')"
    # otherwise, last_used is manually marked at boot/shutdown on a root dataset for zsys
    else
        # if current system, take current time
        if zfs mount | awk '/[ \t]+\/$/ {print $1}' | grep -q ${dataset}; then
            last_used=$(date +%s)
        else
            last_used=$(zfs get -H com.ubuntu.zsys:last-used "${dataset}" | awk '{print $3}')
            # case of non zsys, or zsys without annotation, take /etc/machine-id stat (as we mounted with noatime).
            # However, as systems can be relatime, if system is current mounted one, set current time (case of clone + reboot
            # within the same d).
            if [ "${last_used}" = "-" ]; then
                last_used=$(stat --printf="%X" "${mntdir}/etc/os-release")
                if [ -f "${mntdir}/etc/machine-id" ]; then
                    last_used=$(stat --printf="%X" "${mntdir}/etc/machine-id")
                fi
            fi
        fi
    fi

    is_zsys=$(zfs get -H com.ubuntu.zsys:bootfs "${base_dataset}" | awk '{print $3}')

    if [ -n "${initrd_list}" -a -n "${kernel_list}" ]; then
        echo "${dataset}\t${is_zsys}\t${machine_id}\t${pretty_name}\t${last_used}\t${initrd_device}\t${initrd_list}\t${kernel_list}\t${last_booted_kernel}"
    else
        grub_warn "didn't find any valid initrd or kernel."
    fi

    umount "${mntdir}" || true
    # We needed to look in / for snapshots on root dataset, umount the snapshot for etc before zfs lazily unmount it
    case "${etc_dir}" in /.zfs/snapshot/*/etc)
        snapshot_path="$(findmnt -n -o TARGET -T ${etc_dir})"
        umount "${snapshot_path}" || true
        ;;
    esac
}

# Scan available boot options and returns in a formatted list
# $1 is the temporary mount directory to use
bootlist() {
    local mntdir="$1"
    local boot_list=""

    for dataset in $(get_root_datasets); do
        # get information from current root dataset
        boot_list="${boot_list}$(get_dataset_info ${dataset} ${mntdir})\n"

        # get information from snapshots of this root dataset
        for snapshot_dataset in $(zfs list -H -o name -t snapshot "${dataset}"); do
            boot_list="${boot_list}$(get_dataset_info ${snapshot_dataset} ${mntdir})\n"
        done
    done
    echo "${boot_list}"
}


# Order machine ids by last_used from their main entry
get_machines_sorted() {
    local bootlist="$1"

    local machineids="$(echo "${bootlist}" | awk '{print $3}' | sort -u)"
    for machineid in ${machineids}; do
        echo "${bootlist}" | awk 'BEGIN{FS="\t"} $1 !~ /.*@.*/  {print $5, $3}' | sort -nr | grep -E "[^^]\b${machineid}\b" | head -1
    done | sort -nr | awk '{print $2}'
}

# Sort entries by last_used for a given machineid
sort_entries_for_machineid() {
    local bootlist="$1"
    local machineid="$2"

    tab="$(printf '\t')"
    echo "${bootlist}" | grep -E "[^^]\b${machineid}\b" | sort -k5,5r -k1,1 -t "${tab}"
}

# Return main entry index
get_main_entry() {
    local entries="$1"

    echo "${entries}" | awk 'BEGIN{FS="\t"} $1 !~ /.*@.*/  {print}' | head -1
}

# Return specific field at index from entry
get_field_from_entry() {
    local entry="$1"
    local index="$2"

    echo "${entry}" | awk "BEGIN{FS=\"\t\"} {print \$$index}"
}

# Get the main entry metadata
main_entry_meta() {
    local main_entry="$1"

    initrd=$(get_field_from_entry "${main_entry}" 7 | cut -d'|' -f1)
    kernel=$(get_field_from_entry "${main_entry}" 8 | cut -d'|' -f1)

    # Take first element (most recent entry) which is not a snapshot
    echo "${main_entry}" | awk "BEGIN{ FS=\"\t\"; OFS=\"\t\"} {print \$3, \$2, \"main\", \$4, \$1, \$6, \"$initrd\", \"$kernel\"}"
}

# Get advanced entries metadata
advanced_entries_meta() {
    local main_entry="$1"

    last_used_kernel="$(get_field_from_entry "${main_entry}" 9 )"

    # We must align initrds with kernels.
    # Adds initrds to the stack then pop them 1 by 1 as we process the kernels
    set -- $(get_field_from_entry "${main_entry}" 7 | tr "|" " ")
    for kernel in $(get_field_from_entry "${main_entry}" 8 | tr "|" " "); do
        # get initrd and pop to the next one
        initrd="$1"; shift

        was_last_used_kernel="false"
        kernel_basename=$(basename "${kernel}")
        if [ "${kernel_basename}" = "${last_used_kernel}" ]; then
            was_last_used_kernel="true"
        fi

        echo "${main_entry}" | awk "BEGIN{ FS=\"\t\"; OFS=\"\t\"}    {print \$3, \$2, \"advanced\", \$4, \$1, \$6, \"$initrd\", \"$kernel\", \"$was_last_used_kernel\"}"
    done
}

# Get history metadata
history_entries_meta() {
    local entries="$1"
    local main_dataset_name="$2"
    local main_dataset_releasename="$3"

    if [ -z "${entries}" ]; then
        return
    fi

    # Traverse snapshots and clones
    echo "${entries}" | while read entry; do
        name=""
        # Compute snapshot/filesystem dataset name
        snap_dataset_name="$(get_field_from_entry "${entry}" 1)"

        snapname="${snap_dataset_name##*@}"
        # If, this is a clone, take what is after main_dataset_name
        if [ "${snapname}" = "${snap_dataset_name}" ]; then
            snapname="${snap_dataset_name##${main_dataset_name}_}"

            # Handle manual user clone (not prefixed by "main_dataset_name")
            snapname="${snapname##*/}"
        fi

        # We keep the snapname only if it is not only a zsys auto snapshot
        if echo "${snapname}" | grep -q "^autozsys_"; then
            snapname=""
        fi

        # We store the release only if it different from main dataset release (snapshot before a release upgrade)
        releasename=$(get_field_from_entry "${entry}" 4)
        if [ "${releasename}" = "${main_dataset_releasename}" ]; then
            releasename=""
        fi

        # Snapshot date
        foo="$(get_field_from_entry "${entry}" 5)"
        snapdate="$(date -d @$(get_field_from_entry "${entry}" 5) "+%x @ %H:%M")"

        # For snapshots/clones the name can have the following formats:
        # 	<DATE>: autozsys, same release
        #   <OLD_RELEASE> on <DATE>: autozsys, different release
        #   <SNAPNAME> on <DATE>: Manual snapshot, same release
        #   <SNAPNAME>, <OLD_RELEASE> on <DATE>: Manual snapshot, different release
        if [ "${snapname}" = "" -a "${releasename}" = "" ]; then
            name="${snapdate}"
        elif [ "${snapname}" = "" -a "${releasename}" != "" ]; then
            name=$(gettext_printf "%s on %s" "${releasename}" "${snapdate}")
        elif [ "${snapname}" != "" -a "${releasename}" = "" ]; then
            name=$(gettext_printf "%s on %s" "${snapname}" "${snapdate}")
        else # snapname != "" && releasename != ""
            name=$(gettext_printf "%s, %s on %s" "${snapname}" "${releasename}" "${snapdate}")
        fi

        # Choose kernel and initrd if the snapshot was booted successfully on a specific kernel before
        # Take latest by default if no match
        initrd=$(get_field_from_entry "${entry}" 7 | cut -d'|' -f1)
        kernel=$(get_field_from_entry "${entry}" 8 | cut -d'|' -f1)
        last_used_kernel="$(get_field_from_entry "${entry}" 9)"

        # We must align initrds with kernels.
        # Adds initrds to the stack then pop them 1 by 1 as we process the kernels
        set -- $(get_field_from_entry "${entry}" 7 | tr "|" " ")
        for k in $(get_field_from_entry "${entry}" 8|tr "|" " "); do
            # get initrd and pop to the next one
            candidate_initrd="$1"; shift

            kernel_basename=$(basename "${k}")
            if [ "${kernel_basename}" = "${last_used_kernel}" ]; then
                kernel="${k}"
                initrd="${candidate_initrd}"
                break
            fi
        done

        echo "${entry}" | awk "BEGIN{ FS=\"\t\"; OFS=\"\t\"}    {print \$3, \$2, \"history\", \"$name\", \$1, \$6, \"$initrd\", \"$kernel\"}"
    done
}

# Generate metadata from a BOOTLIST that will subsequently used to generate
# the final grub menu entries
generate_grub_menu_metadata() {
    local bootlist="$1"

    # Sort machineids by last_used from their main entry
    for machineid in $(get_machines_sorted "${bootlist}"); do
        entries="$(sort_entries_for_machineid "${bootlist}" ${machineid})"
        main_entry="$(get_main_entry "${entries}")"

        if [ -z "$main_entry" ]; then
            continue
        fi

        main_entry_meta "${main_entry}"
        advanced_entries_meta "${main_entry}"

        main_dataset_name="$(get_field_from_entry "${main_entry}" 1)"
        main_dataset_releasename="$(get_field_from_entry "${main_entry}" 4)"
        # grep -v errcode != 0 if there is no match. || true to not fail with -e
        other_entries="$(echo "${entries}" | grep -v "${main_entry}" || true)"
        history_entries_meta "${other_entries}" "${main_dataset_name}" "${main_dataset_releasename}"
    done
}

# Print the configuration part common to all sections
# Note:
#   If 10_linux runs these part will be defined twice in grub configuration
print_menu_prologue() {
    cat << 'EOF'
function gfxmode {
	set gfxpayload="${1}"
EOF
    if [ "${vt_handoff}" = 1 ]; then
        cat << 'EOF'
	if [ "${1}" = "keep" ]; then
		set vt_handoff=vt.handoff=1
	else
		set vt_handoff=
	fi
EOF
    fi
    cat << EOF
}
EOF

    # Use ELILO's generic "efifb" when it's known to be available.
    # FIXME: We need an interface to select vesafb in case efifb can't be used.
    GRUB_GFXPAYLOAD_LINUX="${GRUB_GFXPAYLOAD_LINUX:-}"
    if [ "${GRUB_GFXPAYLOAD_LINUX}" != "" ] || [ "${gfxpayload_dynamic}" = 0 ]; then
        echo "set linux_gfx_mode=${GRUB_GFXPAYLOAD_LINUX}"
    else
        cat << EOF
if [ "\${recordfail}" != 1 ]; then
  if [ -e \${prefix}/gfxblacklist.txt ]; then
    if hwmatch \${prefix}/gfxblacklist.txt 3; then
      if [ \${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
EOF
    fi
    cat << EOF
export linux_gfx_mode
EOF
}

# Cache for prepare_grub_to_access_device call
# $1: boot_device
# $2: submenu_level
prepare_grub_to_access_device_cached() {
    local boot_device="$1"
    local submenu_level="$2"

    local boot_device_idx="$(echo ${boot_device} | tr '/' '_')"

    cache_file="${ZFSTMP}/$(echo boot_device${boot_device_idx})"
    if [ ! -f "${cache_file}" ]; then
        set +u
        echo "$(prepare_grub_to_access_device "${boot_device}")" > "${cache_file}"
        set -u
        for i in 0 1 2; do
            submenu_indentation="$(printf %${i}s | tr " " "${grub_tab}")"
            sed "s/^/${submenu_indentation}	/" "${cache_file}" > "${cache_file}--${i}"
        done
    fi

    cat "${cache_file}--${submenu_level}"
}


# Print a grub menu entry
zfs_linux_entry () {
    submenu_level="$1"
    title="$2"
    type="$3"
    dataset="$4"
    boot_device="$5"
    initrd="$6"
    kernel="$7"
    kernel_version="$8"
    kernel_additional_args="${9:-}"
    boot_devices="${10:-}"

    submenu_indentation="$(printf %${submenu_level}s | tr " " "${grub_tab}")"

    echo "${submenu_indentation}menuentry '$(echo "${title}" | grub_quote)' ${CLASS} \${menuentry_id_option} 'gnulinux-${dataset}-${kernel_version}' {"

    if [ "${quick_boot}" = 1 ]; then
        echo "${submenu_indentation}	recordfail"
    fi

    if [ "${type}" != "recovery" ] ; then
        GRUB_SAVEDEFAULT=${GRUB_SAVEDEFAULT:-}
        default_entry="$(save_default_entry)"
        if [ -n "${default_entry}" ]; then
            echo "${submenu_indentation}	${default_entry}"
        fi
    fi

    # Use ELILO's generic "efifb" when it's known to be available.
    # FIXME: We need an interface to select vesafb in case efifb can't be used.
    if [ "${GRUB_GFXPAYLOAD_LINUX}" = "" ]; then
        echo "${submenu_indentation}	load_video"
    else
        if [ "${GRUB_GFXPAYLOAD_LINUX}" != "text" ]; then
            echo "${submenu_indentation}	load_video"
        fi
    fi

    if ([ "${ubuntu_recovery}" = 0 ] || [ "${type}" != "recovery" ]) && \
        ([ "${GRUB_GFXPAYLOAD_LINUX}" != "" ] || [ "${gfxpayload_dynamic}" = 1 ]); then
        echo "${submenu_indentation}	gfxmode \${linux_gfx_mode}"
    fi

    echo "${submenu_indentation}	insmod gzio"
    echo "${submenu_indentation}	if [ \"\${grub_platform}\" = xen ]; then insmod xzio; insmod lzopio; fi"

    if [ -n "$boot_devices" ]; then
        for device in ${boot_devices}; do
            echo "${submenu_indentation}	if [ "${boot_device}" = "${device}" ]; then"
            echo "$(prepare_grub_to_access_device_cached "${device}" $(( submenu_level +1 )) )"
            echo "${submenu_indentation}	fi"
        done
    else
        echo "$(prepare_grub_to_access_device_cached "${boot_device}" "${submenu_level}")"
    fi

    if [ "${quiet_boot}" = 0 ] || [ "${type}" != simple ]; then
        echo "${submenu_indentation}	echo $(gettext_printf "Loading Linux %s ..." ${kernel_version} | grub_quote)"
    fi

    linux_default_args="${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
    if [ ${type} = "recovery" ]; then
        linux_default_args="${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
    fi

    echo "${submenu_indentation}	linux	${kernel} root=ZFS=${dataset} ro ${linux_default_args} ${kernel_additional_args}"

    if [ "${quiet_boot}" = 0 ] || [ "${type}" != simple ]; then
        echo "${submenu_indentation}	echo '$(gettext_printf "Loading initial ramdisk ..." | grub_quote)'"
    fi
    echo "${submenu_indentation}	initrd	${initrd}"
    echo "${submenu_indentation}}"
}

# Generate a GRUB Menu from menu meta data
# $1 menu metadata
generate_grub_menu() {
    local menu_metadata="$1"
    local last_section=""
    local main_dataset_name=""
    local main_dataset=""
    local have_zsys=""

    if [ -z "${menu_metadata}" ]; then
        return
    fi

    CLASS="--class gnu-linux --class gnu --class os"

    if [ "${GRUB_DISTRIBUTOR}" = "" ] ; then
        OS=GNU/Linux
    else
        case ${GRUB_DISTRIBUTOR} in
            Ubuntu|Kubuntu)
            OS="${GRUB_DISTRIBUTOR}"
            ;;
            *)
            OS="${GRUB_DISTRIBUTOR} GNU/Linux"
            ;;
        esac
        CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1 | LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
    fi

    if [ -x /lib/recovery-mode/recovery-menu ]; then
        GRUB_CMDLINE_LINUX_RECOVERY=recovery
    else
        GRUB_CMDLINE_LINUX_RECOVERY=single
    fi
    if [ "${ubuntu_recovery}" = 1 ]; then
        GRUB_CMDLINE_LINUX_RECOVERY="${GRUB_CMDLINE_LINUX_RECOVERY} nomodeset"
    fi

    case "$GENKERNEL_ARCH" in
        x86*) GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY dis_ucode_ldr";;
    esac


    if [ "${vt_handoff}" = 1 ]; then
        for word in ${GRUB_CMDLINE_LINUX_DEFAULT}; do
            if [ "${word}" = splash ]; then
                GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT} \${vt_handoff}"
            fi
        done
    fi

    print_menu_prologue

    cat<<'EOF'
function zsyshistorymenu {
	# $1: root dataset (eg rpool/ROOT/ubuntu_2zhm07@autozsys_k56fr6)
	# $2: boot device id (eg 411f29ce1557bfed)
	# $3: initrd (eg /BOOT/ubuntu_2zhm07@autozsys_k56fr6/initrd.img-5.4.0-21-generic)
	# $4: kernel (eg /BOOT/ubuntu_2zhm07@autozsys_k56fr6/vmlinuz-5.4.0-21-generic)
	# $5: kernel_version (eg 5.4.0-21-generic)

	set root_dataset="${1}"
	set boot_device="${2}"
	set initrd="${3}"
	set kernel="${4}"
	set kversion="${5}"

EOF
    boot_devices=$(echo "${menu_metadata}" | cut -d"$(printf '\t')" -f6 | sort -u)

    title=$(gettext_printf "Revert system only")
    zfs_linux_entry 1 "${title}" "simple" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' '' "${boot_devices}"

    title="$(gettext_printf "Revert system and user data")"
    zfs_linux_entry 1 "${title}" "simple" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' 'zsys-revert=userdata' "${boot_devices}"

    GRUB_DISABLE_RECOVERY="${GRUB_DISABLE_RECOVERY:-}"
    if [ "${GRUB_DISABLE_RECOVERY}" != "true" ]; then
        title="$(gettext_printf "Revert system only (%s)" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
        zfs_linux_entry 1 "${title}" "recovery" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' '' "${boot_devices}"

        title="$(gettext_printf "Revert system and user data (%s)" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
        zfs_linux_entry 1 "${title}" "recovery" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' 'zsys-revert=userdata' "${boot_devices}"
    fi
echo "}"
echo

    # IFS is set to TAB (ASCII 0x09)
    echo "${menu_metadata}" |
    {
        at_least_one_entry=0
        have_zsys="$(which zsysd || true)"
        while IFS="$(printf '\t')" read -r machineid iszsys section name dataset device initrd kernel opt; do

            # Disable history for non zsys system or if systems is a zsys one and zsys isn't installed.
            # In pure zfs systems, we identified multiple issues due to the mount generator
            # in upstream zfs which makes it incompatible. Don't show history for now.
            if [ "${section}" = "history" ]; then
                if [ "${iszsys}" != "yes" ] || [ "${iszsys}" = "yes" -a -z "${have_zsys}" ]; then
                    continue
                fi
            fi

            if [ "${last_section}" != "${section}" -a -n "${last_section}" ]; then
                # Close previous section wrapper
                if [ "${last_section}" != "main" ]; then
                    echo "}"    # Add grub_tabs
                    at_least_one_entry=0
                fi
            fi

            case "${section}" in
                main)
                    title="${name}"
                    main_dataset_name="${name}"
                    main_dataset="${dataset}"

                    kernel_version=$(basename "${kernel}" | sed -e "s,^[^0-9]*-,,g")
                    zfs_linux_entry 0 "${title}" "simple" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
                    at_least_one_entry=1
                ;;
                advanced)
                    # normal and recovery entries for a given kernel
                    if [ "${last_section}" != "${section}" ]; then
                        echo "submenu '$(gettext_printf "Advanced options for %s" "${main_dataset_name}" | grub_quote)' \${menuentry_id_option} 'gnulinux-advanced-${main_dataset}' {"
                    fi

                    last_booted_kernel_marker=""
                    if [ "${opt}" = "true" ]; then
                        last_booted_kernel_marker="* "
                    fi

                    kernel_version=$(basename "${kernel}" | sed -e "s,^[^0-9]*-,,g")
                    title="$(gettext_printf "%s%s, with Linux %s" "${last_booted_kernel_marker}" "${name}" "${kernel_version}")"
                    zfs_linux_entry 1 "${title}" "advanced" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"

                    GRUB_DISABLE_RECOVERY=${GRUB_DISABLE_RECOVERY:-}
                    if [ "${GRUB_DISABLE_RECOVERY}" != "true" ]; then
                        title="$(gettext_printf "%s%s, with Linux %s (%s)" "${last_booted_kernel_marker}" "${name}" "${kernel_version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
                        zfs_linux_entry 1 "${title}" "recovery" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
                    fi
                    at_least_one_entry=1
                ;;
                history)
                    # Revert to a snapshot
                    # revert system, revert system and user data and associated recovery entries
                    if [ "${last_section}" != "${section}" ]; then
                        echo "submenu '$(gettext_printf "History for %s" "${main_dataset_name}" | grub_quote)' \${menuentry_id_option} 'gnulinux-history-${main_dataset}' {"
                    fi

                    if [ "${iszsys}" = "yes" ]; then
                        title="$(gettext_printf "Revert to %s" "${name}" | grub_quote)"
                    else
                        title="$(gettext_printf "Boot on %s" "${name}" | grub_quote)"
                    fi
                    echo "	submenu '${title}' \${menuentry_id_option} 'gnulinux-history-${dataset}' {"

                    kernel_version=$(basename "${kernel}" | sed -e "s,^[^0-9]*-,,g")

                    # Zsys only: let revert system without destroying snapshots
                    if [ "${iszsys}" = "yes" ]; then
                        echo "${grub_tab}${grub_tab}zsyshistorymenu" \"${dataset}\" \"${device}\" \"${initrd}\" \"${kernel}\" \"${kernel_version}\"
                    # Non-zsys: boot temporarly on snapshots or rollback (destroying intermediate snapshots)
                    else
                        title="$(gettext_printf "One time boot")"
                        zfs_linux_entry 2 "${title}" "simple" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"

                        GRUB_DISABLE_RECOVERY="${GRUB_DISABLE_RECOVERY:-}"
                        if [ "${GRUB_DISABLE_RECOVERY}" != "true" ]; then
                            title="$(gettext_printf "One time boot (%s)" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
                            zfs_linux_entry 2 "${title}" "recovery" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
                        fi

                        title="$(gettext_printf "Revert system (all intermediate snapshots will be destroyed)")"
                        zfs_linux_entry 2 "${title}" "simple" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}" "rollback=yes"
                    fi

                    echo "	}"
                    at_least_one_entry=1
                ;;
                *)
                    grub_warn "unknown section: ${section}. Ignoring entry ${name} for ${dataset}"
                ;;
            esac
            last_section="${section}"
        done

        if [ "${at_least_one_entry}" -eq 1 ]; then
            echo "}"
        fi
    }
}

# don't add trailing newline of variable is empty
# $1: content to write
# $2: destination file
trailing_newline_if_not_empty() {
    content="$1"
    dest="$2"

    if [ -z "${content}" ]; then
        rm -f "${dest}"
        touch "${dest}"
        return
    fi
    echo "${content}" > "${dest}"
}


GRUB_LINUX_ZFS_TEST="${GRUB_LINUX_ZFS_TEST:-}"
case "${GRUB_LINUX_ZFS_TEST}" in
    bootlist)
        # Import all available pools on the system and return imported list
        imported_pools=$(import_pools)
        boot_list="$(bootlist ${MNTDIR})"
        trailing_newline_if_not_empty "${boot_list}" "${GRUB_LINUX_ZFS_TEST_OUTPUT}"
        break
    ;;
    metamenu)
        boot_list="$(cat ${GRUB_LINUX_ZFS_TEST_INPUT})"
        menu_metadata="$(generate_grub_menu_metadata "${boot_list}")"
        trailing_newline_if_not_empty "${menu_metadata}" "${GRUB_LINUX_ZFS_TEST_OUTPUT}"
        break
    ;;
    grubmenu)
        menu_metadata="$(cat ${GRUB_LINUX_ZFS_TEST_INPUT})"
        grub_menu=$(generate_grub_menu "${menu_metadata}")
        trailing_newline_if_not_empty "${grub_menu}" "${GRUB_LINUX_ZFS_TEST_OUTPUT}"
        break
    ;;
    *)
        # Import all available pools on the system and return imported list
        imported_pools=$(import_pools)
        # Generate the complete list of boot entries
        boot_list="$(bootlist ${MNTDIR})"
        # Create boot menu meta data from the list of boot entries
        menu_metadata="$(generate_grub_menu_metadata "${boot_list}")"
        # Create boot menu meta data from the list of boot entries
        grub_menu="$(generate_grub_menu "${menu_metadata}")"
        if [ -n "${grub_menu}" ]; then
            # We want the trailing newline as a marker will be added
            echo "${grub_menu}"
        fi
    ;;
esac

========================= sdb2/etc/grub.d/20_linux_xen =========================

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"

. "$pkgdatadir/grub-mkconfig_lib"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

CLASS="--class gnu-linux --class gnu --class os --class xen"
SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"

if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
  OS=GNU/Linux
else
  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
fi

# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don't like that.
case ${GRUB_DEVICE} in
  /dev/loop/*|/dev/loop[0-9])
    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
    # We can't cope with devices loop-mounted from files here.
    case ${GRUB_DEVICE} in
      /dev/*) ;;
      *) exit 0 ;;
    esac
  ;;
esac

# Default to disabling partition uuid support to maintian compatibility with
# older kernels.
GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}

# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
# and mounting btrfs requires user space scanning, so force UUID in this case.
if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
    || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
	&& [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
	&& ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
    || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
else
  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi

# Allow overriding GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT.
if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
  GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
fi
if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
  GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
fi

case x"$GRUB_FS" in
    xbtrfs)
	rootsubvol="`make_system_path_relative_to_its_root /`"
	rootsubvol="${rootsubvol#/}"
	if [ "x${rootsubvol}" != x ]; then
	    GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
	fi;;
    xzfs)
	rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
	bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
	LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
	;;
esac

title_correction_code=

linux_entry ()
{
  os="$1"
  version="$2"
  xen_version="$3"
  type="$4"
  args="$5"
  xen_args="$6"
  if [ -z "$boot_device_id" ]; then
      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
  fi
  if [ x$type != xsimple ] ; then
      if [ x$type = xrecovery ] ; then
	  title="$(gettext_printf "%s, with Xen %s and Linux %s (%s)" "${os}" "${xen_version}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
      elif [ "${type#init-}" != "$type" ] ; then
	  title="$(gettext_printf "%s, with Xen %s and Linux %s (%s)" "${os}" "${xen_version}" "${version}" "${type#init-}")"
      else
	  title="$(gettext_printf "%s, with Xen %s and Linux %s" "${os}" "${xen_version}" "${version}")"
      fi
      replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
      if [ x"Xen ${xen_version}>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
         quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
         title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
         grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
      fi
      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
  else
      title="$(gettext_printf "%s, with Xen hypervisor" "${os}")"
      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
  fi
  if [ x$type != xrecovery ] ; then
      save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
  fi

  if [ -z "${prepare_boot_cache}" ]; then
    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
  fi
  printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
  xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
  lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
  sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$xmessage" | grub_quote)'
        if [ "\$grub_platform" = "pc" -o "\$grub_platform" = "" ]; then
            xen_rm_opts=
        else
            xen_rm_opts="no-real-mode edd=off"
        fi
	${xen_loader}	${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
	echo	'$(echo "$lmessage" | grub_quote)'
	${module_loader}	${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
EOF
  if test -n "${initrd}" ; then
    # TRANSLATORS: ramdisk isn't identifier. Should be translated.
    message="$(gettext_printf "Loading initial ramdisk ...")"
    initrd_path=
    for i in ${initrd}; do
       initrd_path="${initrd_path} ${rel_dirname}/${i}"
    done
    sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
	${module_loader}	--nounzip   $(echo $initrd_path)
EOF
  fi
  sed "s/^/$submenu_indentation/" << EOF
}
EOF
}

linux_list=
for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
    if grub_file_is_not_garbage "$i"; then
    	basename=$(basename $i)
	version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
	dirname=$(dirname $i)
	config=
	for j in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
	    if test -e "${j}" ; then
		config="${j}"
		break
	    fi
	done
        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx "CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then linux_list="$linux_list $i" ; fi
    fi
done
if [ "x${linux_list}" = "x" ] ; then
    exit 0
fi

file_is_not_sym () {
    case "$1" in
	*/xen-syms-*)
	    return 1;;
	*)
	    return 0;;
    esac
}

xen_list=
for i in /boot/xen*; do
    if grub_file_is_not_garbage "$i" && file_is_not_sym "$i" ; then xen_list="$xen_list $i" ; fi
done
prepare_boot_cache=
boot_device_id=

title_correction_code=

machine=`uname -m`

case "$machine" in
    i?86) GENKERNEL_ARCH="x86" ;;
    mips|mips64) GENKERNEL_ARCH="mips" ;;
    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
    arm*) GENKERNEL_ARCH="arm" ;;
    *) GENKERNEL_ARCH="$machine" ;;
esac

# Extra indentation to add to menu entries in a submenu. We're not in a submenu
# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
submenu_indentation=""

is_top_level=true

while [ "x${xen_list}" != "x" ] ; do
    list="${linux_list}"
    current_xen=`version_find_latest $xen_list`
    xen_basename=`basename ${current_xen}`
    xen_dirname=`dirname ${current_xen}`
    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
    xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
    if [ -z "$boot_device_id" ]; then
	boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
    fi
    if [ "x$is_top_level" != xtrue ]; then
	echo "	submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
    fi
    if ($grub_file --is-arm64-efi $current_xen); then
	xen_loader="xen_hypervisor"
	module_loader="xen_module"
    else
	if ($grub_file --is-x86-multiboot2 $current_xen); then
	    xen_loader="multiboot2"
	    module_loader="module2"
	else
	    xen_loader="multiboot"
	    module_loader="module"
        fi
    fi

    initrd_early=
    for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
             ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
       if test -e "${xen_dirname}/${i}" ; then
          initrd_early="${initrd_early} ${i}"
       fi
    done

    while [ "x$list" != "x" ] ; do
	linux=`version_find_latest $list`
	gettext_printf "Found linux image: %s\n" "$linux" >&2
	basename=`basename $linux`
	dirname=`dirname $linux`
	rel_dirname=`make_system_path_relative_to_its_root $dirname`
	version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
	alt_version=`echo $version | sed -e "s,\.old$,,g"`
	linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"

	initrd_real=
	for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
	   "initrd-${version}" "initramfs-${version}.img" \
	   "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
	   "initrd-${alt_version}" "initramfs-${alt_version}.img" \
	   "initramfs-genkernel-${version}" \
	   "initramfs-genkernel-${alt_version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" ; do
	    if test -e "${dirname}/${i}" ; then
		initrd_real="$i"
		break
	    fi
	done

	initrd=
	if test -n "${initrd_early}" || test -n "${initrd_real}"; then
	    initrd="${initrd_early} ${initrd_real}"

	    initrd_display=
	    for i in ${initrd}; do
		initrd_display="${initrd_display} ${dirname}/${i}"
	    done
	    gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
	fi

	if test -z "${initrd_real}"; then
    # "UUID=" magic is parsed by initrds.  Since there's no initrd, it can't work here.
	    if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
		|| [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then

		linux_root_device_thisversion=${GRUB_DEVICE}
	    else
		linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
	    fi
	fi

	if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
	    linux_entry "${OS}" "${version}" "${xen_version}" simple \
		"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"

	    submenu_indentation="$grub_tab$grub_tab"
    
	    if [ -z "$boot_device_id" ]; then
		boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
	    fi
            # TRANSLATORS: %s is replaced with an OS name
	    echo "submenu '$(gettext_printf "Advanced options for %s (with Xen hypervisor)" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
	echo "	submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
	   is_top_level=false
	fi

	linux_entry "${OS}" "${version}" "${xen_version}" advanced \
	    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
	for supported_init in ${SUPPORTED_INITS}; do
	    init_path="${supported_init#*:}"
	    if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "$(readlink -f "${init_path}")" ]; then
		linux_entry "${OS}" "${version}" "${xen_version}" "init-${supported_init%%:*}" \
		    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"

	    fi
	done
	if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
	    linux_entry "${OS}" "${version}" "${xen_version}" recovery \
		"single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}"
	fi

	list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
    done
    if [ x"$is_top_level" != xtrue ]; then
	echo '	}'
    fi
    xen_list=`echo $xen_list | tr ' ' '\n' | fgrep -vx "$current_xen" | tr '\n' ' '`
done

# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
if [ x"$is_top_level" != xtrue ]; then
  echo '}'
fi

echo "$title_correction_code"

========================= sdb2/etc/grub.d/30_os-prober =========================

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
quick_boot="1"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

. "$pkgdatadir/grub-mkconfig_lib"

found_other_os=

adjust_timeout () {
  if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
    cat << EOF
set timeout_style=menu
if [ "\${timeout}" = 0 ]; then
  set timeout=10
fi
EOF
  fi
}

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  exit 0
fi

if [ -z "`which os-prober 2> /dev/null`" ] || [ -z "`which linux-boot-prober 2> /dev/null`" ] ; then
  # missing os-prober and/or linux-boot-prober
  exit 0
fi

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
  # empty os-prober output, nothing doing
  exit 0
fi

osx_entry() {
    found_other_os=1
    if [ x$2 = x32 ]; then
        # TRANSLATORS: it refers to kernel architecture (32-bit)
	bitstr="$(gettext "(32-bit)")"
    else
        # TRANSLATORS: it refers to kernel architecture (64-bit)
	bitstr="$(gettext "(64-bit)")"
    fi
    # TRANSLATORS: it refers on the OS residing on device %s
    onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
        cat << EOF
menuentry '$(echo "${LONGNAME} $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'osprober-xnu-$2-$(grub_get_device_id "${DEVICE}")'  {
EOF
	save_default_entry | grub_add_tab
	prepare_grub_to_access_device ${DEVICE} | grub_add_tab
	cat << EOF
        load_video
        set do_resume=0
        if [ /var/vm/sleepimage -nt10 / ]; then
           if xnu_resume /var/vm/sleepimage; then
             set do_resume=1
           fi
        fi
        if [ \$do_resume = 0 ]; then
           xnu_uuid ${OSXUUID} uuid
           if [ -f /Extra/DSDT.aml ]; then
              acpi -e /Extra/DSDT.aml
           fi
           if [ /kernelcache -nt /System/Library/Extensions ]; then
              $1 /kernelcache boot-uuid=\${uuid} rd=*uuid
           elif [ -f /System/Library/Kernels/kernel ]; then
              $1 /System/Library/Kernels/kernel boot-uuid=\${uuid} rd=*uuid
              xnu_kextdir /System/Library/Extensions
           else
              $1 /mach_kernel boot-uuid=\${uuid} rd=*uuid
              if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
                xnu_mkext /System/Library/Extensions.mkext
              else
                xnu_kextdir /System/Library/Extensions
              fi
           fi
           if [ -f /Extra/Extensions.mkext ]; then
              xnu_mkext /Extra/Extensions.mkext
           fi
           if [ -d /Extra/Extensions ]; then
              xnu_kextdir /Extra/Extensions
           fi
           if [ -f /Extra/devprop.bin ]; then
              xnu_devprop_load /Extra/devprop.bin
           fi
           if [ -f /Extra/splash.jpg ]; then
              insmod jpeg
              xnu_splash /Extra/splash.jpg
           fi
           if [ -f /Extra/splash.png ]; then
              insmod png
              xnu_splash /Extra/splash.png
           fi
           if [ -f /Extra/splash.tga ]; then
              insmod tga
              xnu_splash /Extra/splash.tga
           fi
        fi
}
EOF
}

used_osprober_linux_ids=

wubi=

for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"
  if UUID="`${grub_probe} --target=fs_uuid --device ${DEVICE%@*}`"; then
    EXPUUID="$UUID"

    if [ x"${DEVICE#*@}" != x ] ; then
      EXPUUID="${EXPUUID}@${DEVICE#*@}"
    fi

    if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then
      echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2
      continue
    fi
  fi

  BTRFS="`echo ${OS} | cut -d ':' -f 5`"
  if [ "x$BTRFS" = "xbtrfs" ]; then
	BTRFSuuid="`echo ${OS} | cut -d ':' -f 6`"
	BTRFSsubvol="`echo ${OS} | cut -d ':' -f 7`"
  fi

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  # os-prober returns text string followed by optional counter
  CLASS="--class $(echo "${LABEL}" | LC_ALL=C sed 's,[[:digit:]]*$,,' | cut -d' ' -f1 | tr 'A-Z' 'a-z' | LC_ALL=C sed 's,[^[:alnum:]_],_,g')"

  gettext_printf "Found %s on %s\n" "${LONGNAME}" "${DEVICE}" >&2

  case ${BOOT} in
    chain)

      case ${LONGNAME} in
	Windows*)
	  if [ -z "$wubi" ]; then
	    if [ -x /usr/share/lupin-support/grub-mkimage ] && \
	       /usr/share/lupin-support/grub-mkimage --test; then
	      wubi=yes
	    else
	      wubi=no
	    fi
	  fi
	  if [ "$wubi" = yes ]; then
	    echo "Skipping ${LONGNAME} on Wubi system" >&2
	    continue
	  fi
	  ;;
      esac

      found_other_os=1
	  onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' $CLASS --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | grub_add_tab
      prepare_grub_to_access_device ${DEVICE} | grub_add_tab

      if [ x"`${grub_probe} --device ${DEVICE} --target=partmap`" = xmsdos ]; then
	  cat << EOF
	parttool \${root} hidden-
EOF
      fi

      case ${LONGNAME} in
	Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
	;;
	*)
	  cat << EOF
	drivemap -s (hd0) \${root}
EOF
	;;
      esac

      cat <<EOF
	chainloader +1
}
EOF
    ;;
    efi)

	found_other_os=1
	EFIPATH=${DEVICE#*@}
	DEVICE=${DEVICE%@*}
	onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' $CLASS --class os \$menuentry_id_option 'osprober-efi-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | sed -e "s/^/\t/"
      prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"

      cat <<EOF
	chainloader ${EFIPATH}
}
EOF
    ;;
    linux)
      if [ "x$BTRFS" = "xbtrfs" ]; then
         LINUXPROBED="`linux-boot-prober btrfs ${BTRFSuuid} ${BTRFSsubvol}  2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
      else
         LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
      fi
      prepare_boot_cache=
      boot_device_id=
      is_top_level=true
      title_correction_code=
      OS="${LONGNAME}"

      for LINUX in ${LINUXPROBED} ; do
        LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
        LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
        LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
        LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
        LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
        LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"

        if [ -z "${LLABEL}" ] ; then
          LLABEL="${LONGNAME}"
        fi

	if [ "${LROOT}" != "${LBOOT}" ]; then
	  LKERNEL="${LKERNEL#/boot}"
	  LINITRD="${LINITRD#/boot}"
	fi

	if [ -z "${prepare_boot_cache}" ]; then
	  prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | grub_add_tab)"
	  [ "${prepare_boot_cache}" ] || continue
	fi

	found_other_os=1
	onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
	recovery_params="$(echo "${LPARAMS}" | grep 'single\|recovery')" || true
	counter=1
	while echo "$used_osprober_linux_ids" | grep 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id' > /dev/null; do
	    counter=$((counter+1));
	done
	if [ -z "$boot_device_id" ]; then
	    boot_device_id="$(grub_get_device_id "${DEVICE}")"
	fi
	used_osprober_linux_ids="$used_osprober_linux_ids 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id'"

	if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
            cat << EOF
menuentry '$(echo "$OS $onstr" | grub_quote)' $CLASS --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' {
EOF
	    save_default_entry | grub_add_tab
	    printf '%s\n' "${prepare_boot_cache}"
	    cat <<  EOF
	linux ${LKERNEL} ${LPARAMS}
EOF
            if [ -n "${LINITRD}" ] ; then
          cat << EOF
	initrd ${LINITRD}
EOF
            fi
        cat << EOF
}
EOF
	    echo "submenu '$(gettext_printf "Advanced options for %s" "${OS} $onstr" | grub_quote)' \$menuentry_id_option 'osprober-gnulinux-advanced-$boot_device_id' {"
	    is_top_level=false
	fi
	title="${LLABEL} $onstr"
        cat << EOF
	menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
EOF
	save_default_entry | sed -e "s/^/$grub_tab$grub_tab/"
	printf '%s\n' "${prepare_boot_cache}" | grub_add_tab
	cat <<  EOF
		linux ${LKERNEL} ${LPARAMS}
EOF
        if [ -n "${LINITRD}" ] ; then
            cat << EOF
		initrd ${LINITRD}
EOF
        fi
        cat << EOF
	}
EOF
	if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
	    replacement_title="$(echo "Advanced options for ${OS} $onstr" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
	    quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
	    title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
	    grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
	fi
      done
      if [ x"$is_top_level" != xtrue ]; then
	  echo '}'
      fi
      echo "$title_correction_code"
    ;;
    macosx)
      if [ "${UUID}" ]; then
	OSXUUID="${UUID}"
	osx_entry xnu_kernel 32
	osx_entry xnu_kernel64 64
      fi
    ;;
    hurd)
      found_other_os=1
      onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
      cat << EOF
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu --class os \$menuentry_id_option 'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
EOF
      save_default_entry | grub_add_tab
      prepare_grub_to_access_device ${DEVICE} | grub_add_tab
      grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
      mach_device="`echo "${grub_device}" | sed -e 's/(\(hd.*\),msdos\(.*\))/\1s\2/'`"
      grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
      case "${grub_fs}" in
	*fs)	hurd_fs="${grub_fs}" ;;
	*)	hurd_fs="${grub_fs}fs" ;;
      esac
      cat << EOF
	multiboot /boot/gnumach.gz root=device:${mach_device}
	module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
			--multiboot-command-line='\${kernel-command-line}' \\
			--host-priv-port='\${host-port}' \\
			--device-master-port='\${device-port}' \\
			--exec-server-task='\${exec-task}' -T typed '\${root}' \\
			'\$(task-create)' '\$(task-resume)'
	module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
}
EOF
    ;;
    minix)
	  cat << EOF
menuentry "${LONGNAME} (on ${DEVICE}, Multiboot)" {
EOF
         save_default_entry | sed -e "s/^/\t/"
         prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
	 cat << EOF
	multiboot /boot/image_latest
}
EOF
    ;;
    *)
      # TRANSLATORS: %s is replaced by OS name.
      gettext_printf "%s is not yet supported by grub-mkconfig.\n" "  ${LONGNAME}" >&2
    ;;
  esac
done

adjust_timeout

======================= sdb2/etc/grub.d/30_uefi-firmware =======================

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2012  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

. "${datarootdir}/grub/grub-mkconfig_lib"

efi_vars_dir=/sys/firmware/efi/vars
EFI_GLOBAL_VARIABLE=8be4df61-93ca-11d2-aa0d-00e098032b8c
OsIndications="$efi_vars_dir/OsIndicationsSupported-$EFI_GLOBAL_VARIABLE/data"

if [ -e "$OsIndications" ] && \
   [ "$(( $(printf 0x%x \'"$(cat $OsIndications | cut -b1)") & 1 ))" = 1 ]; then
  LABEL="UEFI Firmware Settings"

  gettext_printf "Adding boot menu entry for UEFI Firmware Settings\n" >&2

  onstr="$(gettext_printf "(on %s)" "${DEVICE}")"

  cat << EOF
menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' {
	fwsetup
}
EOF
fi

========================== sdb2/etc/grub.d/40_custom ===========================

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

========================== sdb2/etc/grub.d/41_custom ===========================

#!/bin/sh
cat <<EOF
if [ -f  \${config_directory}/custom.cfg ]; then
  source \${config_directory}/custom.cfg
elif [ -z "\${config_directory}" -a -f  \$prefix/custom.cfg ]; then
  source \$prefix/custom.cfg;
fi
EOF


============================ sdb2/etc/grub.d/README ============================


All executable files in this directory are processed in shell expansion order.

  00_*: Reserved for 00_header.
  10_*: Native boot entries.
  20_*: Third party apps (e.g. memtest86+).

The number namespace in-between is configurable by system installer and/or
administrator.  For example, you can add an entry to boot another OS as
01_otheros, 11_otheros, etc, depending on the position you want it to occupy in
the menu; and then adjust the default setting via /etc/default/grub.


======================== Unknown MBRs/Boot Sectors/etc =========================

Unknown BootLoader on sda

00000000  45 52 08 00 00 00 90 90  00 00 00 00 00 00 00 00  |ER..............|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  33 ed fa 8e d5 bc 00 7c  fb fc 66 31 db 66 31 c9  |3......|..f1.f1.|
00000030  66 53 66 51 06 57 8e dd  8e c5 52 be 00 7c bf 00  |fSfQ.W....R..|..|
00000040  06 b9 00 01 f3 a5 ea 4b  06 00 00 52 b4 41 bb aa  |.......K...R.A..|
00000050  55 31 c9 30 f6 f9 cd 13  72 16 81 fb 55 aa 75 10  |U1.0....r...U.u.|
00000060  83 e1 01 74 0b 66 c7 06  f3 06 b4 42 eb 15 eb 02  |...t.f.....B....|
00000070  31 c9 5a 51 b4 08 cd 13  5b 0f b6 c6 40 50 83 e1  |1.ZQ....[...@P..|
00000080  3f 51 f7 e1 53 52 50 bb  00 7c b9 04 00 66 a1 b0  |?Q..SRP..|...f..|
00000090  07 e8 44 00 0f 82 80 00  66 40 80 c7 02 e2 f2 66  |..D.....f@.....f|
000000a0  81 3e 40 7c fb c0 78 70  75 09 fa bc ec 7b ea 44  |.>@|..xpu....{.D|
000000b0  7c 00 00 e8 83 00 69 73  6f 6c 69 6e 75 78 2e 62  ||.....isolinux.b|
000000c0  69 6e 20 6d 69 73 73 69  6e 67 20 6f 72 20 63 6f  |in missing or co|
000000d0  72 72 75 70 74 2e 0d 0a  66 60 66 31 d2 66 03 06  |rrupt...f`f1.f..|
000000e0  f8 7b 66 13 16 fc 7b 66  52 66 50 06 53 6a 01 6a  |.{f...{fRfP.Sj.j|
000000f0  10 89 e6 66 f7 36 e8 7b  c0 e4 06 88 e1 88 c5 92  |...f.6.{........|
00000100  f6 36 ee 7b 88 c6 08 e1  41 b8 01 02 8a 16 f2 7b  |.6.{....A......{|
00000110  cd 13 8d 64 10 66 61 c3  e8 1e 00 4f 70 65 72 61  |...d.fa....Opera|
00000120  74 69 6e 67 20 73 79 73  74 65 6d 20 6c 6f 61 64  |ting system load|
00000130  20 65 72 72 6f 72 2e 0d  0a 5e ac b4 0e 8a 3e 62  | error...^....>b|
00000140  04 b3 07 cd 10 3c 0a 75  f1 cd 18 f4 eb fd 00 00  |.....<.u........|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  68 45 39 00 00 00 00 00  9f 46 41 73 00 00 80 00  |hE9......FAs....|
000001c0  01 00 00 99 e0 fc 00 00  00 00 40 c6 4c 00 00 fe  |..........@.L...|
000001d0  ff ff ef fe ff ff 04 d5  3c 00 00 1f 00 00 00 59  |........<......Y|
000001e0  61 39 83 a7 7e e9 00 d0  4c 00 00 38 2b 00 00 00  |a9..~...L..8+...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200


=============================== StdErr Messages ================================

File descriptor 63 (pipe:[187078]) leaked on lvs invocation. Parent PID 78056: /bin/bash

Suggested repair: ______________________________________________________________

The default repair of the Boot-Repair utility would reinstall the grub-efi-amd64-signed of
sdb2,
using the following options:        sdb1/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 20.10 entry (sdb1/efi/****/shim****.efi (**** will be updated in the final message) file) !

Dernière modification par Laadna (Le 16/01/2021, à 09:25)

Hors ligne

#65 Le 16/01/2021, à 10:14

moko138

Re : {Résolu] Pas de signal vers l'écran

Tu as maintenant :
"nomodeset" dans /etc/default/grub (pis-aller, sans doute devenu superflu),
5.8.0-33, (qui marchait)
5.8.0-36 (qui ne marchait pas sans "nomodeset")
et 5.8.0-38 (nouvellement installé),
et surtout l'affichage par défaut du menu de grub !  smile
  J'aurais donc tendance à dire "c'est ce qu'on voulait ; redémarre et tente les trois".


Mais pour ta question :
"Dans le rapport il y a des instructions. Est-ce qu'elles me concernent, et si oui dois-je m'en occuper avant ou après avoir reboot ?"
je n'ai pas toutes les compétences requises, donc je viens de redemander du renfort.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#66 Le 16/01/2021, à 10:49

Laadna

Re : {Résolu] Pas de signal vers l'écran

Aucun changement après reboot. J'ai l'impression que le délai de 10 secondes d'affichage du grub est pris en compte (le clavier clignote lorsque le boot s'opère et il m'a semblé qu'il lui fallait plus de temps, mais le dernier essai date d'il y a plusieurs jours). Cependant rien ne s'affiche, et le buzzer s'active toujours.

Je pense que j'ai deux problèmes joints. L'un étant celui que tu tentes de résoudre avec moi (la mise à jour qui empêche soit le boot soit l'affichage de mon ubuntu), l'autre existe depuis que j'ai cet ordinateur mais je ne l'ai jamais identifié comme un problème jusque là (le post, bios, grub ne s'affiche pas, l'écran s'active uniquement lorsqu'un os boot).

J'ai donc réinstallé un 20.04.1 comme tu me l'a suggéré, parce que je ne voyais pas où tout ça allait me mener et une semaine sans ordi c'est vraiment long. Le boot s'est fait sans difficulté après installation (toujours sans afficher post, bios, grub ceci dit). Et je vais donc m'empresser de bloquer les mises à jour problématiques.

Je vais voir comment résoudre ce problème d'affichage avant le boot, mais au moins je peux faire autre chose en même temps. big_smile

Hors ligne

#67 Le 16/01/2021, à 11:18

moko138

Re : {Résolu] Pas de signal vers l'écran

Laadna a écrit :

J'ai donc réinstallé un 20.04.1 (...)

OK ! Ce sera plus simple.

Le boot s'est fait sans difficulté après installation (toujours sans afficher post, bios, grub ceci dit).

Post & bios :
Indique le nom complet de ton ordi.

Le menu de grub,
par défaut, ne s'affiche pas quand il y a un seul système. C'est à toi de l'imposer, cf. grub


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#68 Le 16/01/2021, à 11:47

Laadna

Re : {Résolu] Pas de signal vers l'écran

moko138 a écrit :

Le menu de grub,
par défaut, ne s'affiche pas quand il y a un seul système. C'est à toi de l'imposer, cf. grub

En effet j'avais oublié. Ceci dit, bien que les arguments dans le /etc/default/grub soient time=0 et style=hidden, l'update du grub indique qu'il y avait deux items :

benoit@kubuntu:~$ sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-5.4.0-62-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.4.0-62-generic
Image Linux trouvée : /boot/vmlinuz-5.4.0-42-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.4.0-42-generic

D'ailleurs la mise à jour du grub est bloquée sur cette dernière ligne depuis bientôt une demi-heure... Je n'aime pas ça.

Le reboot se passe normalement. Le délai avant le boot est bien allongé d'une dizaine de secondes, mais toujours pas de grub qui s'affiche. Ni de bip d'ailleurs.



Qu'est-ce que tu entends par  "nom complet de l'ordi" ? La liste des composants matériels ?
Carte mère MSI A520M-a pro
Carte graphique AMD Radeon Sapphire RX 580 4GB
Processeur AMD AM4 Ryzen 5 3600
Mémoire DDR4-3000 8GB PC4-24000U G.Skill Aegis x2
Disque dur SSD 240GB ADATA Ultimate SU630

J'ai au moins trouvé pour quelle raison la carte mère n'affiche rien via ses ports graphiques : apparemment le processeur ne le permet pas.

Dernière modification par Laadna (Le 17/01/2021, à 09:53)

Hors ligne