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

Re: [Xen-devel] [RFC] Bootloader configuration

On Mon, 2006-02-27 at 16:47 +0000, John Levon wrote:
> This is a proposal for modifying the interface for domU bootloaders (i.e.
> something that provides us with a kernel and ramdisk file with which the 
> domain
> can be booted). The current interface, as is, has a number of problems,
> including:
> 1) the first disk specified is assumed to be the disk containing the files

Well, this isn't that different than a BIOS :-)  

> 2) 'bootentry' is highly pygrub-specific. There is no easy facility to specify
>    any options for custom bootloaders

This was largely added at the request of someone to be able to change...
I think that having it at all makes little sense, realistically

> 3) bootloaders are forced to return configuration params like 'args', since
>    the code assumes it knows all with regards to image.py

A boot loader _does_ need to pass back everything regarding an image,
though.  All of kernel, initrd and arguments can and should be
accessible/modifiable by the boot loader.

> 4) users need to configure 'bootloader' by hand. There's little facility for
>    standard Xen-shipped bootloaders that can be easily chosen in the config
>    file

With the stuff that we're shipping in Fedora Core 5, we're setting up
guest domains to use pygrub by default.  I don't see this as being
different than "there's little facility for standard Xen-shipped kernels
to be easily chosen"

> In addition, the common case of "just get these files off the filesystem at
> this device" is not, IMO, well-covered by pygrub, the only bootloader shipped
> so far:
> 1) Filesystem support requires a C/Python interface which contains a lot of
>    glue code, typically interfacing a C library to pygrub's internal API

Based on a couple of discussions I had in Austin, I think the right
thing to do here is probably to get to where we can use the grub2
filesystem modules.  It shouldn't be that bad to do, I've just been
caught up with some more mundane things instead of having time to get
around to it yet.

> 2) Filesystem support needs to be delivered into the correct python
>    directory, and carefully match the exact internal API used by pygrub

It's hardly that complicated of an API.  Actually, it's probably too
simple more than anything

> 3) There are possibly licensing inflexibilities with the fs-specific python
>    modules. Not really a big problem with the standard open OS's filesystems,
>    but I can easily imagine this being a problem with vendor filesystems, or
>    other operating systems.

I think that encouraging closed source implementations here is a bad
idea for allowing interoperability between guests.

> 4) The concept of "retrieve a file from this fs image" seems to be generically
>    useful outside of the Xen project context; forcing a Python API for this
>    functionality seems a lot less general than it should be.

> 5) IMO, it doesn't make sense to be using grub config files anyway. grub can't
>    boot domU's natively (typically), and pygrub obviously can't do vice versa.
>    The config syntax has a lot of things that aren't relevant to the domU 
> case.
>    At least, the pygrub approach needs to be optional rather than the primary
>    bootloading method.

Why invent yet another config file format that everything that anyone
would want to use within a guest has to be able to parse instead?  Sure,
the grub syntax has its warts, but it works well enough.  And creating
something else involves a completely separate knowledge set for users
inside of a guest vs on physical machines.

> This proposal covers three parts: the configuration file changes, the
> bootloader interface, and the new 'root' bootloader.
> Config file
> -----------
> Taking a lead from the disk configuration, the 'kernel' and 'ramdisk' options
> are extended to the format:

*shrug*  I continue to think that specifying kernel and ramdisk from
dom0 is non-interesting :)

> Bootloader interface
> --------------------
> The Xen python code parses the 'kernel' value into 'method' and 'params', then
> searches for a bootloader handler matching 'method' as follows:
>      /usr/lib/xen/boot/bootload-<method>
>      <auxbinpath>/bootload-<method>
>      /etc/xen/scripts/bootload-<method>

Since you have to specify the same method for kernel and ramdisk, this
is pretty much the same as the current bootloader config option. 

> When found, the bootloader is invoked as follows:
>      -b <bootdisk> -k <kernel's method-param> [-r <ramdisk's method-param>] \
>         -d <disk1> [ -d <disk2> ... ]

What params do you see making sense here?  


Xen-devel mailing list



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