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 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel