Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-07-01 Thread Stephen Powell
On Wed, 30 Jun 2010 09:29:42 -0400 (EDT), Stephen Powell wrote:
 
 Since symlinks are not associated with any package in particular,
 and since they seem to have been designed for the convenience of
 historic boot loaders such as lilo and zipl, perhaps the best way
 to handle this is for the boot loader hook script, zz-whatever, to
 maintain the symlinks, if desired.
 
 As a matter of fact, I already
 have a hook script on hand that does this very thing, and with minor
 modifications will do nicely, I think.  Right now, it unconditionally
 maintains the symlinks.  To generalize it more, it could determine
 if symlinks already exist or not, and if so where, then maintain
 them where they are.  If the symlinks don't exist, it won't create
 them.  It could also be changed to determine if lilo or zipl is
 in use, based on the presence of the config file, and invoke the
 appropriate boot loader.  Then, all the maintainer of the s390-tools
 package would have to do is to include it in the s390-tools package.
 And the maintainer of lilo could do the same.

OK, I now have some templates to shoot at.

/etc/kernel/postinst.d/zz-bootloader
http://www.wowway.com/~zlinuxman/kernel/postinst.d/zz-bootloader

/etc/kernel/postrm.d/zz-bootloader
http://www.wowway.com/~zlinuxman/kernel/postrm.d/zz-bootloader

These templates should work for both lilo and zipl, and they maintain
the symbolic links, if they already exist.  When doing an initial
install (Debian installer), (1) the initial kernel must be installed
first, then (2) the boot loader must be installed, then (3) the initial
symlinks must be created (if lilo or zipl), then (4) dpkg-reconfigure
or the boot loader installer (lilo or zipl) must be run.
(Steps 2 and 3 could optionally be reversed or combined.)

After that, the hook scripts will maintain the symbolic links as long
as there is at least one installed kernel at all times.  (Presumably
one will never purge the running kernel!)  In particular,
/etc/kernel-img.conf is not examined to see if do_symlinks = yes
is set.  If symlinks are present, they will be maintained.  If they
are not, they will not be created.

 ... [discussion of initramfs-tools issues ]
 Since you're obviously very busy, I will submit a version
 of the initramfs-tools script which I believe will address
 all these issues.  Then you can take pot shots at it.

These are included here:

/etc/kernel/postinst.d/initramfs-tools
http://www.wowway.com/~zlinuxman/kernel/postinst.d/initramfs-tools

/etc/kernel/postrm.d/initramfs-tools
http://www.wowway.com/~zlinuxman/kernel/postrm.d/initramfs-tools

For the boot loader hook to initramfs builders:

/etc/initramfs/post-update.d/bootloader
http://www.wowway.com/~zlinuxman/initramfs/post-update.d/bootloader

(This last interface is not currently functional, of course.)

How do they look?

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


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/1920933269.99141.1278000752640.javamail.r...@md01.wow.synacor.com



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-30 Thread Stephen Powell
On Tue, 29 Jun 2010 16:35:40 -0400 (EDT), maximilian attems wrote:
 On Tue, Jun 29, 2010 at 04:24:48PM -0400, Stephen Powell wrote:
 
 Sorry I didn't think of this the first time, but there are up to
 four steps to preparing a kernel for booting:
 
 (1) Installation of the kernel itself
 (2) Creation of an initial RAM file system
 (3) Updating symbolic links
 ...
 
 they are deprecated and shouldn't be necessary.
 there are even more evil incarnations like reverse symlinks or whatever.
 which we no longer support since longer..
 it be better to just get rid of them.

Hmm.  Well, I don't mind if you drop support for direct symlink
maintenance from the kernel maintainer scripts, but the symlinks
serve a very useful function: they make it possible for the boot loader
configuration file, /etc/lilo.conf, /etc/zipl.conf, etc. to remain a
relatively static file.  That is how these historic boot loaders,
such as lilo and zipl, are used to operating.  And remember, on
the s390 platform, zipl is the *only* supported boot loader.
  
Since symlinks are not associated with any package in particular,
and since they seem to have been designed for the convenience of
historic boot loaders such as lilo and zipl, perhaps the best way
to handle this is for the boot loader hook script, zz-whatever, to
maintain the symlinks, if desired.

As a matter of fact, I already
have a hook script on hand that does this very thing, and with minor
modifications will do nicely, I think.  Right now, it unconditionally
maintains the symlinks.  To generalize it more, it could determine
if symlinks already exist or not, and if so where, then maintain
them where they are.  If the symlinks don't exist, it won't create
them.  It could also be changed to determine if lilo or zipl is
in use, based on the presence of the config file, and invoke the
appropriate boot loader.  Then, all the maintainer of the s390-tools
package would have to do is to include it in the s390-tools package.
And the maintainer of lilo could do the same.

 ...
 [discussion of initramfs-tools script issues]
 ...
 
 hate those indirections due to debconf magic, but why would
 the hook scripts need one. thanks for hints, been staying away
 from debconf for long..
 
 the unconditional is expected and there is a wishlist bug
 open for that it has not high priority as many things do
 not work if you don'T use an initramfs.

Understood.
Since you're obviously very busy, I will submit a version
of the initramfs-tools script which I believe will address
all these issues.  Then you can take pot shots at it.

 ps if you want the no cc thing set up your mua appropriately.
   here in d-kernel we do cc.

I don't care either way, actually.  But when in Rome, do as
the Romans do.  I included you on the cc list, per the above.

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


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/1257454917.65146.1277904582236.javamail.r...@md01.wow.synacor.com



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-30 Thread Jonas Smedegaard

On Wed, Jun 30, 2010 at 09:29:42AM -0400, Stephen Powell wrote:


Since symlinks are not associated with any package in particular,
and since they seem to have been designed for the convenience of
historic boot loaders such as lilo and zipl, perhaps the best way
to handle this is for the boot loader hook script, zz-whatever, to
maintain the symlinks, if desired.


Beware that multiple boot loaders might be installed concurrently.

If each of them provide a zz- hook script implemented independently, 
they might handle symlinks differently, leading to surprises.



 - Jonas

--
 * Jonas Smedegaard - idealist  Internet-arkitekt
 * Tlf.: +45 40843136  Website: http://dr.jones.dk/

 [x] quote me freely  [ ] ask before reusing  [ ] keep private


signature.asc
Description: Digital signature


Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-30 Thread Stephen Powell
On Wed, 30 Jun 2010 10:00:10 -0400 (EDT), Jonas Smedegaard wrote:
 On Wed, Jun 30, 2010 at 09:29:42AM -0400, Stephen Powell wrote:
 ...
 Since symlinks are not associated with any package in particular,
 and since they seem to have been designed for the convenience of
 historic boot loaders such as lilo and zipl, perhaps the best way
 to handle this is for the boot loader hook script, zz-whatever, to
 maintain the symlinks, if desired.
 
 Beware that multiple boot loaders might be installed concurrently.
 
 If each of them provide a zz- hook script implemented independently, 
 they might handle symlinks differently, leading to surprises.

dpkg does not prevent multiple boot loaders from being installed
concurrently; but this environment is not supported by the various
system maintainer scripts of Debian, even today.  For example,
update-initramfs -u currently checks to see if lilo is installed,
and if it is, it runs lilo.  But if grub (either version 1 or version
2) is installed also, it issues the following messages:

   WARNING: grub and lilo installed.
   Please de-install unused bootloader.

It could also test for other boot loaders as well, such as extlinux,
but it doesn't.  The point is that Debian's maintainer scripts
do not support multiple concurrently-installed boot loaders even today.

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


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/952598886.67029.1277908292511.javamail.r...@md01.wow.synacor.com



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-30 Thread Jonas Smedegaard

On Wed, Jun 30, 2010 at 10:31:32AM -0400, Stephen Powell wrote:

On Wed, 30 Jun 2010 10:00:10 -0400 (EDT), Jonas Smedegaard wrote:

On Wed, Jun 30, 2010 at 09:29:42AM -0400, Stephen Powell wrote:

...
Since symlinks are not associated with any package in particular,
and since they seem to have been designed for the convenience of
historic boot loaders such as lilo and zipl, perhaps the best way
to handle this is for the boot loader hook script, zz-whatever, to
maintain the symlinks, if desired.


Beware that multiple boot loaders might be installed concurrently.

If each of them provide a zz- hook script implemented independently,
they might handle symlinks differently, leading to surprises.


dpkg does not prevent multiple boot loaders from being installed
concurrently; but this environment is not supported by the various
system maintainer scripts of Debian, even today.  For example,
update-initramfs -u currently checks to see if lilo is installed,
and if it is, it runs lilo.  But if grub (either version 1 or version
2) is installed also, it issues the following messages:

  WARNING: grub and lilo installed.
  Please de-install unused bootloader.

It could also test for other boot loaders as well, such as extlinux,
but it doesn't.  The point is that Debian's maintainer scripts
do not support multiple concurrently-installed boot loaders even today.


I read above as initramfs-tools in particular not supporting multiple 
bootloaders.


Could you perhaps elaborate more on why this is a general problem?


Kind regards,

 - Jonas

--
 * Jonas Smedegaard - idealist  Internet-arkitekt
 * Tlf.: +45 40843136  Website: http://dr.jones.dk/

 [x] quote me freely  [ ] ask before reusing  [ ] keep private


signature.asc
Description: Digital signature


Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-30 Thread maximilian attems
On Wed, Jun 30, 2010 at 10:31:32AM -0400, Stephen Powell wrote:
 
 dpkg does not prevent multiple boot loaders from being installed
 concurrently; but this environment is not supported by the various
 system maintainer scripts of Debian, even today.  For example,
 update-initramfs -u currently checks to see if lilo is installed,
 and if it is, it runs lilo.  But if grub (either version 1 or version
 2) is installed also, it issues the following messages:
 
WARNING: grub and lilo installed.
Please de-install unused bootloader.
 
 It could also test for other boot loaders as well, such as extlinux,
 but it doesn't.  The point is that Debian's maintainer scripts
 do not support multiple concurrently-installed boot loaders even today.
 

It did support it, but it turned out to be a greater pain to keep
that then to kick that support, see cc33aa5bfb7f68793 in initramfs-tools
git repo for the support that was there until lenny. bug #574553 axed
it. support was fragile and thus I don't plan to reinstate that.

extlinux is quite new in debian. the usual case were people having
upgraded from lilo to grub but didn't change the do_bootloader
setting in /etc/kernel-img.conf, because they didn't knew it.


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100630143154.gn9...@baikonur.stro.at



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-30 Thread Stephen Powell
On Wed, 30 Jun 2010 10:54:53 -0400 (EDT), Jonas Smedegaard wrote:
 On Wed, Jun 30, 2010 at 10:31:32AM -0400, Stephen Powell wrote:
 dpkg does not prevent multiple boot loaders from being installed
 concurrently; but this environment is not supported by the various
 system maintainer scripts of Debian, even today.  For example,
 update-initramfs -u currently checks to see if lilo is installed,
 and if it is, it runs lilo.  But if grub (either version 1 or version
 2) is installed also, it issues the following messages:
 
WARNING: grub and lilo installed.
Please de-install unused bootloader.
 
 It could also test for other boot loaders as well, such as extlinux,
 but it doesn't.  The point is that Debian's maintainer scripts
 do not support multiple concurrently-installed boot loaders even today.
 
 I read above as initramfs-tools in particular not supporting multiple 
 bootloaders.
 
 Could you perhaps elaborate more on why this is a general problem?

I think Max has answered that question, as least as it pertains to
initramfs-tools.  To generalize from that, it makes it difficult for
various tools to know what to do or to co-ordinate with each other.
For example, only one boot loader can own the master boot record.
So if two hook scripts starting with zz- are installed,
one for each boot loader, what happens?  The last one to execute wins?
That's not going to work.

Let's turn that question around.  What legitimate purpose is served
by having multiple concurrently-installed boot loaders?

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


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/459396134.69046.1277911907155.javamail.r...@md01.wow.synacor.com



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-29 Thread Stephen Powell
On Mon, 28 Jun 2010 19:07:16 -0400 (EDT), Ben Hutchings wrote:
 
 Please reply to debian-kernel only.

As you wish.  I had reason to believe that some key players were
probably not subscribed to debian-kernel.  But they are now
at least aware of the thread and can follow it further if they
so desire.  I have now subscribed to debian-kernel myself;
so there is no need to CC me.

 On Mon, 2010-06-28 at 11:16 -0400, Stephen Powell wrote:
 On Sun, 27 Jun 2010 22:02:35 -0400 (EDT), Ben Hutchings wrote:
 [...]
 The environment variable DEB_MAINT_PARAMS will contain
 the arguments given to the kernel maintainer script, single-quoted.
 
 Is this environment variable provided by the maintainer scripts
 that come with kernel image packages created by make deb-pkg?
 (I honestly don't know.  I've never used make deb-pkg.)
 
 It has done since 2.6.31, though without single-quotes.  I'll note that
 they may or may not be quoted, and recommend how to use this variable.

OK.
 
 [...]
 5. Kernel and initramfs builder packages must not invoke boot loaders
 except via hooks.  If /etc/kernel-img.conf contains an explicit
 'do_bootloader = yes', kernel package maintainer scripts should warn
 that this is now ignored.
 
 At the risk of flogging a dead horse, I would prefer to see
 do_bootloader = yes supported until Squeeze+1, both by the
 kernel maintainer scripts and by update-initramfs -u, particularly
 since we are so close to a freeze.
 
 The release team has stated we are not close to a freeze.  So we have a
 little time to sort this out.

That's good.

 But if
 you're going to drop support for it in Squeeze, then yes,
 a warning message is necessary.  Both the kernel maintainer scripts
 *and* update-initramfs -u *must* issue a warning message if they
 find do_bootloader = yes specified in /etc/kernel-img.conf.
 In fact, since the default value is yes, they should issue
 the warning message unless do_bootloader is *explicitly* set
 to no.
 
 I can put a one-time warning into linux-base.  But the default for
 squeeze must be 'no'.  It should not be necessary to create
 /etc/kernel-img.conf at all in squeeze.

That's a good idea.  I'm just concerned about migrations from
a previous release where users may be relying on the implicit
default to get their boot loader run.
 
 6. The installer must not define do_bootloader, postinst_hook or
 postrm_hook in /etc/kernel-img.conf.
 
 Doesn't this conflict with point 4 (a)?
 
 Not at all.  This means postinst_hook and postrm_hook are now strictly
 for use by the user.

OK.

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


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/1129698791.34865.1277816465356.javamail.r...@md01.wow.synacor.com



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-29 Thread Stephen Powell
On Mon, 28 Jun 2010 19:07:16 -0400 (EDT), Ben Hutchings wrote:
 ...
 I can put a one-time warning into linux-base.  But the default for
 squeeze must be 'no'.  It should not be necessary to create
 /etc/kernel-img.conf at all in squeeze.

Sorry I didn't think of this the first time, but there are up to
four steps to preparing a kernel for booting:

(1) Installation of the kernel itself
(2) Creation of an initial RAM file system
(3) Updating symbolic links
(4) Running the boot loader installer

Not all steps are required in all cases, depending on the circumstances.
Neither grub version 1 nor grub version 2 generally use symbolic links;
so that hasn't been on the forefront of most people's minds.
Strictly speaking, the historic boot loaders such as lilo
and zipl don't *have* to use symbolic links, but as they
have historically been used in Debian systems, they generally do.

Obviously, item 1 takes care of itself.  For stock kernels,
item 2 also takes care of itself.  And it appears that the
latest version of initramfs-tools provides hook scripts
of the same name in /etc/kernel/postinst.d and
/etc/kernel/postrm.d which take care of item 2 for kernel
image packages created by make-kpkg and make deb-pkg as well.
(Actually, that item does need some work, but I'll come
back to that later.  For now, let's assume that item 2
is taken care of.)  Item 4 is what we've been talking about.
Each boot loader that needs some kind of update will have
to provide a hook script starting with zz-.

Now the question is, what should we do about item 3, maintaining
the symlinks?  For stock kernels, that has historically been
handled by variables in /etc/kernel-img.conf: do_symlinks,
relative_links, and link_in_boot, mainly, though there are
other seldom-used variations.  But you just said that the goal
was to be able to eliminate /etc/kernel-img.conf.  So what
do we do about symlinks?  Fortunately, the update-initramfs -u
issue doesn't affect the symlinks.  The symlinks only need to be
maintained, if at all, when a kernel is installed, updated,
or removed.  The symlinks are not, strictly speaking, associated
with a package.  Should the boot loader script take care of
it?  Or should this be a separate script?  What do you think?

I said I would come back to initramfs-tools; so now I'm back.
There are two issues with the script as written today.
(1) it does not redirect standard output to standard error
when invoking update-initramfs.  Thus, the user sees no
output (since debconf swallows it) and, depending on the output,
it may cause problems for debconf.  (2) it unconditionally
creates an initial RAM file system for kernel image packages
created by make-kpkg, even if the user doesn't want one.
There is a way to check to see if one is needed.  I can
submit a revised version of the script if you like.  Would
you like me to do so?

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


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/1783519414.48436.1277843088409.javamail.r...@md01.wow.synacor.com



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-29 Thread maximilian attems
On Tue, Jun 29, 2010 at 04:24:48PM -0400, Stephen Powell wrote:
 On Mon, 28 Jun 2010 19:07:16 -0400 (EDT), Ben Hutchings wrote:
  ...
  I can put a one-time warning into linux-base.  But the default for
  squeeze must be 'no'.  It should not be necessary to create
  /etc/kernel-img.conf at all in squeeze.
 
 Sorry I didn't think of this the first time, but there are up to
 four steps to preparing a kernel for booting:
 
 (1) Installation of the kernel itself
 (2) Creation of an initial RAM file system
 (3) Updating symbolic links

they are deprecated and shouldn't be necessary.
there are even more evil incarnations like reverse symlinks or whatever.
which we no longer support since longer..
it be better to just get rid of them.

 (4) Running the boot loader installer
 
 Not all steps are required in all cases, depending on the circumstances.
 Neither grub version 1 nor grub version 2 generally use symbolic links;
 so that hasn't been on the forefront of most people's minds.
 Strictly speaking, the historic boot loaders such as lilo
 and zipl don't *have* to use symbolic links, but as they
 have historically been used in Debian systems, they generally do.
 
 Obviously, item 1 takes care of itself.  For stock kernels,
 item 2 also takes care of itself.  And it appears that the
 latest version of initramfs-tools provides hook scripts
 of the same name in /etc/kernel/postinst.d and
 /etc/kernel/postrm.d which take care of item 2 for kernel
 image packages created by make-kpkg and make deb-pkg as well.
 (Actually, that item does need some work, but I'll come
 back to that later.  For now, let's assume that item 2
 is taken care of.)  Item 4 is what we've been talking about.
 Each boot loader that needs some kind of update will have
 to provide a hook script starting with zz-.
 
 Now the question is, what should we do about item 3, maintaining
 the symlinks?  For stock kernels, that has historically been
 handled by variables in /etc/kernel-img.conf: do_symlinks,
 relative_links, and link_in_boot, mainly, though there are
 other seldom-used variations.  But you just said that the goal
 was to be able to eliminate /etc/kernel-img.conf.  So what
 do we do about symlinks?  Fortunately, the update-initramfs -u
 issue doesn't affect the symlinks.  The symlinks only need to be
 maintained, if at all, when a kernel is installed, updated,
 or removed.  The symlinks are not, strictly speaking, associated
 with a package.  Should the boot loader script take care of
 it?  Or should this be a separate script?  What do you think?

get rid of them. they are ugly and useless.
 
 I said I would come back to initramfs-tools; so now I'm back.
 There are two issues with the script as written today.
 (1) it does not redirect standard output to standard error
 when invoking update-initramfs.  Thus, the user sees no
 output (since debconf swallows it) and, depending on the output,
 it may cause problems for debconf.  (2) it unconditionally
 creates an initial RAM file system for kernel image packages
 created by make-kpkg, even if the user doesn't want one.
 There is a way to check to see if one is needed.  I can
 submit a revised version of the script if you like.  Would
 you like me to do so?

hate those indirections due to debconf magic, but why would
the hook scripts need one. thanks for hints, been staying away
from debconf for long..

the unconditional is expected and there is a wishlist bug
open for that it has not high priority as many things do
not work if you don'T use an initramfs.

thanks

ps if you want the no cc thing set up your mua appropriately.
   here in d-kernel we do cc.


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100629203540.gh9...@baikonur.stro.at



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread maximilian attems
On Mon, 28 Jun 2010, Ben Hutchings wrote:

 2. Packages for boot loaders that need to be updated whenever the files
 they load are modified must also install hook scripts in
 /etc/mkinitramfs/post-update.d.  Initramfs builders must call these
 scripts using run-parts after they create, update or delete an
 initramfs.  The arguments given to these hook scripts are the kernel ABI
 version and the absolute path to the initramfs image.

Please rename to more generic /etc/initramfs path.
mkinitramfs is initramfs-tools specific.
otherwise ack.
 
 3. Initramfs builders must complete their work before returning from the
 kernel postinst hook script.  [initramfs-tools currently uses a trigger
 to defer this because it can also be invoked twice, but this means it
 also has to know how to update specific boot loaders.]

not twice but multiple times, if you upgrade together for example
udev, lvm2, cryptsetup, mdadm and linux-2.6.
 
 4. During a kernel package installation, upgrade or removal, various
 boot loader hooks may be invoked (in this order):
 
 a. A postinst_hook or postrm_hook command set by the user or the
installer in /etc/kernel-img.conf
 b. A hook script in /etc/mkinitramfs/post-update.d
 c. A hook script in /etc/kernel/postinst.d or .../postrm.d
 
 To avoid unnecessary updates, the hooks invoked at step a and b may
 check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
 do nothing in this case.  [Is this sensible or is it too 'clever'?]

what is the intent of that point?
sorry you lost me here.
 
 5. Kernel and initramfs builder packages must not invoke boot loaders
 except via hooks.  If /etc/kernel-img.conf contains an explicit
 'do_bootloader = yes', kernel package maintainer scripts should warn
 that this is now ignored.

for backward compat and upgrade purpose from lenny,
I think the must is wrong.
 
 6. The installer must not define do_bootloader, postinst_hook or
 postrm_hook in /etc/kernel-img.conf.
 ---

thanks

-- 
maks


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100628084532.ga23...@stro.at



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Ben Hutchings
On Mon, 2010-06-28 at 10:45 +0200, maximilian attems wrote:
 On Mon, 28 Jun 2010, Ben Hutchings wrote:
[...]
  4. During a kernel package installation, upgrade or removal, various
  boot loader hooks may be invoked (in this order):
  
  a. A postinst_hook or postrm_hook command set by the user or the
 installer in /etc/kernel-img.conf
  b. A hook script in /etc/mkinitramfs/post-update.d
  c. A hook script in /etc/kernel/postinst.d or .../postrm.d
  
  To avoid unnecessary updates, the hooks invoked at step a and b may
  check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
  do nothing in this case.  [Is this sensible or is it too 'clever'?]
 
 what is the intent of that point?
 sorry you lost me here.

I'm wondering whether this is a reasonable way to test whether a kernel
package upgrade is in progress.

  5. Kernel and initramfs builder packages must not invoke boot loaders
  except via hooks.  If /etc/kernel-img.conf contains an explicit
  'do_bootloader = yes', kernel package maintainer scripts should warn
  that this is now ignored.
 
 for backward compat and upgrade purpose from lenny,
 I think the must is wrong.
[...]

Do you mean that the boot loader might not get updated during a
dist-upgrade?  I think that even if the kernel or initramfs builder
package is installed/upgraded before the boot loader package is upgraded
to include hook scripts, the boot loader package will update the boot
loader when it is upgraded.  (And the boot loader package is sure to be
upgraded in order to add those hook scripts.)

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.


signature.asc
Description: This is a digitally signed message part


Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Stephen Powell
I took the liberty of adding debian-boot and debian-s390 to the CC
list on this e-mail, since it affects the Debian installer and
the s390-tools package, which contains the zipl boot loader, which
has a design very similar to that of lilo.  If this results in some people
getting more than one copy of this e-mail, please accept my apologies; but
I figured it was better to err on the side of caution in this case.
I also added Joachim Wiedorn, the new lilo upstream maintainer (who
also happens to be the Debian package maintainer for backup2l).

On Sun, 27 Jun 2010 22:02:35 -0400 (EDT), Ben Hutchings wrote:
 
 I propose the following policy for squeeze and later releases.  This
 affects all Linux kernel, initramfs builder and boot loader packages,
 and the installer.
 
 I regret that this is happening so late in the release cycle, but
 currently a kernel update can easily leave the system unbootable and
 this does need to be addressed before release and I want to do so in a
 way that is reasonably clean and maintainable.
 
 ---
 1. Packages for boot loaders that need to be updated whenever the files
 they load are modified (i.e. those that store a block list) must install
 hook scripts in /etc/kernel/postinst.d and /etc/kernel/postrm.d, which
 will be called on installation/upgrade and removal of kernel packages,
 respectively.
 
 The arguments given to all kernel hook scripts are the kernel ABI
 version (the string that uname -r reports) and the absolute path to the
 kernel image.

Currently, hook scripts invoked by a stock kernel maintainer script
or a maintainer script from a kernel image package created by make-kpkg
pass these exact same arguments.  But a maintainer script for a kernel
image package created by make deb-pkg passes only the first argument.
Existing hook scripts rely on that difference to determine whether or
not to take action.  For example, the initramfs hook script provided by
the initramfs-tools package tests the number of arguments and exits
without doing anything if more than one argument is supplied.  In other
words, this hook script is designed to create the initial RAM file system
for a kernel image created by make deb-pkg, and only for a kernel
image created by make deb-pkg.  It does nothing otherwise.  Are you
proposing to change this behavior?

 The environment variable DEB_MAINT_PARAMS will contain
 the arguments given to the kernel maintainer script, single-quoted.

Is this environment variable provided by the maintainer scripts
that come with kernel image packages created by make deb-pkg?
(I honestly don't know.  I've never used make deb-pkg.)

 
 Since these boot loaders should be updated as the last step during
 installation/upgrade and removal, hook scripts for boot loaders must be
 named using the prefix 'zz-' and no other packages may use this prefix
 or one that sorts later by the rules used by run-parts.  A postrm hook
 script should warn but exit with code 0 if the boot loader configuration
 file still refers to the kernel image that has been removed.
 
 2. Packages for boot loaders that need to be updated whenever the files
 they load are modified must also install hook scripts in
 /etc/mkinitramfs/post-update.d.  Initramfs builders must call these
 scripts using run-parts after they create, update or delete an
 initramfs.  The arguments given to these hook scripts are the kernel ABI
 version and the absolute path to the initramfs image.
 
 3. Initramfs builders must complete their work before returning from the
 kernel postinst hook script.  [initramfs-tools currently uses a trigger
 to defer this because it can also be invoked twice, but this means it
 also has to know how to update specific boot loaders.]
 
 4. During a kernel package installation, upgrade or removal, various
 boot loader hooks may be invoked (in this order):
 
 a. A postinst_hook or postrm_hook command set by the user or the
installer in /etc/kernel-img.conf
 b. A hook script in /etc/mkinitramfs/post-update.d
 c. A hook script in /etc/kernel/postinst.d or .../postrm.d
 
 To avoid unnecessary updates, the hooks invoked at step a and b may
 check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
 do nothing in this case.  [Is this sensible or is it too 'clever'?]
 
 5. Kernel and initramfs builder packages must not invoke boot loaders
 except via hooks.  If /etc/kernel-img.conf contains an explicit
 'do_bootloader = yes', kernel package maintainer scripts should warn
 that this is now ignored.

At the risk of flogging a dead horse, I would prefer to see
do_bootloader = yes supported until Squeeze+1, both by the
kernel maintainer scripts and by update-initramfs -u, particularly
since we are so close to a freeze.  But if
you're going to drop support for it in Squeeze, then yes,
a warning message is necessary.  Both the kernel maintainer scripts
*and* update-initramfs -u *must* issue a warning message if they
find do_bootloader = yes specified in /etc/kernel-img.conf.
In fact, since 

Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Joachim Wiedorn
Hello William,

perhaps you have read the recent email from Ben (see below). It would be
important to update the lilo package to support these recent requirements
to prepare LILO for Squeeze before it will get stable.

Do you have the intention to update the lilo package to integrate some
scripts for these recent requirements?

Have a nice day,

Joachim (Germany)

---

Ben Hutchings b...@decadent.org.uk wrote on 2010-06-28 03:02:

 I propose the following policy for squeeze and later releases.  This
 affects all Linux kernel, initramfs builder and boot loader packages,
 and the installer.
 
 I regret that this is happening so late in the release cycle, but
 currently a kernel update can easily leave the system unbootable and
 this does need to be addressed before release and I want to do so in a
 way that is reasonably clean and maintainable.
 
 ---
 1. Packages for boot loaders that need to be updated whenever the files
 they load are modified (i.e. those that store a block list) must install
 hook scripts in /etc/kernel/postinst.d and /etc/kernel/postrm.d, which
 will be called on installation/upgrade and removal of kernel packages,
 respectively.
 
 The arguments given to all kernel hook scripts are the kernel ABI
 version (the string that uname -r reports) and the absolute path to the
 kernel image.  The environment variable DEB_MAINT_PARAMS will contain
 the arguments given to the kernel maintainer script, single-quoted.
 
 Since these boot loaders should be updated as the last step during
 installation/upgrade and removal, hook scripts for boot loaders must be
 named using the prefix 'zz-' and no other packages may use this prefix
 or one that sorts later by the rules used by run-parts.  A postrm hook
 script should warn but exit with code 0 if the boot loader configuration
 file still refers to the kernel image that has been removed.
 
 2. Packages for boot loaders that need to be updated whenever the files
 they load are modified must also install hook scripts in
 /etc/mkinitramfs/post-update.d.  Initramfs builders must call these
 scripts using run-parts after they create, update or delete an
 initramfs.  The arguments given to these hook scripts are the kernel ABI
 version and the absolute path to the initramfs image.
 
 3. Initramfs builders must complete their work before returning from the
 kernel postinst hook script.  [initramfs-tools currently uses a trigger
 to defer this because it can also be invoked twice, but this means it
 also has to know how to update specific boot loaders.]
 
 4. During a kernel package installation, upgrade or removal, various
 boot loader hooks may be invoked (in this order):
 
 a. A postinst_hook or postrm_hook command set by the user or the
installer in /etc/kernel-img.conf
 b. A hook script in /etc/mkinitramfs/post-update.d
 c. A hook script in /etc/kernel/postinst.d or .../postrm.d
 
 To avoid unnecessary updates, the hooks invoked at step a and b may
 check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
 do nothing in this case.  [Is this sensible or is it too 'clever'?]
 
 5. Kernel and initramfs builder packages must not invoke boot loaders
 except via hooks.  If /etc/kernel-img.conf contains an explicit
 'do_bootloader = yes', kernel package maintainer scripts should warn
 that this is now ignored.
 
 6. The installer must not define do_bootloader, postinst_hook or
 postrm_hook in /etc/kernel-img.conf.
 ---
 
 I'm particularly interested to hear whether there are any upgrade issues
 I have not addressed.
 
 Ben.
 


signature.asc
Description: PGP signature


Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread maximilian attems
On Mon, Jun 28, 2010 at 11:16:58AM -0400, Stephen Powell wrote:
  ---
  1. Packages for boot loaders that need to be updated whenever the files
  they load are modified (i.e. those that store a block list) must install
  hook scripts in /etc/kernel/postinst.d and /etc/kernel/postrm.d, which
  will be called on installation/upgrade and removal of kernel packages,
  respectively.
  
  The arguments given to all kernel hook scripts are the kernel ABI
  version (the string that uname -r reports) and the absolute path to the
  kernel image.
 
 Currently, hook scripts invoked by a stock kernel maintainer script
 or a maintainer script from a kernel image package created by make-kpkg
 pass these exact same arguments.

no.

 But a maintainer script for a kernel
 image package created by make deb-pkg passes only the first argument.

no.

 Existing hook scripts rely on that difference to determine whether or
 not to take action.  For example, the initramfs hook script provided by
 the initramfs-tools package tests the number of arguments and exits
 without doing anything if more than one argument is supplied.  In other
 words, this hook script is designed to create the initial RAM file system
 for a kernel image created by make deb-pkg, and only for a kernel
 image created by make deb-pkg.  It does nothing otherwise.  Are you
 proposing to change this behavior?

please get your facts right before spamming the world.

kthxbye.


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100628164510.gb9...@baikonur.stro.at



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread maximilian attems
On Mon, Jun 28, 2010 at 01:35:20PM +0100, Ben Hutchings wrote:
 On Mon, 2010-06-28 at 10:45 +0200, maximilian attems wrote:
  On Mon, 28 Jun 2010, Ben Hutchings wrote:
 [...]
   4. During a kernel package installation, upgrade or removal, various
   boot loader hooks may be invoked (in this order):
   
   a. A postinst_hook or postrm_hook command set by the user or the
  installer in /etc/kernel-img.conf
   b. A hook script in /etc/mkinitramfs/post-update.d
   c. A hook script in /etc/kernel/postinst.d or .../postrm.d
   
   To avoid unnecessary updates, the hooks invoked at step a and b may
   check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
   do nothing in this case.  [Is this sensible or is it too 'clever'?]
  
  what is the intent of that point?
  sorry you lost me here.
 
 I'm wondering whether this is a reasonable way to test whether a kernel
 package upgrade is in progress.

currently it is easy to tell in /etc/kernel if you are invoked by
linux-2.6 as it doesn't define KERNEL_PACKAGE_VERSION.

make deb-pkg run-parts invocation doesn't pass at all the second stupid
arg.

for update-initramfs it shouldn't be necessary as the updates are
trigger updated anyway.
 
   5. Kernel and initramfs builder packages must not invoke boot loaders
   except via hooks.  If /etc/kernel-img.conf contains an explicit
   'do_bootloader = yes', kernel package maintainer scripts should warn
   that this is now ignored.
  
  for backward compat and upgrade purpose from lenny,
  I think the must is wrong.
 [...]
 
 Do you mean that the boot loader might not get updated during a
 dist-upgrade?  I think that even if the kernel or initramfs builder
 package is installed/upgraded before the boot loader package is upgraded
 to include hook scripts, the boot loader package will update the boot
 loader when it is upgraded.  (And the boot loader package is sure to be
 upgraded in order to add those hook scripts.)

yes the bootloader might be Lenny one and thus no hooks to be run.
in partial upgrades you get all kind of crazy pathes,
thus it is better to handle the previsous distro.


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100628165728.gc9...@baikonur.stro.at



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Stephen Powell
On Mon, 28 Jun 2010 12:45:10 -0400 (EDT), maximilian attems wrote:
 On Mon, 28 Jun 2010 03:02:35 +0100 Ben Hutchings wrote:
 The arguments given to all kernel hook scripts are the kernel ABI
 version (the string that uname -r reports) and the absolute path to the
 kernel image.
 On Mon, Jun 28, 2010 at 11:16:58AM -0400, Stephen Powell wrote:
 Currently, hook scripts invoked by a stock kernel maintainer script
 or a maintainer script from a kernel image package created by make-kpkg
 pass these exact same arguments.
 
 no.

From a Squeeze system running a custom kernel created by make-kpkg:

-

debian3:~# dpkg-reconfigure linux-image-2.6.32-custom5b-s390x
Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/S30initramfs 2.6.32-custom5b-s390x 
/boot/vmlinuz-2.6.32-custom5b-s390x
 ^ ^
 +-- 1st argument  
+-- 2nd argument
  
-

From a Squeeze system running a stock kernel image:

-

r...@testdebian:~# dpkg-reconfigure linux-image-2.6.32-3-686
Running depmod.
Running update-initramfs: Generating /boot/initrd.img-2.6.32-3-686
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/S30initramfs 2.6.32-3-686 
/boot/vmlinuz-2.6.32-3-686
 ^^
 |+-- 2nd 
argument
 +-- 1st argument

-

Q.E.D.

 On Mon, Jun 28, 2010 at 11:16:58AM -0400, Stephen Powell wrote:
 But a maintainer script for a kernel
 image package created by make deb-pkg passes only the first argument.
 
 no.

The actual text of /etc/kernel/postinst.d/initramfs-tools:

-

#!/bin/sh

version=$1
bootopt=

# passing the kernel version is required
[ -z ${version} ]  exit 0

# kernel-package passes an extra arg
if [ -n $2 ]; then
if [ -n ${KERNEL_PACKAGE_VERSION} ]; then
bootdir=$(dirname $2)
bootopt=-b ${bootdir}
else
# official Debian linux-images take care themself
exit 0
fi
fi

# avoid running multiple times
if [ -n $DEB_MAINT_PARAMS ]; then
eval set -- $DEB_MAINT_PARAMS
if [ -z $1 ] || [ $1 != configure ]; then
exit 0
fi
fi

# we're good - create initramfs.  update runs do_bootloader
update-initramfs -c -t -k ${version} ${bootopt}

-

I admit that I have never personally used make deb-pkg, but
clearly the source code speaks for itself.  This hook script is
expecting only one argument when invoked by make deb-pkg.

Q.E.D.

 On Mon, Jun 28, 2010 at 11:16:58AM -0400, Stephen Powell wrote: 
 Existing hook scripts rely on that difference to determine whether or
 not to take action.  For example, the initramfs hook script provided by
 the initramfs-tools package tests the number of arguments and exits
 without doing anything if more than one argument is supplied.  In other
 words, this hook script is designed to create the initial RAM file system
 for a kernel image created by make deb-pkg, and only for a kernel
 image created by make deb-pkg.  It does nothing otherwise.  Are you
 proposing to change this behavior?
 
 please get your facts right before spamming the world.

OK, you're partly right on this one.  Execution tracing shows that it
does nothing when invoked by a stock kernel maintainer script but
does create an initial RAM file system when invoked by a maintainer
script from a kernel image package created by make-kpkg.  (By the way,
since this script is running under debconf, output from update-initramfs
should be redirected to standard error via 2.)  I don't remember the
kernel-package logic being present in this script the last time I looked
at it.

(1) As far as I am able to determine, my original statements are correct,
with the exception of the correction made in the above paragraph.
If you can prove me wrong, please do so.
(2) This was not spam.  Spam is unsolicited advertising.
This was a response to an RFC, to which I was explicitly
included as an adressee.
(3) All the addressees of my e-mail were legitimate stake-holders
in this process.  This is not the world.

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


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/1137353821.16101.1277752206454.javamail.r...@md01.wow.synacor.com



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Colin Watson
On Mon, Jun 28, 2010 at 03:02:35AM +0100, Ben Hutchings wrote:
 1. Packages for boot loaders that need to be updated whenever the files
 they load are modified (i.e. those that store a block list) must install
 hook scripts in /etc/kernel/postinst.d and /etc/kernel/postrm.d, which
 will be called on installation/upgrade and removal of kernel packages,
 respectively.

It seems to me (particularly from the fact that you upgraded a grub2 bug
report about this to important - GRUB 2 does not store block lists for
kernels) that this is not limited to boot loaders that store block lists
for the files they load: it also affects boot loaders that need to be
updated whenever the *list* of files they load is modified.  Can you
confirm that my understanding is correct?

 2. Packages for boot loaders that need to be updated whenever the files
 they load are modified must also install hook scripts in
 /etc/mkinitramfs/post-update.d.  Initramfs builders must call these
 scripts using run-parts after they create, update or delete an
 initramfs.  The arguments given to these hook scripts are the kernel ABI
 version and the absolute path to the initramfs image.

Does the same apply here, or not?  This is going to be quite a lot of
calls to update-grub if so, although at least it's quite a bit faster
now than it used to be ...

 3. Initramfs builders must complete their work before returning from the
 kernel postinst hook script.  [initramfs-tools currently uses a trigger
 to defer this because it can also be invoked twice, but this means it
 also has to know how to update specific boot loaders.]

Is an initramfs guaranteed to be built before any of the boot loader
hooks are executed?  It seems like a waste of time calling boot loader
hooks otherwise.  (This may be implied by your design, but it was a
little bit implicit if so.)

 4. During a kernel package installation, upgrade or removal, various
 boot loader hooks may be invoked (in this order):
 
 a. A postinst_hook or postrm_hook command set by the user or the
installer in /etc/kernel-img.conf
 b. A hook script in /etc/mkinitramfs/post-update.d
 c. A hook script in /etc/kernel/postinst.d or .../postrm.d
 
 To avoid unnecessary updates, the hooks invoked at step a and b may
 check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
 do nothing in this case.  [Is this sensible or is it too 'clever'?]

Sensible, I think.  There's no point running update-grub three times.

-- 
Colin Watson   [cjwat...@debian.org]


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20100628221906.ga28...@master.debian.org



Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Ben Hutchings
On Mon, 2010-06-28 at 18:57 +0200, maximilian attems wrote:
 On Mon, Jun 28, 2010 at 01:35:20PM +0100, Ben Hutchings wrote:
  On Mon, 2010-06-28 at 10:45 +0200, maximilian attems wrote:
   On Mon, 28 Jun 2010, Ben Hutchings wrote:
  [...]
4. During a kernel package installation, upgrade or removal, various
boot loader hooks may be invoked (in this order):

a. A postinst_hook or postrm_hook command set by the user or the
   installer in /etc/kernel-img.conf
b. A hook script in /etc/mkinitramfs/post-update.d
c. A hook script in /etc/kernel/postinst.d or .../postrm.d

To avoid unnecessary updates, the hooks invoked at step a and b may
check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
do nothing in this case.  [Is this sensible or is it too 'clever'?]
   
   what is the intent of that point?
   sorry you lost me here.
  
  I'm wondering whether this is a reasonable way to test whether a kernel
  package upgrade is in progress.
 
 currently it is easy to tell in /etc/kernel if you are invoked by
 linux-2.6 as it doesn't define KERNEL_PACKAGE_VERSION.
 
 make deb-pkg run-parts invocation doesn't pass at all the second stupid
 arg.

OK.  Should we say that if the second argument is missing then the
absolute path is /boot/vmlinuz-$version or /boot/vmlinux-$version
according to architecture convention?

 for update-initramfs it shouldn't be necessary as the updates are
 trigger updated anyway.
  
5. Kernel and initramfs builder packages must not invoke boot loaders
except via hooks.  If /etc/kernel-img.conf contains an explicit
'do_bootloader = yes', kernel package maintainer scripts should warn
that this is now ignored.
   
   for backward compat and upgrade purpose from lenny,
   I think the must is wrong.
  [...]
  
  Do you mean that the boot loader might not get updated during a
  dist-upgrade?  I think that even if the kernel or initramfs builder
  package is installed/upgraded before the boot loader package is upgraded
  to include hook scripts, the boot loader package will update the boot
  loader when it is upgraded.  (And the boot loader package is sure to be
  upgraded in order to add those hook scripts.)
 
 yes the bootloader might be Lenny one and thus no hooks to be run.
 in partial upgrades you get all kind of crazy pathes,
 thus it is better to handle the previsous distro.

You're thinking of a system with lilo from lenny and initramfs-tools
from squeeze?  Yes, I see that would be a problem.

How do we keep initramfs-tools working in this case while still allowing
newer boot loader packages to avoid redundant updates?  Could we say
that initramfs-tools mustn't invoke boot loaders directly if
/etc/initramfs/post-update.d exists and is non-empty?

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.


signature.asc
Description: This is a digitally signed message part


Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Ben Hutchings
On Mon, 2010-06-28 at 22:19 +, Colin Watson wrote:
 On Mon, Jun 28, 2010 at 03:02:35AM +0100, Ben Hutchings wrote:
  1. Packages for boot loaders that need to be updated whenever the files
  they load are modified (i.e. those that store a block list) must install
  hook scripts in /etc/kernel/postinst.d and /etc/kernel/postrm.d, which
  will be called on installation/upgrade and removal of kernel packages,
  respectively.
 
 It seems to me (particularly from the fact that you upgraded a grub2 bug
 report about this to important - GRUB 2 does not store block lists for
 kernels) that this is not limited to boot loaders that store block lists
 for the files they load: it also affects boot loaders that need to be
 updated whenever the *list* of files they load is modified.  Can you
 confirm that my understanding is correct?

Sorry, I managed to lose this sentence during editing:

'Packages for boot loaders that can provide a menu of kernel versions
should install kernel hook scripts in order to update that menu.'

  2. Packages for boot loaders that need to be updated whenever the files
  they load are modified must also install hook scripts in
  /etc/mkinitramfs/post-update.d.  Initramfs builders must call these
  scripts using run-parts after they create, update or delete an
  initramfs.  The arguments given to these hook scripts are the kernel ABI
  version and the absolute path to the initramfs image.
 
 Does the same apply here, or not?  This is going to be quite a lot of
 calls to update-grub if so, although at least it's quite a bit faster
 now than it used to be ...

No.

  3. Initramfs builders must complete their work before returning from the
  kernel postinst hook script.  [initramfs-tools currently uses a trigger
  to defer this because it can also be invoked twice, but this means it
  also has to know how to update specific boot loaders.]
 
 Is an initramfs guaranteed to be built before any of the boot loader
 hooks are executed?  It seems like a waste of time calling boot loader
 hooks otherwise.  (This may be implied by your design, but it was a
 little bit implicit if so.)
[...]

This requirement and the naming requirements on hook scripts are
intended to guarantee that.

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.


signature.asc
Description: This is a digitally signed message part


Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Ben Hutchings
Please reply to debian-kernel only.

On Mon, 2010-06-28 at 11:16 -0400, Stephen Powell wrote:
 On Sun, 27 Jun 2010 22:02:35 -0400 (EDT), Ben Hutchings wrote:
[...]
  The environment variable DEB_MAINT_PARAMS will contain
  the arguments given to the kernel maintainer script, single-quoted.
 
 Is this environment variable provided by the maintainer scripts
 that come with kernel image packages created by make deb-pkg?
 (I honestly don't know.  I've never used make deb-pkg.)

It has done since 2.6.31, though without single-quotes.  I'll note that
they may or may not be quoted, and recommend how to use this variable.

[...]
  5. Kernel and initramfs builder packages must not invoke boot loaders
  except via hooks.  If /etc/kernel-img.conf contains an explicit
  'do_bootloader = yes', kernel package maintainer scripts should warn
  that this is now ignored.
 
 At the risk of flogging a dead horse, I would prefer to see
 do_bootloader = yes supported until Squeeze+1, both by the
 kernel maintainer scripts and by update-initramfs -u, particularly
 since we are so close to a freeze.

The release team has stated we are not close to a freeze.  So we have a
little time to sort this out.

 But if
 you're going to drop support for it in Squeeze, then yes,
 a warning message is necessary.  Both the kernel maintainer scripts
 *and* update-initramfs -u *must* issue a warning message if they
 find do_bootloader = yes specified in /etc/kernel-img.conf.
 In fact, since the default value is yes, they should issue
 the warning message unless do_bootloader is *explicitly* set
 to no.

I can put a one-time warning into linux-base.  But the default for
squeeze must be 'no'.  It should not be necessary to create
/etc/kernel-img.conf at all in squeeze.

  6. The installer must not define do_bootloader, postinst_hook or
  postrm_hook in /etc/kernel-img.conf.
 
 Doesn't this conflict with point 4 (a)?

Not at all.  This means postinst_hook and postrm_hook are now strictly
for use by the user.

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.


signature.asc
Description: This is a digitally signed message part


Re: [DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-28 Thread Ben Hutchings
On Mon, 2010-06-28 at 18:45 +0200, maximilian attems wrote:
[...]
 please get your facts right before spamming the world.

Max, this is rude and unjustified.

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.


signature.asc
Description: This is a digitally signed message part


[DRAFT] Policy for Linux kernel, initramfs, boot loader update process

2010-06-27 Thread Ben Hutchings
I propose the following policy for squeeze and later releases.  This
affects all Linux kernel, initramfs builder and boot loader packages,
and the installer.

I regret that this is happening so late in the release cycle, but
currently a kernel update can easily leave the system unbootable and
this does need to be addressed before release and I want to do so in a
way that is reasonably clean and maintainable.

---
1. Packages for boot loaders that need to be updated whenever the files
they load are modified (i.e. those that store a block list) must install
hook scripts in /etc/kernel/postinst.d and /etc/kernel/postrm.d, which
will be called on installation/upgrade and removal of kernel packages,
respectively.

The arguments given to all kernel hook scripts are the kernel ABI
version (the string that uname -r reports) and the absolute path to the
kernel image.  The environment variable DEB_MAINT_PARAMS will contain
the arguments given to the kernel maintainer script, single-quoted.

Since these boot loaders should be updated as the last step during
installation/upgrade and removal, hook scripts for boot loaders must be
named using the prefix 'zz-' and no other packages may use this prefix
or one that sorts later by the rules used by run-parts.  A postrm hook
script should warn but exit with code 0 if the boot loader configuration
file still refers to the kernel image that has been removed.

2. Packages for boot loaders that need to be updated whenever the files
they load are modified must also install hook scripts in
/etc/mkinitramfs/post-update.d.  Initramfs builders must call these
scripts using run-parts after they create, update or delete an
initramfs.  The arguments given to these hook scripts are the kernel ABI
version and the absolute path to the initramfs image.

3. Initramfs builders must complete their work before returning from the
kernel postinst hook script.  [initramfs-tools currently uses a trigger
to defer this because it can also be invoked twice, but this means it
also has to know how to update specific boot loaders.]

4. During a kernel package installation, upgrade or removal, various
boot loader hooks may be invoked (in this order):

a. A postinst_hook or postrm_hook command set by the user or the
   installer in /etc/kernel-img.conf
b. A hook script in /etc/mkinitramfs/post-update.d
c. A hook script in /etc/kernel/postinst.d or .../postrm.d

To avoid unnecessary updates, the hooks invoked at step a and b may
check whether $DPKG_MAINTSCRIPT_PACKAGE begins with 'linux-image-' and
do nothing in this case.  [Is this sensible or is it too 'clever'?]

5. Kernel and initramfs builder packages must not invoke boot loaders
except via hooks.  If /etc/kernel-img.conf contains an explicit
'do_bootloader = yes', kernel package maintainer scripts should warn
that this is now ignored.

6. The installer must not define do_bootloader, postinst_hook or
postrm_hook in /etc/kernel-img.conf.
---

I'm particularly interested to hear whether there are any upgrade issues
I have not addressed.

Ben.

-- 
Ben Hutchings
Once a job is fouled up, anything done to improve it makes it worse.


signature.asc
Description: This is a digitally signed message part