[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-users] Howto compiling Xen 3.2 on Debian/Ubuntu (was: Compiling Xen-3.2.0)



Kalle,

On Thu, Jan 24, 2008 at 08:35:36PM +0200, Kalle wrote:
> > I finally carried out "make world" with Xen 3.2 after much struggle.
> > The problems occured in the kernel part of the world.
> 
>  I newer got 'make world' run succesfully.
>  Problem was that it can't download the kernel using mercurial.
>  Lenny and Etch both saffered this issue.

I've narrowed down the problem to buildconfig/select-repository.
In buildconfig/src.hg-clone you have (code intentionally clipped down):

% LINUX_SRC_PATH ?= .:..         # From mk.linux-2.6-xen
% LINUX_SRCDIR ?= linux-$(LINUX_VER)-xen.hg
% XEN_LINUX_HGREPO ?= $$(sh buildconfigs/select-repository $(LINUX_SRCDIR) 
$(LINUX_SRC_PATH))
%
% $(LINUX_SRCDIR)/.valid-src: $(__XEN_LINUX_UPDATE)
%         set -e ; \
%         if [ ! -e $(LINUX_SRCDIR)/.hg ] ; then \
%             __repo=$(XEN_LINUX_HGREPO) ; \
%             if [ -d $${__repo} ] ; then \
%                 echo "Linking $${__repo} to $(LINUX_SRCDIR)." ; \
%                 ln -s $${__repo} $(LINUX_SRCDIR) ; \
%             else \
%                 echo "Cloning $${__repo} to $(LINUX_SRCDIR)." ; \
%                 $(HG) clone $${__repo#file://} $(LINUX_SRCDIR) ; \
%             fi ; \
%             [...]

"set -e" means the while piece of script would fail if a single command
fails (without being catched).  OTOH buildconfig/select-repository
searches for ${LINUX_SRCDIR} in the colon-separated directory list
${LINUX_SRC_PATH}.  If it doesn't find ${LINUX_SRCDIR}, it fails with
"exit 1", so the script fails.

BTW, there is an obvious lack of synchronisation between the makefiles
and select-repository because the latter skips unconditionally "." while
${LINUX_SRC_PATH} unconditionally contains "." :-).

It happens that cloning Xensource's kernel source tree with Mercurial
besides Xen 3.2 directory leads the build infrastructure in a valid
path.

> > First, contrary to xen-3.1.0-src.tgz, xen-3.2.0.tar.gz doesn't come
> > along with the linux-2.6-xen-sparse/ and patches/ directories which
> > allow to build a xen-infied kernel from a vanilla kernel source.
> > Therefore it is impossible to use "make world XEN_LINUX_SOURCE=tarball".
> >
> 
>  That's shame, because I really would have those patches.
>  Other way would be that someone has documents about the ne "architecture".

>From what I've understood reading the buildconfig/ directory content,
you have two ways to fetch the kernel source.
- The default, named "hg-clone", uses Mercurial.
- The other one, "tarball", fetches the vanilla Linux kernel source but
  I think this one is non-functional because of lack of the
  aforementioned stuff.

You can switch to one or the other using XEN_LINUX_SOURCE make variable.
For instance:
% make dist XEN_LINUX_SOURCE=tarball

> > It is necessary, at least from my own understanding, to "make
> > prep-kernels" in order to create the kernel build directory.  Indeed if
> > you put your .config file directory into the kernel tree, the kernel's
> > build system will complain about its cleanliness and will ask you to run
> > "make mrproper".  The reason is that the kernel is not built directly in
> > the source tree -- as most of people used to do -- but instead uses a
> > separate directory to store produced object files, thus the assumption
> > about the cleanliness.
> >
> > So I devised with the following process to build Xen 3.2.
> > % mkdir build
> > % wget http://bits.xensource.com/oss-xen/release/3.2.0/xen-3.2.0.tar.gz
> > % tar xzf xen-3.2.0.tar.gz
> > % # Download the xenifid kernel tree manually, but NOT in xen-3.2.0/
> > % # because the buildconfig/select-repository script would skip it.
> > % # ! xen-3.2.0/ and linux-2.6.18-xen.hg/ must be at the same level !
> > % hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg
> > % cd xen-3.2.0
> > % make prep-kernels
> > % cp /boot/config-2.6.18-my build-linux-2.6.18-xen_x86_32/.config
> > % make dist
> 
> 
>  This is almoust same way I go.
> 
>  - Instead of 'make prep-kernels' I used 'make linux-2.6-xen-config 
>  CONFIGMODE=menuconfig'
>   -> Make little changes to kernel for my needs.
> 
>  - And instead of 'make dist' I used 'make linux-2.6-xen-build'
> 
>  - After that i did 'make install' but if I remember correctly i needed todo 
>  Grub's menu.lst, initrd and copy vmlinuz and modules to right places by 
>  myself.

Yes you are right.  Actually "make dist" does not install Xen.  It just
builds everything and create the layout in dist/.  I let the user
install the stuff following his requirements.

>  I still would like to know that is there any patches available.
>  Or is the only way to go mercurial?

Currently, it seems they are not provided any more with Xen 3.2.  I
don't know if this is a lack time or a 

>  How does this new "system" works?

See above.  I think a thorough explanation should be in the wiki.

>  I supposed that 'linux-2.6.18-xen.hg' ships with already patched?
>  Cos i don't see any patching happening when do 'make anything'

Yes.


Regards,
-- 
Jeremie Le Hen
< jeremie at le-hen dot org >< ttz at chchile dot org >

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users


 


Rackspace

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