Public bug reported:

The upstart script compares the list of "auto" interfaces from ifquery
to the ifup.xx files created in /run/network and will only fire the
static-network-up event when all listed auto interfaces are shown as up.
The problem arises if virtual interfaces (eth0:1 eth0:2) are used to add
additional addresses to a single physical interface.  Virtual interfaces
are brought up by adding the address to the existing base interface, and
no corresponding file is created in /run/network for the virtual
interface (I believe this also holds true for VLAN interfaces i.e.
eth0.1) .  If the virtual device is brought up at boot with an "auto"
clause in /etc/network/interfaces then the script will see it in the
list from ifquery but never see it separately marked as up in the run
directory.

The result is that if any virtual interfaces are defined as auto, then
network boot will stall and system boot will not complete until failsafe
fires after 120 seconds.

My temporary solution to this is to patch the script to remove the
virtual part of the interface name before checking if it has been
brought up:

all_interfaces_up() {
        # return true if all interfaces listed in /etc/network/interfaces as 
'auto'
        # are up.  if no interfaces are found there, then "all [given] were up"
        local prefix="$1" iface=""
        for iface in $(get_auto_interfaces); do
>               iface=${iface##:*}
>               iface=${iface##.*}
                # if cur interface does is not up, then all have not been 
brought up
                [ -f "${prefix}${iface}" ] || return 1
        done
        return 0
}

This is an imperfect fix since it is then possible for the static-network-up 
event to fire before all virtual interfaces are indeed up - but if combined 
with ensuring that the interfaces with additional virtual/vlan  definitions are 
the first interfaces defined in /etc/network/interfaces I think this quick 
patch could save a lot of systems an annoying and unneeded 2 minute boot delay!
A more perfect fix would require a much deeper dive, as a different list of 
"up" interfaces must be found or created...

I have not checked the history of this script but it has not changed from my 
installed version of ifupdown (0.7.47.2ubuntu4.1)
to the latest 0.7.54 debian source...

ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: ifupdown 0.7.47.2ubuntu4.1
ProcVersionSignature: Ubuntu 3.16.0-46.62~14.04.1-generic 3.16.7-ckt15
Uname: Linux 3.16.0-46-generic x86_64
ApportVersion: 2.14.1-0ubuntu3.11
Architecture: amd64
Date: Fri Aug 28 10:46:39 2015
InstallationDate: Installed on 2015-06-23 (65 days ago)
InstallationMedia: Ubuntu-Server 14.04.2 LTS "Trusty Tahr" - Release amd64 
(20150218.1)
ProcEnviron:
 LANGUAGE=en_CA:en
 TERM=xterm
 PATH=(custom, no user)
 LANG=en_CA.UTF-8
 SHELL=/bin/bash
SourcePackage: ifupdown
UpgradeStatus: No upgrade log present (probably fresh install)
mtime.conffile..etc.network.if.up.d.upstart: 2015-08-25T22:38:07.451399

** Affects: ifupdown (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug trusty

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1489999

Title:
  ifupdown.upstart.if-up script will never fire  static-network-up with
  auto virtual interfaces defined

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1489999/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to