Question about NIC link state initialization

Steve Polyack korvus at comcast.net
Wed Jun 29 16:47:58 UTC 2011


I have a handful of systems running FreeBSD 8.1-RELEASE.  An occaisional 
fat-finger in /etc/fstab may cause one to end up in single-user mode 
from time to time.  This would normally not be a problem, but some of 
these systems have a LOM (lights-out management) controller which shares 
the system's on-board NICs.  This works great 99% of the time, but when 
the system drops out of init(8) and into single-user mode, the links on 
the interfaces never come up, and therefore the LOM becomes 
inaccessible.  Cue remote-hands at the facility to help us remedy the 
problem.

I've been playing around with this configuration on a local system, and 
I've noticed that once at a single-user shell, all one has to do is run 
ifconfig to cause the NIC's links to come up.  You don't even have to 
specify the interface, nor do you have to specify "up".  As soon as I 
hit enter, ifconfig prints the typical interface summary - intermingled 
in with this are the bold kernel log messages stating "bce0: link state 
changed to UP" and "bce1: link state changed to UP".

So, my question is - why do we have to run ifconfig(8) to bring the 
links up on the attached interfaces?  Shouldn't they come up after the 
driver discovers and initializes the devices?  Keep in mind that I don't 
even have to pass any arguments (such as "up") to ifconfig.  
Furthermore, the behavior is exactly the same for bce(4) and em(4).

Short of patching init(8) (or perhaps the NIC drivers?), I don't see 
another way for me to ensure the links come up even when the system 
drops into single-user mode on boot.

- Steve


More information about the freebsd-net mailing list