On Sun, Jul 10, 2005 at 01:02:11AM +0200, Marco d'Itri wrote:
> On Jul 10, Jakob Bohm <[EMAIL PROTECTED]> wrote:
> 
> > It seams that if getting udev 0.6x quickly rewritten to support all
> > udev-based kernels in one version is too much work or too controversial, you
> > should do what modutils, cdrecord and other packages usually do for *major*
> > kernel upgrades (like 2.4.x to 2.6.x): package two versions of the source,
> > two sets of binaries (in one .deb) and some wrapper scripts or binaries to
> > exec the right one depending on the kernel version.
> No, this would be hell to maintain. So far it looks like that upgrading
> the kernel before udev will work well enough to finish the upgrade.

Upgrading the kernel is a non-option for solving this.  It is technically
impossible [1] and even if it was possible, it would be a major removal of a
primary feature of the Debian distribution and packaging system as a whole
[2].

Like it or not, udev in etch MUST be a valid, functional, drop-in, no-reboot
upgrade from udev in sarge when running on top of any kernel image actually
included in sarge.  Ditto for the vast majority of correctly custom-compiled
kernels based on the kernel-source and kernel patch files actually included
in sarge.

Because sarge has already released, those kernel versions are now "cast in
stone", as is the udev version actually shipped in sarge.  Any point release
updates to sarge only add to the list, they do not remove the need to
correctly upgrade from Debian 3.1r0.

Thus technically there is no way around the need to ship (and thus maintain)
a 2.6.8 compatible udev package named udev in etch.  Nor is there any way
around ensuring that if whatever kernel ships in etch (like 2.6.16 at the
current schedule) is still using udev, that switching back and forth [3]
between those two kernel versions can be done without manually installing,
removing, upgrading, downgrading, reconfiguring or otherwise manipulating
the etch udev package or anything else on the non-volatile disks of the
system.


But just to clarify the situation:

Does kernel 2.6.12 work with any udev version that also supports 2.6.8?

If yes, that is the udev version that can go in etch (and thus sid).

If no, then either we cannot upgrade to kernel 2.6.12 or some workaround
needs to be coded.

The best workaround would be to patch udev to make a single udev version
work with both kernel versions (2.6.8 and the etch 2.6.x, currently 2.6.12).

If this is too difficult, then packaging two versions of udev (one for each
kernel version) with trivial wrapper scripts is a tried and true solution,
already used for the similar breakage of modutils between the 2.4.18 (from
woody) and 2.6.8 (from sarge).

And if you don't know how to package 2 udev versions in one package, then
look at my sample code posted in this report, or the code in
module-init-tools in sarge, or the code in cdrecord in sarge, or the similar
code found in various other packages with kernel-dependent functionality,
including glibc.

> 
> (If you tried to discuss your ideas with maintainers before starting to
> write down big designs you would probably save a lot of time.)
> 

This is not a new idea, it is a routine solution and a lot of cut/paste from
sarge. The only thing that took time was double checking various boring
facts, spell checking my mail etc.

-Jakob

Footnotes:

[1] Changing kernel versions can only happen at system reboot.  Upgrading
udev or any other package must happen before or after a reboot.  So there
will be a period of time during this process where only one of the two has
been upgraded, and many parts of the system must be 100% functional during
that period in order to successfully complete the upgrade.

This includes any device needed to actually run the packaging system and its
user interface, for any and all of the various media options available to
our users for both .deb files, local disks and user interfaces.  Including,
amongst others, a huge portion of the udev managed devices and modules.

And there is also the possibility that the second of the two upgrade steps
may fail or need to be redone, e.g. due to network, disk or power failures.

An even more demanding possibility is if the reboot attempt reveals a need
to recompile the etch kernel with different options to match the users
hardware etc.  Then gcc and other toolchain stuff also needs to run on the
half-upgraded system.


[2] Specifically, that a system upgrade from one stable release to the next,
or from stable to testing/frozen can be done as dselect/apt-get/aptitude
dist-upgrade with no or few special precautions, and the corresponding
reboot delayed until the user is ready etc.  This can be seen e.g. in the
release notes for at least hamm, potato, woody and sarge, and possibly bo as
well.


[3] Since very early Debian release (I seem to recall this being in bo), all
kernel image installs moves the previous kernel from linux to linux.old and
all the boot loaders default to allowing the user to boot either at will.

This mechanism exists specifically to recover from kernels that do not boot
properly.  Thus if a problem occurs, the user is expected to use this or
other mechanisms to revert to the previous (2.6.8) kernel while diagnosing
and fixing the problem.

This may cause the installed udev files to see maybe 2.6.8, then 2.6.12,
then 2.6.8, then 2.6.8 again, then a working 2.6.12 etc. in any order.  Thus
udev cannot assume that a boot with 2.6.12 will not be followed by a boot of
2.6.8, and thus cannot simply "delay" irreversibly updating some files until
the first 2.6.12 boot.



-- 
This message is hastily written, please ignore any unpleasant wordings,
do not consider it a binding commitment, even if its phrasing may
indicate so. Its contents may be deliberately or accidentally untrue.
Trademarks and other things belong to their owners, if any.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to