ANNOUNCE: bios_dev_name tool, 0.1 release
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 ;-)
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
> 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.
> Feedback welcome.
just a guy
More information about the Linux-PowerEdge