I recently installed Ubuntu Utopic 14.04 LTS on a new server box I built specifically to host some virtual machines. The network configuration for this box, which contains two NICs, exposes the two NIC's only through virtual bridges - one to a private network, one to the public-facing Internet. One guest VM will access both bridges via taps, serving as the firewall and gateway for the host in particular and the private network in general. The other VM will simply be a separate guest server on the private network. The host will only directly participate on the private network via the corresponding private bridge.
As a result, neither eth0 nor eth1 will only be "up" other than the context of their corresponding virtual bridges. When Ubuntu boots, however, I believe upstart's failsafe is incorrectly assuming (insisting?) that at least eth0 be up independently before it will allow the system to get past the 20/40/60 second delays failsafe imposes. Yet the delays have almost no hope of being resolved until boot finishes and the guest VM's are allowed to start unfettered! See the paradox? To be honest, I'm not sure eth0 nor eth1 will ever reach the state failsafe is demanding.
At a raw, reactionary level, the frustrated, non-Ubuntu side of me wants to rip out failsafe, because each reboot for a configuration change is forcing me to wait up to two minutes for a status change that I'm 99.9% sure will never happen by design. Bottom line - no failsafe dependency. I'd just like to make the extra hoops I'm realizing failsafe is forcing just go away.
By the same token, I'm trying to be at least somewhat open-minded about what Upstart is trying to do with failsafe, as this is my first exposure to it. I've seen some (very vague) info that one approach to this involves changing the way /etc/network/interfaces is set up, moving my bridge setups into their own Upstart tasks, but I would really prefer to leave my interface definitions alone, happy, and working.
So, what are my choices? Can I just eliminate the failsafe tasking, or modify it to change its conditions? If so, how? Must I hack up my interfaces file?