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
when
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
: :' :
`. `'`
`-