Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to boot with systemd-boot #333

Open
retrage opened this issue May 14, 2024 · 4 comments
Open

Unable to boot with systemd-boot #333

retrage opened this issue May 14, 2024 · 4 comments
Assignees

Comments

@retrage
Copy link
Contributor

retrage commented May 14, 2024

I'm trying to add Ubuntu 24.04 to the integration test targets, but the guest fails to find the rootfs:

[    0.174931] /dev/root: Can't open blockdev
[    0.175095] VFS: Cannot open root device "LABEL=cloudimg-rootfs" or unknown-block(0,0): error -6

Ubuntu 24.04 uses systemd-boot, which sets up the rootfs information at the startup. It installs some EFI protocols during the boot process, but the current RHF implementation does not support the operations. The boot log says it failed to install protocols:

install_multiple_protocol_interfaces: 4006c0c1-fcb3-403e-996d-4a6c8724e06d
error: failed to install protocols.

To fix this issue, RHF needs to support EFI protocol installation operations.

Working branch: https://github.com/retrage/rust-hypervisor-firmware/tree/ubuntu-2404-integration-tests

@retrage retrage self-assigned this May 14, 2024
@retrage
Copy link
Contributor Author

retrage commented May 14, 2024

It also needs InstallMultipleProtocolInterfaces(), which has variadic arguments. Recent nightly Rust has varargs support for "efiapi", but the pinned version of Rust is too old.

@rbradford
Copy link
Member

To fix this issue, RHF needs to support EFI protocol installation operations.

I think this might also be needed for the RISC-V support for the a Linux kernel loading protocol.

@retrage
Copy link
Contributor Author

retrage commented Jul 3, 2024

I'm working on adding support for EFI protocol installation here: https://github.com/retrage/rust-hypervisor-firmware/tree/protocol-manager-v2.
The existing integration test targets work fine, but Ubuntu 24.04 Noble and Windows don't.

@yawkat
Copy link

yawkat commented Sep 14, 2024

Are you sure this is limited to systemd-boot? I'm also seeing this issue when trying to upgrade an existing 22.04 VM (grub-based) to 24.04.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants