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

Re: new lilo package maintainer? (was lilo removal in squeeze or please test grub2)

On Tue, 08 Jun 2010 07:39:58 -0400 (EDT), Vincent Danjean wrote:
> On 07/06/2010 17:37, Stephen Powell wrote:
>> But for a kernel install or reconfigure, it is the responsibility of the
>> kernel maintainer scripts to invoke the bootloader.  See also, for example,
>> linux-image-2.6.26-2-s390.postinst, where zipl is assigned as the bootloader
>> on line 38.  This really is an "open and shut case", if only I can the kernel
>> people to actually look at it!  Please look at it!
> If I recall correctly, kernel maintainers have introduced
> /etc/kernel/post{inst,rm}.d/ in order to avoid to hardcode each possible
> bootloader in their script.
> Can't lilo provide a script here ?

   do_bootloader = yes

in /etc/kernel-img.conf means "run the historic boot loader for this platform".
For the i386 platform (and amd64) the historic boot loader is lilo.  For
the s390 platform, that boot loader is zipl.  The kernel maintainer scripts
for the s390 platform still specify zipl as the boot loader

   my $loader            = "zipl"; # lilo, silo, quik, palo, vmelilo, nettrom, arcboot, or delo

so that

   do_bootloader = yes

in /etc/kernel-img.conf will work.  The kernel maintainer scripts for i386 and amd64
for Lenny and beyond specify a null string.  That is inconsistent.  It should specify

   my $loader            = "lilo"; # lilo, silo, quik, palo, vmelilo, nettrom, arcboot, or delo

for consistency between platforms.  For non-historic boot loaders, the method used is to set

   do_bootloader = no

in /etc/kernel-img.conf and supply a hook script of some kind, if needed.  For example,
grub version 1 in Lenny invokes it's hook scripts via

   do_bootloader = no
   postinst_hook = update-grub
   postrm_hook   = update-grub

in /etc/kernel-img.conf.  Grub version 2 does not need a hook script; so it simply sets

   do_bootloader = no

in /etc/kernel-img.conf.  In Squeeze and later, there is an alternate method for running
hook scripts (so that more than one hook script can be invoked).  Simply install the
script in /etc/kernel/preinst.d, /etc/kernel/prerm.d, /etc/kernel/postinst.d, or
/etc/kernel/postrm.d.  But even in Squeeze/Sid, the historic boot loader can still be run
by setting

   do_bootloader = yes

in /etc/kernel-img.conf.  That still works for zipl on the s390 platform.  But it's
been broken since Lenny on the i386 and amd64 platforms for lilo.

initramfs-tools also examines this variable and runs the historic boot loader

   update-initramfs -u

is invoked.  That still works, even on the i386 and amd64 platforms, provided that

   do_bootloader = yes

is specified in /etc/kernel-img.conf.  But

   update-initramfs -c

does not invoke the boot loader.  Running the historic boot loader during installation,
reconfiguration, or upgrade of a kernel is still the responsibility of the kernel
maintainer scripts.  And it cannot do so unless "my $loader" is set to the name of
the historic boot loader.  On s390, that variable is set properly.  On i386 and amd64,
it is not.

The kernel maintainer scripts provided by kernel image packages created by make-kpkg
on Squeeze and later are another story.  They no longer do *any* post-installation
actions unless user-provided hook scripts cause it to happen.  But the maintainer
scripts for official stock Debian kernel images still support these historic
post-installation activities.

  .''`.     Stephen Powell    
 : :'  :
 `. `'`

Reply to: