[Yum-devel] rfc - plugin to integrate hardware inventory into yum

Michael E Brown Michael_E_Brown at dell.com
Tue Aug 14 17:02:08 UTC 2007


Everybody,

    I maintain firmware-tools, which is a project that aims to be a
standard way to update BIOS and Flash/Firmware from inside Linux. Its
been around for a couple years now and I release a few Dell updates in
this format.

    One of the interesting things about this format is that the BIOS
update 'payload' is packaged in RPM format, along with the inventory and
update tools (in separate RPMs). The interesting thing from a yum
perspective is how we find those update payloads. I have a specified
naming convention for the payload RPMs in which, for example, a system
bios would have an RPM 'Provides:' tag of
"system_bios_ven_0x9999_dev_0x8888", where ven is the PCI SIG vendor id,
and the dev is the model ID. This naming convention has standards for
BIOS, BMC, PCI Cards, and will add more in the future. 

    Firmware-tools currently has a utility called, 'bootstrap_firmware'.
This utility outputs a list of the names in the format above. The user
can feed this list of names to yum and yum will find packages with those
tags.

    This works really well.

    I'd like to extend this to be more automatic.  One of the ideas that
I had was a yum plugin that could automatically add the package names to
the system RPM list as sort of 'virtual packages'.  This way, each time
the user runs yum, if new packages are available, they will be
automatically downloaded. The current situation requires the user to
manually run bootstrap_firmware to find new packages.

    Basically, to do this, I would write a simple yum plugin that
runs bootstrap_firmware and injects these as yum packages. The nice
thing here is that firmware-tools is mostly python code, so this
integration will be pretty easy.

    What I need is feedback to see if the yum developers think this is
sane, plus any tips on writing this kind of plugin, as I havent started
yet, but from my prior plugin experience think it should take about a
week to write.

    Other things this would be useful for:

-- Intel wireless firmware. If the wireless firmware is tagged with a
'pci_firmware_ven_0x9999_dev_0x9999' (matching the pci ids of the
devices it supports), then the user would *automatically* get the
correct wireless firmware installed for free, without any additional
work. If this plugin were loaded in anaconda, then the system would get
it installed at system install-time.

-- any other pci device with downloadable firmware.

-- Could also be applied for usb firmware

--
Michael



More information about the Yum-devel mailing list