Hi Andrew! first of all -- thanks for pointing me in the right direction. So after reading relevant sources: comments inline.
On Tue, Mar 30, 2021 at 12:08 PM Andrew Cooper <andrew.coop...@citrix.com> wrote: > 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. > It is indeed what seems to be happening. > For the module2 example, you're putting 3 distinct files in memory, and > giving Xen a list 3 modules. > And that is also correct -- nothing like that is possible with modules. Kernel actually needs to be aware of them. So the question then becomes... > 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. > ...I guess there's no mechanism out-of-the box to achieve what I want? And the obvious next question: is my EVE usecase esoteric enough that I should just go ahead and do a custom GRUB patch or is there a more general interest in this? Thanks, Roman.
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel