On Monday 19 May 2008 21:45:50 Daniel Baluta wrote: > I have another question regarding the next paragraph > > === > Secondly, we only run specially modified Guests, not normal kernels. When > you set CONFIG_LGUEST to 'y' or 'm', this automatically sets > CONFIG_LGUEST_GUEST=y, which compiles this file into the kernel so it > knows how to be a Guest. This means that you can use the same kernel you > boot normally (ie. as a Host) as a Guest. > === > > but CONFIG_LGUEST = y is also set within Host > as i have seen in http://lguest.ozlabs.org/lguest.txt , configuring kernel. > > so where is the difference between a host and a guest, regarding the > part when each one finds its identity ( ex: i'm host or guest?)
This has changed in more recent kernels (you can adjust the guest and host config options separately now). The method by which we know we're a guest changed. In 2.6.23, the Launcher entered the Guest immediately after the string "GenuineLguest" which was found in lguest_asm.S: this jumps to lguest_init. In 2.6.24, the bootloader protocol was extended, and now the Guest is launched like a normal kernel. From arch/x86/lguest/i386_head.S: /*G:020 Our story starts with the kernel booting into startup_32 in * arch/x86/kernel/head_32.S. It expects a boot header, which is created by * the bootloader (the Launcher in our case). * * The startup_32 function does very little: it clears the uninitialized * global C variables which we expect to be zero (ie. BSS) and then copies the * boot header and kernel command line somewhere safe. Finally it checks the * 'hardware_subarch' field. This was introduced in 2.6.24 for lguest and * Xen: if it's set to '1' (lguest's assigned number), then it calls us here. All this information can be found in "make Preparation" in the drivers/lguest directory... Hope that helps, Rusty. _______________________________________________ Lguest mailing list [email protected] https://ozlabs.org/mailman/listinfo/lguest
