#51 Le 14/01/2021, à 15:36
- Zakhar
Re : {Résolu] Pas de signal vers l'écran
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, à 16:23
- moko138
Re : {Résolu] Pas de signal vers l'écran
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...
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, à 16:27
- Laadna
Re : {Résolu] Pas de signal vers l'écran
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.
Dernière modification par Laadna (Le 14/01/2021, à 16:28)
Hors ligne
#54 Le 14/01/2021, à 20: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).
___
(*) 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, à 21: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.
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).
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.
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, à 16:20)
Hors ligne
#56 Le 14/01/2021, à 21: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, à 01: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 : »
Dernière modification par cqfd93 (Le 15/01/2021, à 11:54)
Hors ligne
#58 Le 15/01/2021, à 02: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, à 02: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, à 09: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 : »
Dernière modification par cqfd93 (Le 15/01/2021, à 16:21)
Hors ligne
#61 Le 15/01/2021, à 13:18
- moko138
Re : {Résolu] Pas de signal vers l'écran
Oui, c'est exactement ça.
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#62 Le 15/01/2021, à 17:13
- Laadna
Re : {Résolu] Pas de signal vers l'écran
Oui, c'est exactement ça.
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, à 23: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, à 10: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, à 10:25)
Hors ligne
#65 Le 16/01/2021, à 11: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 !
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, à 11: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.
Hors ligne
#67 Le 16/01/2021, à 12:18
- moko138
Re : {Résolu] Pas de signal vers l'écran
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, à 12:47
- Laadna
Re : {Résolu] Pas de signal vers l'écran
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, à 10:53)
Hors ligne