You are not logged in.
Some interesting experiments here with a raspberry pi 3b+ I was given. Some of this may well apply to other models. It's a different way from the usual dd of someone else's image, or compilation>dd from e.g. rpi-image-builder https://github.com/pyavitz/rpi-img-builder (thanks c0rnelius).
Early days so far and I didn't document everything very well.
The sd card was partitioned, using a Devuan system, with a small fat32 "boot" partition. To this was copied (not dd'd) the "virtual" uefi from here https://github.com/pftf/RPi3 .. Other files needed were EFI/boot/bootaa64.efi (simple to make and the bootloader found it automatically) and boot/grub with the usual (arm64) layout and a custom grub.cfg ..
The rest was formatted ext2 containing Devuan Daedalus loaded via mmdebstrap (superior IMO to debootstrap), then built up in chroot, complete with standard kernel.
On boot the grub menu appears and behaves normally. Everything seems to work including wireless. Bluetooth sound was more challenging, now working with alsa only + bluez-alsa. No xserver for now.
Interestingly I can chain the grub to another grub on a usb pen which (sdcard) grub always detects as /dev/sda. Other distributions are installed there, including another Daedalus and Ceres. Alternative kernels are installed there including a self-compiled mainline 6.13 (used default arm64 defconfig) and one compiled as a deb package using rpi-image-builder. Apparently 6.13 has improved pi support but they all work. A normal update-grub enables them all in the secondary grub menu.
Another revelation: I can boot a custom live image from iso. I never saw that done for arm64.
Anyone else here tried a pi setup like that? Multiboot with uefi, grub, no uboot, no image dd. Pure Devuan except in this case some maybe unnecessary firmware. Maybe you found something I missed or have better or different ideas. If something similar was posted here before either I never found it or it's way outdated.
Last edited by dzz (2025-02-27 19:14:02)
Offline
For a semi-manual way of changing the kernel for the next boot, from a running system (not from a boot menu), Git can be used.
I successfully used this approach to test a new kernel built from "rpi-image-builder".
With a system running from a Rasp Pi 4 image (from "https://arm-files.devuan.org/"), I created a Git repo in "/boot", checked-in the current files on a "6.1.93" branch, created a new branch for "6.12.55", installed the new kernel image package, then checked-in that branch.
The new kernel booted; if it hadn't, the SD card would be moved to another box (with Git installed) so Git could be used to switch the SD card boot dir to the earlier, working branch.
(Repos could also be created in the other dirs touched by a kernel install, "/etc", "/usr/lib", and "/usr/share/doc", with kernel-specific branches.)
This approach doesn't provide a boot menu, but it does provide a simple-ish way to get a Rasp Pi booting again while experimenting with new kernel versions.
Offline