Linux grub: Difference between revisions
m (Text replacement - "</source" to "</syntaxhighlight") |
|||
(One intermediate revision by the same user not shown) | |||
Line 47: | Line 47: | ||
==Normal grub is bootet, now start the Kernel== | ==Normal grub is bootet, now start the Kernel== | ||
Example for LVM | ===Example for LVM=== | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
insmod gzio | insmod gzio | ||
Line 58: | Line 58: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Example for ZFS-Root | ===Example for ZFS-Root=== | ||
<syntaxhighlight lang=bash> | <syntaxhighlight lang=bash> | ||
insmod gzio | insmod gzio | ||
insmod part_msdos | insmod part_msdos | ||
insmod part_gpt | |||
insmod zfs | insmod zfs | ||
set root='hd0,msdos4' | set root='hd0,msdos4' | ||
Line 67: | Line 68: | ||
initrd /ROOT/ubuntu-15.04@/boot/initrd.img-4.4.0-57-generic | initrd /ROOT/ubuntu-15.04@/boot/initrd.img-4.4.0-57-generic | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===Example for ZFS-Root on GPT with known nothing about the location of kernel and initrd=== | |||
<br><pre><TAB> means press tab key.</pre> | |||
<syntaxhighlight lang=bash> | |||
grub> insmod gzio | |||
grub> insmod part_gpt | |||
grub> insmod part_msdos | |||
grub> insmod zfs | |||
grub> ls (<TAB> | |||
Possible devices are: | |||
proc memdisk hd0 hd1 hd2 | |||
</syntaxhighlight> | |||
So we have several disks. Let us see what partitions we have: | |||
<syntaxhighlight lang=bash highlight="5"> | |||
grub> ls (hd0<TAB> | |||
Possible partitions are: | |||
Device hd0: No known filesystem detected - Sector size 512B - Total size 5242880KiB | |||
Partition hd0,gpt1: Filesystem type fat - Label `EFI', UID 4711-6C33 - Partition start at 1024KiB - Total size 524288KiB | |||
Partition hd0,gpt3: Filesystem type zfs - Label `bpool' - Last modification time 2024-07-01 04:36:00 Monday, UUID 001702272575c1blabla - Partition start at 525312KiB - Total size 4717551.5KiB | |||
Partition hd0,gpt5: No known filesystem detected - Partition start at 24KiB - Total size 1000KiB | |||
</syntaxhighlight> | |||
Now we know more about the possible partitions and due to the filesystem type and the labels we can see hd0,gpt3 would be a good start to look at. But the Last modification time looks a little old. We will see (Tell me why I don't like Mondays...). | |||
<syntaxhighlight lang=bash> | |||
grub> ls (hd0,gpt3)/<TAB> | |||
Possible files are: | |||
@/ BOOT/ | |||
</syntaxhighlight> | |||
You can use tab until you found the right dataset and than /@/ at the end: | |||
<syntaxhighlight lang=bash> | |||
grub> ls (hd0,gpt3)/BOOT/ubuntu_flupdy/@/ | |||
efi grub | |||
grub> | |||
</syntaxhighlight> | |||
Soooo... now we know, our dataset was not properly mounted when configuring grub. But we migrated from all in rpool to rpool and bpool. Maybe we have a snapshot on rpool where still a /boot with a kernel dangles around... | |||
<syntaxhighlight lang=bash highlight="5"> | |||
grub> ls (hd1,gpt1)/ROOT/<TAB> | |||
... | |||
@zfs-auto-snap_daily-2024-06-31-06.42.00--7d/ | |||
@zfs-auto-snap_daily-2024-06-30-06.42.00--7d/ | |||
@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/ | |||
@zfs-auto-snap_daily-2024-06-28-06.42.00--7d/ | |||
@zfs-auto-snap_daily-2024-06-27-06.44.00--7d/ | |||
@zfs-auto-snap_daily-2024-06-26-06.42.00--7d/ | |||
... | |||
grub> ls (hd1,gpt1)/ROOT/ubuntu_flupdy/@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/boot/ | |||
vmlinuz-6.5.0-45-generic ... | |||
</syntaxhighlight> | |||
YES! That is what we searched for! | |||
<syntaxhighlight lang=bash> | |||
set root='hd1,gpt1' | |||
linux "/ROOT/ubuntu_flupdy/@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/boot/vmlinuz-6.5.0-45-generic" root=ZFS="rpool/ROOT/ubuntu_flupdy" ro single nomodeset dis_ucode_ldr text console=tty0 console=ttyS0,115200n8 nosplash init_on_alloc=0 | |||
initrd "/ROOT/ubuntu_flupdy/@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/boot/initrd.img-6.5.0-45-generic" | |||
boot | |||
</syntaxhighlight> | |||
Here we go! |
Latest revision as of 12:24, 1 August 2024
grub rescue>
The problem:
...
Entering rescue mode...
grub rescue>
Get into the normal grub
Find your devices:
grub rescue> ls
Find the directory where the normal.mod file resides
In this example we have LVM and the /boot/grub is in VG vg-root and the LV lv-root.
grub rescue> ls (lvm/vg--root-lv--root)/boot/grub/i386-pc
... normal.mod ...
Set the prefix to the right place
grub rescue> set prefix=(lvm/vg--root-lv--root)/boot/grub
Now you can load and start the module called "normal"
grub rescue> insmod normal
grub rescue> normal
If the menu not occurs you get something like this:
GNU GRUB version 1.99,5.11.0.175.2.0.0.42.2
Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists possible
device or file completions.
grub>
Normal grub is bootet, now start the Kernel
Example for LVM
insmod gzio
insmod part_msdos
insmod lvm
insmod ext2
set root='lvmid/KAlPF4-Qb8I-Sx41-10cC-lACw-Msoh-3qEohv/pmE9Nt-rLG3-FlNM-CwOT-hy42-gSnm-fZSn3l'
linux /boot/vmlinuz-4.4.0-53-generic root=/dev/mapper/vg--root-lv--root ro
initrd /boot/initrd.img-4.4.0-53-generic
Example for ZFS-Root
insmod gzio
insmod part_msdos
insmod part_gpt
insmod zfs
set root='hd0,msdos4'
linux /ROOT/ubuntu-15.04@/boot/vmlinuz-4.4.0-57-generic root=ZFS=rpool/ROOT/ubuntu-15.04 boot=zfs zfs_force=1 ro quiet splash nomdmonddf nomdmonisw $vt_handoff
initrd /ROOT/ubuntu-15.04@/boot/initrd.img-4.4.0-57-generic
Example for ZFS-Root on GPT with known nothing about the location of kernel and initrd
<TAB> means press tab key.
grub> insmod gzio
grub> insmod part_gpt
grub> insmod part_msdos
grub> insmod zfs
grub> ls (<TAB>
Possible devices are:
proc memdisk hd0 hd1 hd2
So we have several disks. Let us see what partitions we have:
grub> ls (hd0<TAB>
Possible partitions are:
Device hd0: No known filesystem detected - Sector size 512B - Total size 5242880KiB
Partition hd0,gpt1: Filesystem type fat - Label `EFI', UID 4711-6C33 - Partition start at 1024KiB - Total size 524288KiB
Partition hd0,gpt3: Filesystem type zfs - Label `bpool' - Last modification time 2024-07-01 04:36:00 Monday, UUID 001702272575c1blabla - Partition start at 525312KiB - Total size 4717551.5KiB
Partition hd0,gpt5: No known filesystem detected - Partition start at 24KiB - Total size 1000KiB
Now we know more about the possible partitions and due to the filesystem type and the labels we can see hd0,gpt3 would be a good start to look at. But the Last modification time looks a little old. We will see (Tell me why I don't like Mondays...).
grub> ls (hd0,gpt3)/<TAB>
Possible files are:
@/ BOOT/
You can use tab until you found the right dataset and than /@/ at the end:
grub> ls (hd0,gpt3)/BOOT/ubuntu_flupdy/@/
efi grub
grub>
Soooo... now we know, our dataset was not properly mounted when configuring grub. But we migrated from all in rpool to rpool and bpool. Maybe we have a snapshot on rpool where still a /boot with a kernel dangles around...
grub> ls (hd1,gpt1)/ROOT/<TAB>
...
@zfs-auto-snap_daily-2024-06-31-06.42.00--7d/
@zfs-auto-snap_daily-2024-06-30-06.42.00--7d/
@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/
@zfs-auto-snap_daily-2024-06-28-06.42.00--7d/
@zfs-auto-snap_daily-2024-06-27-06.44.00--7d/
@zfs-auto-snap_daily-2024-06-26-06.42.00--7d/
...
grub> ls (hd1,gpt1)/ROOT/ubuntu_flupdy/@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/boot/
vmlinuz-6.5.0-45-generic ...
YES! That is what we searched for!
set root='hd1,gpt1'
linux "/ROOT/ubuntu_flupdy/@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/boot/vmlinuz-6.5.0-45-generic" root=ZFS="rpool/ROOT/ubuntu_flupdy" ro single nomodeset dis_ucode_ldr text console=tty0 console=ttyS0,115200n8 nosplash init_on_alloc=0
initrd "/ROOT/ubuntu_flupdy/@zfs-auto-snap_daily-2024-06-29-06.43.00--7d/boot/initrd.img-6.5.0-45-generic"
boot
Here we go!