FreeBSD: How to unload (remove) device driver (module) from kernel?

Posted on in Categories FreeBSD, Howto last updated December 1, 2004

FreeBSD comes with kldstat command. The kldstat utility or command displays the status of any files dynamically linked into the kernel. And the kldunload utility unloads a file which was previously loaded with lldload command. You can use kldunload command as follows.

Unload a file from the kernel

First login as a root user (use su – or sudo commnad):

Get list of loaded modules/drivers first use following command

# kldstat

To remove module use the following command

The kldstat utility displays the status of any files dynamically linked into the kernel.

kldunload -i ID

OR

kldunload module-name

Example to unload smbfs module

Type the following command as the root user:
# kldunload smbfs
OR
# kldunload -i 8

Please note that # 8 is module ID obtained using kldstat command.

Force the unload

You can pass -f option to kldunload to force the unload. This ignores error returns to MOD_QUIESCE from the module and implies that the module should be unloaded even if it is currently in use. The users are left to cope as best they can.
# kldunload -f smbfs

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

2 comment

  1. [[email protected]] /home/mike# kldunload -fv -i 23 snd_hda && kldload snd_hda
    Unloading snd_hda.ko, id=23
    kldunload: can’t unload file: Device busy
    [[email protected]] /home/mike# uname -a
    FreeBSD mike-pc 8.2-RELEASE FreeBSD 8.2-RELEASE #7: Wed Feb 16 13:33:10 PST 2011 [email protected]:/usr/obj/usr/pcbsd-build82/fbsd-source/8.2/sys/PCBSD amd64

Leave a Comment