[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.