as procount kindly points out, I maintain a 64-bit Gentoo image for the RPi3B/B+ (here
), that can be booted from microSD card or USB.
Assuming you'd rather use Ubuntu rather than Gentoo though, I also maintain a weekly-autobuild of a 64-bit kernel
for the RPi3B/B+ (here
); this was originally done for Gentoo users, but there is nothing Gentoo-specific about it really (for example, there is now an AUR Arch Linux package (here
) that uses it as upstream).
So if you like, to get something working, you can trying writing the latest release of this 64-bit kernel / module set (no compilation required) into your existing image; the result should
then boot without
grub getting involved (and will still be Ubuntu!)
To try this, take the USB stick with your Ubuntu image on it, and insert it in a Linux PC. Find the device path of the stick using "lsblk" or "dmesg | tail" (I will write /dev/sdX in the below, but obviously, substitute with the actual
path, /dev/sdb, /dev/sdc or whatever). If your PC has automounted any partitions from the USB stick, unmount them before proceeding.
Then, mount the root and boot partitions to known mountpoints, thus:
(remember to substitute /dev/sdX3, /dev/sdX1 with the actual paths /dev/sdc3, /dev/sdc1 or whatever).
Now download and install the latest 64-bit kernel build tarball, and install it, preserving the old u-boot bootloader:
Next, we need to set up an appropriate command line for this new kernel. Issue:
and place in that file:
Code: Select all
dwc_otg.lpm_enable=0 root=/dev/sda3 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Save, and exit nano. Then dismount:
Remove the USB stick and put it in your RPi3. Ensure no other USB devices are inserted, and that the microSD card slot is empty, and then power up.
Hopefully your system should now boot! It will still be Ubuntu, just with a different kernel.
best practice to refer to the root by device path in cmdline.txt as I suggest above (here, root=/dev/sda3), since if you have a second storage device plugged into the USB bus during boot, it
may get allocated this device path first, and your boot will fail. Instead, you should use UUID-based naming. But try the above first (with just the one key plugged); if it works, I can help you out with changing this. For avoidance of doubt though, even with the above (root=/dev/sda3) approach, it is
safe to plug in other devices into the USB bus once the system has booted.
this is just a quick hack to get you going, you won't be using the 'official' Ubuntu kernel package. So depending on your needs, you may find it better to modify grub, include any missing grub USB modules etc. Someone else on here can probably help you better than I can if you'd rather go that route.
But nevertheless, if it boots, your Ubuntu system should work fine; no userland is affected.
Edited cosmetically to clarify that on the OP's system, /boot/kernel8.img was originally a U-boot bootloader, not grub (although it was set up to subsequently load grub). The main content of the post is unaffected by this edit.