ANNOUNCE: bios_dev_name tool, 0.1 release

Greg Dickie greg at max-t.com
Wed Nov 29 18:27:49 CST 2006


Thanks for all these options Matt but I have to ask the obvious
"couldn't it have been fixed in hardware?" (clearly I've been in
software too long ;-)

Greg 

On Wed, 2006-11-29 at 17:15 -0600, Matt Domsch wrote:
> You may recall several months ago a problem I faced, where the
> BIOS-given name for an ethernet device (e.g. "Gb1") didn't map to the
> expected and obvious Linux device name (e.g. eth0), but instead mapped
> to another name (e.g. eth1).  This was highly confusing to system
> admins with such hardware.
> 
> Since then, I've developed 3 separate "fixes" - each more generic than
> the last.
> 
> 1) a kernel patch in 2.6.19-rc3, which implements a "pci=bfsort"
>    option, to force the kernel to enumerate devices in a breadth-first
>    manner; by default disabled on all but a few Dell systems.  This is
>    the "brute force" method, and while handy, isn't very extensible or
>    flexible.
> 
> 2) name_eths (http://linux.dell.com/files/name_eths), a set of scripts
>    that modifies on-disk config files
>    (/etc/sysconfig/network-scripts/ifcfg-eth* HWADDR lines on Red Hat
>    / Fedora systems; /etc/udev/rules.d/30-net_persistent_names rules
>    on SLES/OpenSuSE).  This uses the BIOS PCI IRQ routing table to get
>    the list of embedded vs add-in devices, and assigns names to the
>    embedded devices first (breadth-first if there are several), then
>    to the add-ins, in PCI slot number ascending order (breadth-first
>    if there are several devices in the same slot, e.g. a multiport NIC
>    card) and works quite well, except in a diskless environment where
>    you can't read/write config files.
> 
> so now, option 3:
> 
> 3) bios_dev_name (http://linux.dell.com/files/bios_dev_name) -
>    intended to be a udev helper.  For example, something like:
> 
> KERNEL=="eth*", ACTION=="add", PROGRAM="/usr/sbin/bios_dev_name -i %k", NAME="%c"
> 
> which, given the kernel's name for a device, retreives the
> BIOS-expected name, and sets it to that.  Alternately, it can be
> integrated into SuSE's rename_netiface script as demonstrated in the
> patch included in the release.  As a udev helper, it doesn't need
> config files to accomplish its work.
> 
> Right now #1 uses a hard-coded breadth-first search algorithm; #2 uses
> the PCI IRQ routing table and breadth-first.  #3 is the same as #2
> algorithm-wise, but is written in C rather than perl/shell to be more
> available as a udev helper.
> 
> In the future, the SMBIOS Working Group has a proposal to add explicit
> BIOS device naming assignments to the SMBIOS tables.  This will let
> the OS query SMBIOS directly to find out the name a given device
> "should" have (from the BIOS perspective).  I expect bios_dev_name to
> be able to take advantage of this when included in the spec and
> implemented in system BIOS.
> 
> It's also expected that additional device types will be handled,
> rather than only ethernet devices.  That'll depend on need.
> 
> bios_dev_name is released under the GNU GPL v2.
> http://linux.dell.com/files/bios_dev_name/bios_dev_name-0.1.tar.gz
> http://linux.dell.com/files/bios_dev_name/bios_dev_name-0.1.tar.gz.sign
> 
> 
> Feedback welcome.
> 
> Thanks,
> Matt
> 
-- 
Greg Dickie
just a guy
Maximum Throughput



More information about the Linux-PowerEdge mailing list