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

Re: Y2038 - best way forward in Debian?



On Wed, Feb 12, 2020 at 06:10:53PM +0000, Steve McIntyre wrote:
> Russ Allbery wrote:
> >If we go down this path, can we make cross-grading a supported feature for
> >the next stable release?  I'm sure I'm not the only one who is stuck with
> >continuously-upgraded i386 hosts who has been wanting to switch but has
> >been waiting until cross-grading is a little bit less scary.
> 
> ACK - I've heard quite a few people asking for this over the last few
> years. I've personally cross-graded a couple of systems (and my home
> server has moved twice, i386->amd64->arm64), but it's not for the
> faint-hearted.
> 
> /me ponders - this could be a fun task for a GSoC/outreachy student to
> hack on, maybe?

Prior art:

* my unfinished https://github.com/kilobyte/crossgrade -- does a lot of
  error checking and continue-after-problem, but currently stops after
  crossgrading the essential set

* stuff linked from https://wiki.debian.org/CrossGrading


Problems:

* crossgrades fail _badly_ in a hard to recover way if packages for the
  two architectures come in different versions (including binNMUs).  This
  hurts especially if -ports archs are involved.

* arch-specific or local packages are not as bad but 1. crossgrade must
  know what's safe to remove, 2. what should be left unchanged (and their
  recursive deps unremoved), 3. there may be non-multiarchable packages
  within 1. or 2.'s dependency chain

* systemd can't handle being crossgraded (I'm a systemd hater, but same was
  noticed by eg. anarcat and Simon Richter).  On a minimal system it may
  survive but usually it starts killing daemons (including X), unmounting
  stuff, choking and forcing an unclean reboot, etc.  This could be worked
  around by:
  • switching to sysvinit
  • booting from a different media then chrooting to crossgrade (not for
    ordinary users unless it's eg. scripted from d-i)
  • having a package bring a grub entry that boots with
    init=/usr/sbin/crossgrade to do the thing?


Meow!
-- 
⢀⣴⠾⠻⢶⣦⠀ .globl _start↵.data↵rc: .ascii "/etc/init.d/rcS\0"↵.text↵_start
⣾⠁⢰⠒⠀⣿⡁ mov $57,%rax↵syscall↵cmp $0,%rax↵jne child↵parent:↵mov $61,%rax
⢿⡄⠘⠷⠚⠋⠀ mov $-1,%rdi↵xor %rsi,%rsi↵xor %rdx,%rdx↵syscall↵jmp parent↵child:
⠈⠳⣄⠀⠀⠀⠀ mov $59,%rax↵mov $rc,%rdi↵xor %rsi,%rsi↵xor %rdx,%rdx↵syscall


Reply to: