[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: multiboot2 and module2 boot issues via GRUB2
From: |
Andrew Cooper |
Subject: |
Re: multiboot2 and module2 boot issues via GRUB2 |
Date: |
Tue, 30 Mar 2021 20:08:13 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 30/03/2021 19:28, Roman Shaposhnik wrote:
> Hi!
>
> seems like I've run into an issue with multiboot2 and module2
> commands that I can't quite explain. Since it may be something
> super simply and silly -- I wanted to reach out here before I do
> a GRUB/Xen/LK source deepdive.
>
> So here's the deal: whenever I boot straight up Linux kernel
> I can do the following sequence of commands:
> linux /kernel
> initrd foo.cpio.gz bar.cpio.gz
> and have linux kernel effectively stack content of bar.cpio.gz
> on top of foo.cpio.gz and present a unified initramfs that way.
>
> I'm trying to replicate it with Xen, but:
> multiboot2 /boot/xen.gz
> module2 /kernel
> module2 foo.cpio.gz
> module2 bar.cpio.gz
> only seems to be picking up foo.cpio.gz
>
> Has anyone run into this issue before?
I can explain why that happens. Not sure if it counts as a feature, bug
or mis-expectation, but CC'ing grub-devel for their input.
The initrd command is presumably concatenating those two files together
in memory, and presenting Linux a single initrd pointer.
For the module2 example, you're putting 3 distinct files in memory, and
giving Xen a list 3 modules.
Xen is capable of taking various things via modules, such as an
XSM/Flask policy, or microcode, so has logic to identify these if
present and separate them from "other stuff". However, there is a
hardcoded expectation that the first module is the dom0 kernel, and the
next unrecognised module, if present, is *the* initrd.
I expect that Xen isn't handing bar.cpio.gz on to dom0, but I'm not sure
whether passing two distinct initrd-like-things to Linux is even possible.
What you presumably want is some `initrd` side effect in Grub so you can
write `module2 foo.cpio.gz bar.cpio.gz` and have it concatenate things
together in memory and present one MB2 module, but I suspect that exact
syntax might be ambiguous with command line handling. I have no idea
whether such a command currently exists.
~Andrew
- Re: multiboot2 and module2 boot issues via GRUB2,
Andrew Cooper <=