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
|