[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] question about the guestOS boot
Thank you for your reply And dom0 xc_linux_build() function play a bootloader role in booting VM ,is it right? or xc_linux_build() does only a part of bootloader's role and guestOS does the rest of bootloader's role? or something else? I am not sure about it could you help me Thanks in advance Petersson, Mats 写道: > > > >> -----Original Message----- >> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx >> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of tgh >> Sent: 09 March 2007 10:13 >> To: Petersson, Mats >> Cc: xen-devel >> Subject: Re: [Xen-devel] question about the guestOS boot >> >> Thank you for your reply and guide >> I try to understand how does the xen provide a virtual platform for >> guestOS to run >> dom0 provides hardware abstract struct as well as software struct for >> guestOS >> >> and when dom0 boots a vm ,it does prepare the vm >> vcpu_guest_context for >> guestOS to run >> so when VM starts ( the same as our PC resets) ,its vcpu >> isnot an empty >> context like the regular ones without virtualization ,so it doesnot >> start from the regular point or function or firmware >> > > Ehm, ok, lets debunk the first point, which is that the processor is "CPU is > empty" when the processor comes out of reset. That is not at all true - yes, > most registers are zero, but they still have a DEFINED value out of reset, > which may or may not be zero. > > But more to the point of "booting" a virtual machine. Of course, we have to > NOT reset the processor to boot a virtual machine, as that would loose the > original Xen + Dom0 that is already loaded. So Xen has to perform the > load/initialize function. > > But this is no different from what is done in grub or whatever boot-loader > you use. It loads the code into memory and sets up some basic start-values in > the registers, then jumps to a starting point somewhere. > > In the case of a Xenified kernel, it's at the beginning of the "text" > segment, that is, the label _start. The rIP of the VCPU is set to point to > this address, and the other registers are set to some sensible values (such > as a pointer to any kernel arguments and perhaps some environmental values in > other registers that make sense - I haven't looked very closely at it). > > There is a difference in Xen-linux start and a regular linux start, and that > is that Xen-linux starts in 32-bit protected mode (but Paging is not yet > enabled), whereas the regular Linux starts with real-mode (16-bit mode), and > does a few instructions before it gets into 32-bit mode. > > > >> then I do not know where does the guestOS start with in the code >> could you told me where or which function does the guestOS >> start with ? >> > > As above. The actual code that the Xen kernel starts at is in > .../linux-<ver>-xen/arch/<mach>/kernel/head-xen.S > > -- > Mats > >> Thanks in advance >> >> >> >> >> Petersson, Mats 写道: >> >>> >>> >>> >>> >>>> -----Original Message----- >>>> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx >>>> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of tgh >>>> Sent: 09 March 2007 08:17 >>>> To: xen-devel >>>> Subject: [Xen-devel] question about the guestOS boot >>>> >>>> hi >>>> I try to understand the code about vm create >>>> and now I am confused about which code does the guestOS start >>>> with to run ? >>>> >>>> xen domain0 uses the function xc_domain_creat() and >>>> xc_linux_build() to >>>> prepare the necessary struct such as vcpu_guest_context and >>>> other things >>>> for vm guestOS to bootup , in the xc_linux_build(),the >>>> >> initrd is also >> >>>> loaded in,is it right? >>>> then guestOS does not run the regular bootloader ,is it right? >>>> >>>> >>> That is correct. >>> >>> >>>> then I am confused about which function or which lines of the >>>> code does >>>> the guestOS start with ? >>>> >>>> >>> Can you explain your confusion a bit more - I'm not >>> >> entirely sure what >> >>> you're asking, and it's very hard to answer questions when you don't >>> know the actual question. >>> >>> Also, it's much better if you explain a little bit about what you're >>> trying to achieve (I've previously used the example of >>> >> someone having a >> >>> puncture, going to ask the mechanic how to loosen a wheel-nut, then >>> going to ask how to jack up the car, then asking how to tighten the >>> wheel-nut, when the actual problem is a punctured tyre, and >>> >> the "right" >> >>> question to ask a mechanic is "How do I replace my >>> >> punctured tyre with >> >>> the spare wheel?"). >>> >>> Asking the overall question you're trying to solve will >>> >> give you a more >> >>> complete answer to what you're trying to do, rather than a detailed >>> answer on the point where you're at (and that may actually >>> >> not help your >> >>> overall problem at all). >>> >>> -- >>> Mats >>> >>> >>>> could you help me >>>> >>>> Thanks in advance >>>> >>>> >>>> _______________________________________________ >>>> Xen-devel mailing list >>>> Xen-devel@xxxxxxxxxxxxxxxxxxx >>>> http://lists.xensource.com/xen-devel >>>> >>>> >>>> >>>> >>>> >>> >>> _______________________________________________ >>> Xen-devel mailing list >>> Xen-devel@xxxxxxxxxxxxxxxxxxx >>> http://lists.xensource.com/xen-devel >>> >>> >>> >>> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@xxxxxxxxxxxxxxxxxxx >> http://lists.xensource.com/xen-devel >> >> >> >> > > > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |