How to load missing firmware from removable media during Debian Linux installation

Objective

The default Debian Linux installation CD/DVD may not contain proprietary firmware (drivers) for your hardware. From this reason, it is up to the user to load this non-free firmware during the Debian Linux installation. This article helps you to prepare your removable media to load missing firmware during the Debian Linux installation.

However, you may consider an yet another, alternative approach in comparison to loading your firmware from the USB drive as described below, which is to use unofficial images containing non-free firmware directly. The unofficial non-free images which inlcude firmware packages for each Debian’s release version are available here:
http://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/

Load missing firmware - Debian installation

Requirements

USB drive or other removable media such is SD card etc.

Difficulty

EASY

Conventions

  • # – requires given linux commands to be executed with root privileges either directly as a root user or by use of sudo command
  • $ – requires given linux commands to be executed as a regular non-privileged user


Instructions

Prepare and mount USB drive

Using another Linux system, we need to prepare our removable media in a way that the system recognises it at the early stage of the system installation. To do so we create a single partition USB drive and format it with a FAT32 filesystem. Use fdisk -l command to locate the block device name of your USB drive:

# fdisk -l
Disk /dev/sdg: 125 MiB, 131072000 bytes, 256000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdd134f86

Device     Boot Start    End Sectors  Size Id Type
/dev/sdg1        2048 255999  253952  124M  b W95 FAT32

Use your favourite partitioning tool to create a new FAT32 partition on your USB drive. Alternatively, use the bellow command to to automatically create a single partition on your USB drive marked for the FAT32 filesystem.

Be warned that the below command destroys all data on your removable media. Furthermore, be sure to supply a correct block device name argument to avoid accidentally destroying other disk also attached to your system.

# echo -e "o\nn\np\n1\n\n\nt\nb\nw" | fdisk /dev/sdX

Once the new partition is ready, create a FAT32 filesystem.

# mkfs.vfat /dev/sdX1 
mkfs.fat 3.0.27 (2014-11-12)

Lastly, mount your USB drive to eg. /mnt/tmp mount point.



Download and copy non-free firmware to USB

At this stage, we can download and copy the missing firmware onto a USB drive. Use wget to download and tar command to extract the non-free firmware onto your USB drive. Replace VERSION string with the Debian’s code name you are about to install.

The below command will download and extract non-free firmware on your USB drive. Here the guide also assumes, that your USB is mounted under /mnt/tmp directory:

wget -qO- http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/VERSION/current/firmware.tar.gz | tar xz -C /mnt/tmp

For example to download a firmware for the Debian Stretch release execute:

wget -qO- http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/stretch/current/firmware.tar.gz | tar xz -C /mnt/tmp

Umount USB drive

Finally, we are ready to umount USB drive:

# umount /mnt/tmp/

Now insert your USB disk containing all non-free firmware into your PC and you are ready to continue with your Debian Linux installation.