[Hotplug_sig] boottool / Linux::Bootloader release 1.0

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

 



Hi all,

Linux::Bootloader is a new component we've developed for automated test
systems, that provides a generic interface for updating bootloader
config files.  Supported bootloaders include grub, lilo, yaboot, and
elilo.

Linux::Bootloader 1.0 is our first official release of this package, and
includes Perl modules for the aforementioned bootloaders, a handy
command line tool 'boottool', and a few other helper bash scripts.

  - Download from:
    http://sourceforge.net/project/showfiles.php?group_id=47517&package_id=189767

  - Linux::Bootloader will also be available from cpan.org probably some
    time tomorrow.

  - Changes since the 0.9 pre-release are listed at the end of this email.

  - Patches to add additional bootloaders are *very* welcome

  - Please forward this to anyone that might have a use for it!


Main Features
-------------
   * Detects installed bootloaders by scanning the Master Boot Record
     (MBR).  Most other tools simply look for an /etc/lilo.conf, etc.

   * Handles default, fallback, and boot-once options in bootloaders
     that support them.

   * Allows adding, removing, and viewing bootloader entries by
     position or label.

   * Allows in-place updating of kernel boot records, so you can for
     example add or remove kernel boot args to a specific boot option. 

   * When writing config file, only makes modifications to the section
     modified.  Does not reformat or re-interpret other sections.

   * Displays summary info about the config in a bootloader-neutral
     fashion. 


Background
----------
Automated kernel testing systems must have a way to boot to new
kernels.  This is typically done through use of a bootloader, involving
adding, removing, or modifying an entry in the bootloader's config file.

Several of us at OSDL are working on test harnesses and have this same
need.  We decided to pool efforts and develop this module that we can
share between our harnesses.  Jason Neighbors, Jake Norman, myself,
Leann Ogasawara, and Judith Lebzelter each contributed to the design and
development of it.

There are many tools for interacting with bootloaders, including grubby,
systemconfigurator, and others.  Indeed, our initial plan was to simply
modify one of these existing systems.  Systemconfigurator is a perl
program that only does very basic bootloader modification; it simply
overwrites the config file.  Grubby is a C program specific to RedHat,
and was found to have a lot of redhat-specific assumptions built in.
Other tools are limited in scope, or make assumptions that limit them to
specific usage scenarios.  For example, each Linux distribution has
their own tool for updating the bootloaders, but unfortunately these
tend to be distro-specific and often are only usable during initial
install.

With Linux::Bootloader, we are creating a general purpose utility and
set of reusable Perl modules for interacting with bootloaders.  This
may provide useful both to other test harness developers, and
potentially to Linux distributions that might wish a more general
purpose solution. 


Future
------
Our initial objectives involve getting the core functionality tested on
all four supported bootloaders.  The boot-once capability will be our
principle focus subsequently.

Questions, bug reports, and suggestions regarding the current
functionality can be sent to crucible-devel@xxxxxxxxxxxxxxxxxxxxx or to
me directly.

We would love to receive patches to help make this more suitable for
your needs.  We would gladly accept patches and testing for bootloaders
beyond these four.


Changes since the 0.9 pre-release
---------------------------------
        t/
        - Modified grub test to work on other people's systems
        - Added unit tet for the bootloader detection capability

        lib/Linux/Bootloader:
        - removed get_default() from grub module (uses base class
          get_default() now)
        - moved conversion of 'saved' to position into _info() from
          get_default()
        - changed private function names to start with _
        - removed remove() from grub module (uses base class remove()
          now)
        - created lookup() in base class, converts title to position
        - moved info() regex patterns into hash
        - moved majority of lilo, elilo, yaboot functions to base module
        - added update-kernel support (experimental)

        lib/Linux/Bootloader/Detect.pm:
        - Patch from Kees Cook to cleanup bootloader detection logic
        - Redid detect_architecture() to allow specifying of 'style'
          (none, linux, or gentoo)
        - Add optional argument to allow specifying which devices to
          check for MBR's.
        - Made the _detect_from_mbr and _detect_from_config routines
          public, and renamed them.
        - Refactored code to simplify it a bit

Bryce

[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux