During installation if the installer is unable to detect any disks it will present you a list of all the available drivers to select or you can select none of these. Once you select that it gives you a couple of options. One of them is to scan removable media for a driver.

Does anyone know what it's looking for? I've tried just putting the proper .ko file on a floppy in / as well as putting it in /lib/modules/<kernel version>/kernel/extras/ and a few other places but in the end I have to manually mount the removable media and load the module using insmod.

  • Hmm it keeps changing my "installer" tag to package-management. Oct 12 '10 at 17:37
  • I have changed the tag to ubiquity since I think you mean the installer that installs Ubuntu from CD to harddrive.
    – txwikinger
    Oct 12 '10 at 18:23
  • The tags "installer" and "package-management" were synonyms. It's fixed now, thanks for pointing it out.
    – Li Lo
    Oct 12 '10 at 18:24
  • Actually, this is debian-installer, not ubiquity.
    – Evan
    Oct 12 '10 at 19:51
  • Yeah I believe it's debian-installer....this is with the server install cd not the desktop live cd. Oct 12 '10 at 20:06

If you're using the desktop CD installer, you can load additional drivers programmatically by following the instructions here.

If you're using the alternate CD installer, you can accomplish this by creating a driver injection disk. First create a USB disk with a label of OEMDRV, then put a Debian package on it containing your kernel module. Finally, preseed driver-injection-disk/load to true and start the install.

The definitive reference for this format is the hw-detect code, bzr branch lp:hw-detect , specifically driver-injection-disk.sh

Alternatively, if you want a quick and dirty solution and assuming this is a disk driver, put the kernel module in one of the following directories:

  • /lib/modules/*/kernel/drivers/ide
  • /lib/modules/*/kernel/drivers/scsi
  • /lib/modules/*/kernel/drivers/block
  • Yeah my quick and dirty solution has been to mount the removable media and use insmod to load the driver and then to tell the installer to detect the disks again. While this does work I was hoping for a more elegant solution. When you say to put the kernel module in one of those directories are you talking about making that directory structure on the removable media and placing it there? I did try /lib/modules/*/kernel/extras which is where the driver is installed when I build it from source. Oct 12 '10 at 20:30
  • 1
    No, as far as I can tell from looking at the hw-detect source code, the only way you can load drivers off removable media is to encapsulate them in a Debian package that matches the architecture of the running system, which contains the kernel modules.
    – Evan
    Oct 13 '10 at 1:51

In addition to Evan's answer about the alternate installer, this drivers disk should contain *.udeb files for the installer to recognise these. These packages can be found on Ubuntu packages: linux source.

If you have a *.ko file, copy it to an USB stick.

I missed the JMicron Ethernet driver jme.ko and found this module in the kernel-image-2.6.38-8-generic package. This package can be extracted using dpkg-deb -x [name-of-deb-file].deb target_extraction_directory.

Within the installer, press Ctrl + Alt + F2 followed by Enter to open a shell. USB sticks won't mount themselves, after locating the disk, mount it:

mount /dev/sdb1 /mnt

Copy the file to the kernel directory:

cp /mnt/jme.ko /lib/modules/$(uname -r)/kernel/drivers/net/

Update the kernel modules, unmount the USB stick and load the kernel module (and its dependencies if any):

depmod -a
umount /mnt
modprobe jme

If everything went well, you should not get any messages and can go back to the installer menu by pressing Ctrl + Alt + F1.

Important: the kernel versions of the installer and module must match. My alternate CD did not contain the JMicron Ethernet driver (jme.ko). I could not find it in the *-modules-* files, but it was existent in the linux-image-* package. For easiness, I copied this module from an other computer, forgetting that Maverick was installed on it, and not Natty. I kept getting the ERROR: File not found message and after some time I realised that the module came from Maverick with kernel version 2.6.35-28 but Natty runs on 2.6.38-8.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.