On Sat, May 17, 2014 at 2:39 PM, Grant <emailgr...@gmail.com> wrote: >>> I have this: >>> >>> # dmesg | grep enp >>> [ 4.297862] systemd-udevd[659]: renamed network interface eth0 to >>> enp0s20u2u1 >>> [ 4.778289] systemd-udevd[660]: renamed network interface eth0 to >>> enp0s20u2u2 >>> [ 6.496193] ax88179_178a 3-2.1:1.0 enp0s20u2u1: ax88179 - Link status >>> is: 1 >>> [ 7.905393] ax88179_178a 3-2.2:1.0 enp0s20u2u2: ax88179 - Link status >>> is: 1 >>> # >>> >>> That doesn't tell us when the network initscripts tried and failed to >>> start but this from /var/log/messages/everything/current shows the >>> first time in the boot sequence that a dependent service failed to >>> start because of the networking failure so it should be before this: >>> >>> [kernel] [ 0.787433] serio: i8042 AUX port at 0x60,0x64 irq 12 >>> [/etc/init.d/unbound] ERROR: cannot start unbound as net.enp0s20u2u1 >>> would not start >>> [kernel] [ 0.792081] rtc_cmos 00:04: alarms up to one month, y3k, >>> 242 bytes nvram, hpet irqs >>> >> >> Yeah, so I think the kernel is detecting your network card after udev >> has already started. >> >> One interesting experiment would be to delay the boot process to allow >> the kernel additional time to detect devices. Adding rootdelay=10 to >> your kernel command line should do the trick, unless you are using >> some broken initramfs. > > > I tried that and it works great which I think confirms our suspicions > that the kernel is detecting my network cards after udev has already > started. If I remove rootdelay=10 and I do this: > > # ln -s /dev/null /etc/udev/rules.d/90-network.rules > > the network interfaces fail to come up which is the same thing I've > experienced with rc_hotplug="net.*". >
Yeah, so this is not solvable using service dependencies. You will either need to make that boot delay permanent, or rely on the hotplug functionality to start the net.en* services. In the latter case, you should remove them from the default runlevel. You may want to define rc_need="!net" to prevent init scripts that "need net" from automatically starting the net.* services. For most services this is fine, but it will obviously break things like ntpdate which actually need a usable network connection.