Driver Disk

From Leo's Notes
Revision as of 02:16, 1 February 2022 by Leo (talk | contribs)
This page was last edited on 1 February 2022, at 02:16.

Red Hat allows for 'driver disks' to be loaded during an install in case there is no out-of-the-box driver support for a specific piece of hardware.

Using a driver disk

Locating an appropriate driver

If you have an older server that requires a driver that's been dropped, you can most likely find it from ElRepo's DUD repo that is appropriate for your distro version. For example, for RHEL8: https://elrepo.org/linux/dud/el8/x86_64/.

Using a driver disk with Anaconda

To use a driver disk, append inst.dd=location to the kernel arguments by hitting tab while on the grub menu. inst.dd supports network locations via HTTP, FTP, or NFS, and also a local device. For example: inst.dd=http://url/driver.iso, inst.dd=nfs:server/export, inst.dd=/dev/sdb

If you intend to use a removeable device such as a USB stick, floppy, or an iDRAC virtual device, you will need copy the contents of the ISO file into a vfat formatted partition. Eg:

# dd if=/dev/zero of=driver.img bs=1M count=1
# mkfs.vfat driver.img      # Note: mkfs.vfat is provided by dosfstools
# mount -o loop driver.img /mnt
# cp -r /iso-contents/* /mnt
# umount /mnt

Loading a driver disk after Anaconda has started

Enter a shell and install the rpm manually using rpm -ivh dd-some-driver.rpm. If you get any dependency issues with the kernel, try using the --nodeps argument as well. Once the package is installed, try to load the module with modprobe driver.

If your driver is needed by Anaconda (such as storage), you'll need to restart Anaconda by running systemctl restart anaconda.service.

Debugging issues

If for some reason Anaconda doesn't start after specifying a driver disk, you can have systemd log to the console to help troubleshoot the issue by appending the following to the kernel arguments:

systemd.log_target=console systemd.log_level=debug

Creating a driver disk

Using DKMS

You can use dkms mkdriverdisk to build a driver disk.

For example: dkms mkdriverdisk -d redhat -m qla2x00

Manually creating a disk

## Create a blank, 20MB image
# dd if=/dev/zero of=driverdisk.img bs=1M count=20

## Format the image with ext2
# mkfs -t ext2 -q driverdisk.img
 
## mount it and copy the files over
# mount -o loop driverdisk.img /mnt/driverdisk
 
## copy drivers to /mnt/driverdisk, then run
# umount /mnt/tmp

Once you have the driver disk created, you will need to tell the installer to load it by booting into linux expert or linux dd from the boot loader.

See also