Package: ifupdown
Version: 0.7~rc3
Severity: critical
Justification: breaks the whole system

I have specified this bug as "critical/breaks the whole system", because
its effect is that if an external PPP link does not come up for some
reason, the system boot fails. It actually gets wedged so hard that you
cannot even boot into recovery mode to fix it; the problem can only
be resolved with a rescue disk. This is completely unacceptable.

According to the ifupdown package changelog, as of version 0.7~alpha4,
"ifup -a" will use the "updetach" option for PPP interfaces. This may
be an attempt to address the problem described in #127786, #287173,
and #347594, wherein it is implied that other boot scripts which
depend on the PPP link should be able to rely on it being up by the
time they are run.

This fails for two reasons. First, the termination of "pppd updetach"
does not by any means guarantee that the PPP link is up, only that
the attempt was made. It might have timed out and then failed, so
other boot processes must be prepared to deal with that contingency
anyway.

Second, PPP links can go up and down depending on conditions on external
WAN links and telephone lines, which are not in any way controllable
by the local system or its human administrators. For maximum resiliency,
it therefore makes sense to specify the PPP options "persist maxfail 0"
in /etc/network/interfaces, so that if the link does not come up on boot,
or goes down later, the PPP daemon will keep retrying indefinitely until
it does come up.

Unfortunately, the combination of these options, a broken WAN link,
and the "updetach" option now baked into the ifup binary result in an
unbootable system, which cannot even be gotten into recovery mode.
This is unacceptable.

It is quite inappropriate for "updetach" to be hard-wired into a binary
executable, where it can only be removed with a hex editor. However,
the patch for #196877, where this change is made, provides another
solution to the network dependency problem: "Allow passing PPP options"
(presumably in /etc/network/interfaces). If anybody wishes to have
the "updetach" behavior, let them specify it there, without forcing it
on other installations where it is quite possibly fatal.

Suggestion for further work on network dependencies at boot: perhaps
this is better handled in a general way for any type of network
interface, through hotplug or udev, or something like that? What happens
if /etc/network/interfaces specifies "auto eth0/iface eth0 inet dhcp",
and the DHCP server is not responding for some reason? Does this also
result in a boot failure? Is this not exactly analogous to the PPP
situation described above?

There seems to be some discussion of these issues in #245642.



-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'stable-updates'), (500, 'unstable'), 
(500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-2-amd64 (SMP w/1 CPU core)
Locale: LANG=en_CA.utf8, LC_CTYPE=en_CA.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages ifupdown depends on:
ii  dpkg         1.16.3
ii  initscripts  2.88dsf-22.1
ii  iproute      20120105-1
ii  libc6        2.13-32
ii  lsb-base     3.2-28

ifupdown recommends no packages.

Versions of packages ifupdown suggests:
pn  isc-dhcp-client [dhcp-client]  4.2.2.dfsg.1-5
pn  net-tools                      1.60-23
pn  ppp                            2.4.5-5.1
pn  rdnssd                         <none>

-- no debconf information

-- debsums errors found:
debsums: changed file /sbin/ifdown (from ifupdown package)
debsums: changed file /sbin/ifquery (from ifupdown package)
debsums: changed file /sbin/ifup (from ifupdown package)



-- 
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to