Booting via GRUB 2 prompt: Difference between revisions
No edit summary |
No edit summary |
||
Line 17: | Line 17: | ||
was added to the kernel parameters to ensure that all Ethernet device names use the naming scheme '''<tt>ethX</tt>''' for consistency. That part is not necessary. | was added to the kernel parameters to ensure that all Ethernet device names use the naming scheme '''<tt>ethX</tt>''' for consistency. That part is not necessary. | ||
You'll then want to update your initial ramdisk and re-install GRUB to be on the safe side. | You'll then want to update your initial ramdisk, update grub, and re-install GRUB to be on the safe side. | ||
* Verify /boot is mounted from your boot pool: | * Verify /boot is mounted from your boot pool: | ||
root@daytapod1 ~ $ findmnt /boot/ | root@daytapod1 ~ $ findmnt /boot/ | ||
Line 24: | Line 24: | ||
* Update initial ramdisks for all kernels: | * Update initial ramdisks for all kernels: | ||
root@daytapod1 ~ $ update-initramfs -k all -u -v | root@daytapod1 ~ $ update-initramfs -k all -u -v | ||
* Update grub config: | |||
root@daytapod1 ~ $ update-grub | |||
Sourcing file `/etc/default/grub' | |||
Sourcing file `/etc/default/grub.d/init-select.cfg' | |||
Generating grub configuration file ... | |||
done | |||
* Install grub on all disks in the boot pool: | * Install grub on all disks in the boot pool: | ||
root@daytapod1 ~ $ zpool status bpool | root@daytapod1 ~ $ zpool status bpool |
Revision as of 04:07, 6 February 2021
Did your update-initramfs not complete before you rebooted your zfs-on-root Ubuntu install? Here's how to boot it from the GRUB prompt using a previous kernel, assuming that your boot filesystem is on (hd0,gpt3), the zfs dataset name of your boot filesystem is bpool/BOOT/ubuntu/HEAD, the zfs dataset name of your root filesystem is rpool/ROOT/ubuntu/HEAD, and you're wanting to boot version 5.4.0-42-generic of the kernel:
grub> insmod zfs grub> set root=(hd0,gpt3) grub> linux /BOOT/ubuntu/HEAD/@/vmlinuz-5.4.0-42-generic boot=zfs zfs_force=1 root=ZFS=rpool/ROOT/ubuntu/HEAD net.ifnames=0 biosdevname=0 grub> initrd /BOOT/ubuntu/HEAD/@/initrd.img-5.4.0-42-generic grub> boot
That should load the kernel and initial ramdisk. If you are then dropped to an (initramfs) shell, you'll have to manually import the zpool containing the root filesystem:
(initramfs) /sbin/modprobe zfs (initramfs) zpool import rpool -R /root (initramfs) exit
Note: The following:
net.ifnames=0 biosdevname=0
was added to the kernel parameters to ensure that all Ethernet device names use the naming scheme ethX for consistency. That part is not necessary.
You'll then want to update your initial ramdisk, update grub, and re-install GRUB to be on the safe side.
- Verify /boot is mounted from your boot pool:
root@daytapod1 ~ $ findmnt /boot/ TARGET SOURCE FSTYPE OPTIONS /boot bpool/BOOT/ubuntu/HEAD zfs rw,nodev,noatime,xattr,posixacl
- Update initial ramdisks for all kernels:
root@daytapod1 ~ $ update-initramfs -k all -u -v
- Update grub config:
root@daytapod1 ~ $ update-grub Sourcing file `/etc/default/grub' Sourcing file `/etc/default/grub.d/init-select.cfg' Generating grub configuration file ... done
- Install grub on all disks in the boot pool:
root@daytapod1 ~ $ zpool status bpool pool: bpool state: ONLINE scan: scrub repaired 0B in 00:00:03 with 0 errors on Sun Jan 10 00:24:04 2021 config: NAME STATE READ WRITE CKSUM bpool ONLINE 0 0 0 ata-Hitachi_HUA722020ALA330_JK1151YAH6E00Z-part3 ONLINE 0 0 0 errors: No known data errors root@daytapod1 ~ $ grub-install /dev/disk/by-id/ata-Hitachi_HUA722020ALA330_JK1151YAH6E00Z Installing for i386-pc platform. Installation finished. No error reported.