I recently received my Jupiter in the mail, and have gotten it set up with Bianbu on an SD card. It’s my first time using a RISC-V computer, and it’s been a long of fun tinkering with something that isn’t x86 or ARM.
I’ve been looking to expand into installing Gentoo on here as well though, so I was wondering if anyone might know off the top of their heads how to boot to Grub instead of Bianbu’s kernel directly?
I have indeed! My understanding is that u-boot provides a stripped down UEFI environment to boot Linux from - I was wondering if there’s a way to instead boot GRUB into it, like how you do on an x86 computer (UEFI → GRUB → Linux).
I found this post from the SiFive forums where they seem to have accomplished exactly this, but it involved patching the source code for u-boot and grub. I was curious if it the three years since, things had gotten any smoother, but it sounds like not?
If so, I was wondering if there might be any other ways to boot multiple operating systems on the Jupiter - is there a way to get a command line in u-boot for example? I tried spamming the usual function keys that you would use for an x86 uefi, but it didn’t seem to have any effect…
First, yes, if your bootloader has capabilities to boot on a specific computer, then yes.
Second, yes, das U-Boot can pass control to anything after it.
Third, yes, you can have some convenient CLI in U-Boot by default (unless you disable it when compiling, IIRC); I don’t have a Jupiter board, but I bet you can gain access to the CLI of U-Boot via serial debug interface on the board.
A little late, but what you could do is the following:
U-Boot has support for booting any EFI
Compile U-Boot with that feature enabled
Install grub
In the U-Boot environment, overwrite the bootcmd (iirc) variable to the command that loads and runs an EFI
Point that command to the grub EFI
I have only ever done that on x86 (where u-boot replaces the BIOS), but I would assume that would work the same in RISC-V. Does grub have RISC-V support?
On my x86 machine, grub’s EFI file is at /efi/EFI/<distro name>/grubx64.efi. You could try installing grub on the Jupiter and check that location (or a similar one) and configure U-Boot’s bootefi command accordingly.
In the documentation on the bootefi command (linked above), they have an example that looks as follows: