[ I am not subscribed. Please keep me in CC. ]

Currently, init system packages (sysvinit-core, runit-init,
systemd-sysv) are mutually exclusive -- each of them provides,
among other, /sbin/init file and as such, conflicts with rest.

This scheme has following drawbacks:

 * switching between init systems is destructive:
   once you switch, old /sbin/init is gone; should things go wrong, you
   have no easy recover via init=/sbin/old-init kernel option.

   Side note: switching from systemd is more safe, since systemd-sysv
   provides only link to /lib/systemd.

 * unneeded inter-dependencies. New system would require update of
   'Conflicts' field in rest packages.

 * After new init system is installed and old is removed, system is left
   running with old pid1 and no tools to control it, unless new system
   is providing compatibility.

I propose to replace current approach with update-alternatives(1)
approach.  By coordinated effort of present init systems (in thread), we
introduce master link /sbin/init and number of slave links:

        /sbin/halt
        /sbin/poweroff
        /sbin/reboot
        /sbin/runlevel
        /sbin/shutdown
        /usr/share/man/man8/halt.8.gz
        /usr/share/man/man8/init.8.gz
        /usr/share/man/man8/poweroff.8.gz
        /usr/share/man/man8/reboot.8.gz
        /usr/share/man/man8/runlevel.8.gz
        /usr/share/man/man8/shutdown.8.gz

After this is done, init systems will no longer conflict each other, and
all mentioned issues would be solved. I see it as clear win, but
probably I am missing something.

Opinions?

Attachment: pgpLIZyW8jnrU.pgp
Description: PGP signature

Reply via email to