* ANNOUNCE: bios_dev_name tool, 0.1 release
@ 2006-11-29 23:14 Matt Domsch
0 siblings, 0 replies; only message in thread
From: Matt Domsch @ 2006-11-29 23:14 UTC (permalink / raw)
To: linux-hotplug
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¿sort"
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
--
Matt Domsch
Software Architect
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CIDÞVDEV
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-11-29 23:14 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-29 23:14 ANNOUNCE: bios_dev_name tool, 0.1 release Matt Domsch
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).