The Dell Linux engineering team works on projects that help improve the usability of Linux in the enterprise. These projects have been embraced by the Linux community and are widely used.

DKMS

DKMS stands for Dynamic Kernel Module Support. It is designed to create a framework where kernel dependent module source can reside so that it is very easy to rebuild modules as you upgrade kernels. This will allow Linux vendors to provide driver drops without having to wait for new kernel releases while also taking out the guesswork for customers attempting to recompile modules for new kernels.

For veteran Linux users it also provides some advantages since a separate framework for driver drops will remove kernel releases as a blocking mechanism for distributing code. Instead, driver development should speed up as this separate module source tree will allow quicker testing cycles meaning better tested code can later be pushed back into the kernel at a more rapid pace. Its also nice for developers and maintainers as DKMS only requires a source tarball in conjunction with a small configuration file in order to function correctly.

The latest DKMS version is available here. Also, you can read this Linux Journal article or this more recent Power Solutions paper or this even more recent Ottawa Linux Symposium paper about DKMS for more information. You may also participate in the dkms-devel mailing list. This project is maintained by Mario Limonciello, and was formerly maintained by Matt Domsch and Gary Lerhaupt.


EDD

BIOS Enhanced Disk Drive Services 3.0 (EDD) is mechanism to match x86 BIOS device names (e.g. int13 device 80h) to Linux device names (e.g. /dev/sda, /dev/hda). EDD is a project of a T13 committee. Matt Domsch implemented the EDD specification under Linux. This code makes real mode int13 EDD BIOS calls very early during kernel startup to obtain the Master Boot Record signature and physical location (PCI bus/device/function, IDE master/slave, SCSI ID and LUN) of BIOS-seen disks, then exports this information through /proc (2.4.x kernels) or sysfs (2.6.x kernels). This information may then be used by operating system installers to determine which disk BIOS will boot from, thus the right place to put GRUB, LILO, and your /boot and / partitions.

EDD was incorporated into the 2.5.44 kernel, and the 2.4.23-pre6 kernel. It has been included in several Linux distributions, including Red Hat Linux 9 and Red Hat Enterprise Linux 3. It is being used at install time of Red Hat Enteprise Linux 4, and Novell/SuSE Linux Enterprise Server 10.

Few BIOSs actually implement the full EDD 3.0 specification today. Matt Domsch created a list of BIOSs reported to be good, almost good, and those who don't try to implement the spec, though the list is not being maintained any longer. This project is maintained by Matt Domsch.

Devlabel

Devlabel is a program which dynamically creates symbolic links to disk/partition names. It uses the disk's and/or partition's unique identifiers to keep the symlink pointed to the correct location even if the underlying partition's name has changed. So, regardless if /dev/sdb6 becomes /dev/sdc6, devlabel figures this all out and points the symlink to your right data. This allows for:

  • An unchanging symlink name which will always get you to the right location
  • A method for identifying partitions which have no filesystem on them (eg. swap) which would not otherwise be mountable by a filesystem label
  • If using raw devices, a consistently named file node to point to your data
  • An engine for cluster deployment in shared storage environments
  • An automounter for hotpluggable storage devices which will mount a storage device's associated symlink when its plugged in
  • A set of consistently named symlinks to be used for a multipath device in /etc/raidtab
  • A method to ensure correct device ownership and permissions when device renaming events occur

The latest version can be downloaded here. For more information, read this paper. Devlabel is supported on 2.4.x kernels, such as with Red Hat Enteprise Linux 3. For kernel 2.6.x-based products, we recommend using udev, included in your distribution, instead.


efibootmgr

The efibootmgr project is a Linux user-space application to modify the Intel Extensible Firmware Interface (EFI) Boot Manager. This application can create and destroy boot entries, change the boot order, change the next running boot option, and more.

Details on the EFI Boot Manager are available from the EFI Specification, v1.02 or above, available from http://developer.intel.com. Note: efibootmgr requires that the kernel module efivars be loaded prior to use. 'modprobe efivars' should do the trick.

Source code is available in the git tree. The latest stable version is located at http://linux.dell.com/efibootmgr with older versions stored in the permalink sub-directory. The latest testing version is located in http://linux.dell.com/efibootmgr/testing. This project is maintained by Matt Domsch.


BIOSdisk

biosdisk simplifies the process of flashing your system BIOS under Linux on Dell desktops and laptops. The purpose of this utility is to create a bootable BIOS flash image using the raw BIOS flash executable images (e.g. WS360A05.exe) available from support.dell.com. An RPM, SRPM, and tarball for this project are available at http://linux.dell.com/biosdisk. A git tree is available at http://linux.dell.com/git.

The project consists of a shell script that, when executed, creates a FreeDOS floppy image at a location of your choosing. This project is intended for Dell desktop and laptop customers and not PowerEdge customers, since Linux BIOS flash packages are already available for PowerEdge systems, and raw executable BIOS flash images are not.

To use the biosdisk utility to create a BIOS flash image, first download the latest raw BIOS image for your system from support.dell.com or ftp://ftp.dell.com/bios. You then have one of several options: create a floppy, create a dd floppy image, create a user-installable distribution-specific package (e.g. RPM), or actually install the image for your bootloader.

* The mkfloppy action will create the biosdisk image and write it directly to a floppy disk. Usage is the following:

   biosdisk mkfloppy [-o option] [-d device] [-k baseimage] /path/to/.exe

* The mkimage action will create a floppy image on the user's hard drive. Usage is the following: 

   biosdisk mkimage [-o option] [-i destination] [-k baseimage] /path/to/.exe

* The mkpkg action will create the floppy image, and use it to create a user-installable package specific to the distribution (example: RPM). When the package is installed, it will use the distribution's built-in tools to update the system's bootloader so that the user can boot to the image from the hard drive to flash the BIOS, without needing a floppy drive. Currently only Red Hat/Fedora RPM packages are supported. Usage is as follows:

   biosdisk mkpkg [-o option] [--install] [--distro=] [--name=] [--version=] [--release=] /path/to/{.exe | .img}

* The install action will create the biosdisk image, copy the image file to /boot, and then update the bootloader with an entry for the image. Then all the user has to do is boot the system and select the image to flash the BIOS; this will load the biosdisk image directly from the hard drive and flash the BIOS.

   biosdisk install [-o option] [--name=] /path/to/{.exe | .img}

This project is maintained by John Hull.


DVD Store

The DVD Store Release 2 (DS2) is now available from http://linux.dell.com/dvdstore The DVD Store Version 2 (DS2) is a complete online e-commerce test application, with a backend database component, a web application layer, and driver programs. The goal in designing the database component as well as the midtier application was to utilize many advanced database features (transactions, stored procedures, triggers, referential integity) while keeping the database easy to install and understand. The DS2 workload may be used to test databases or as a stress tool for any purpose. The code is licensed under the GNU General Public License (GPL). The initial distribution includes code for the MySQL database. Code for Oracle and Microsoft SQL Server will follow. Included in the release are data generation programs, shell scripts to build data for 10MB, 1GB and 100 GB versions of the DVD Store, database build scripts and stored procedure, PHP web pages, and a C# driver program. See the readme.txt file and readme's inside the distribution for more details. This project is maintained by Dave Jaffe.



libsmbios

Libsmbios is a cross OS library intended to be used to obtain common information available in BIOS using a unified API. Currently, it can programmatically access any information in the SMBIOS tables. It also has the ability to obtain Dell system-specific information such as the Dell System ID number, service tag, and asset tag. Future plans include APIs for $PIR, and mptable mapping. Libsmbios is written in C++ and works on Linux (all flavors) and Windows (NT through 2003 SP1). There is a C API for some of the more commonly used functions, plus example binaries to show off most of the facilities. Libsmbios has some unique features. First, it is designed to be utilized at an API level by external programs. Many other programs rely on the user parsing text output rather than the easier-to-use API calls that libsmbios provides. Next, the libsmbios has an optional access method where you can retrieve SMBIOS information by the text names of the structures and fields by using an XML definition of the tables. This means that to add new table definitions, you need not modify code. Most other smbios programs have C code to decode each table. Libsmbios is extensible without having to recompile the code. Next, libsmbios makes extensive use of cppunit for unit testing to ensure a high degree of quality, valgrind for memory leak detection, and gcov for code coverage analysis. All these tools are built into the build system and run for each official release of the code. DMTF standard for SMBIOS
CppUnit
Valgrind
This project is maintained by Michael Brown and has a public mailing list for developers.

firmware-tools

firmware-tools is an open source (dual GPL and OSL licenses) project to make it easy to flash the BIOS and firmware of your devices while running Linux. This project is maintained by Michael Brown and Matt Domsch, and has a public mailing list for developers.


biosdevname

biosdevname is a udev helper application which takes a kernel device name as an argument, and returns the BIOS-given name it "should" be. This is necessary on systems where the BIOS name for a given device (e.g. the label on the chassis is "Gb1") doesn't map directly and obviously to the kernel name (e.g. eth0). It uses data from the system BIOS to figure this out. This project is maintained by Jordan Hargrave. Issues with biosdevname should be sent to the linux-poweredge public mailing list or the udev mailing list linux-hotplug-devel@lists.sourceforge.net.

libnetdevname

libnetdevname is a library that helps map a meaningful name to a network device like "Embedded NIC 1" to conventional ethernet device names like eth0. This makes it possible to have alternative names based on various criteria like chassis port number, speed, etc. Applications can use this library to utilize device names in addition to the conventional names. This project is maintained by Narendra K. Issues with libnetdevname should be sent to the linux-poweredge public mailing list

dell-satellite-sync

Dell-satellite-sync is a tool for taking Dell's official Linux software repositories, replicating them into an RHN Satellite or Spacewalk server, and subscribing any registered Dell systems to the correct child channel.

Issues with dell-satellite-sync should be sent to the linux-poweredge public mailing list.

Linux on Dell.com

Linux Operating System Solutions information on Dell.com