Build own driver with kernel compilation
Topics in this section,
In this section, you are going to learn
How to build own driver with kernel compilation
# |
Version |
---|---|
Freebsd |
14.1.0 |
To compile the kernel source code user should change the user access to root previlege mode
Execute below command to redirect to root access
test:~$ su
Run the below command to change the directory to kernel source code location
test:~$ cd /usr/src/sys
Execute the below commands to add the driver source code
test:~$ cd /dev
test:~$ mkdir mychar
test:~$ cd mychar
Create a .c file, add your char driver source code and save it
test:~$ vi mychar.c
See the full content of mychar.c
1#include <sys/types.h>
2#include <sys/systm.h> /* uprintf */
3#include <sys/param.h> /* defines used in kernel.h */
4#include <sys/module.h>
5#include <sys/kernel.h> /* types used in module initialization */
6#include <sys/conf.h> /* cdevsw struct */
7#include <sys/uio.h> /* uio struct */
8#include <sys/malloc.h>
9
10#define BUFFERSIZE 255
11
12/* Function prototypes */
13static d_open_t echo_open;
14static d_close_t echo_close;
15static d_read_t echo_read;
16static d_write_t echo_write;
17
18/* Character device entry points */
19static struct cdevsw echo_cdevsw = {
20 .d_version = D_VERSION,
21 .d_open = echo_open,
22 .d_close = echo_close,
23 .d_read = echo_read,
24 .d_write = echo_write,
25 .d_name = "echo",
26};
27
28struct s_echo {
29 char msg[BUFFERSIZE + 1];
30 int len;
31};
32
33/* vars */
34static struct cdev *echo_dev;
35static struct s_echo *echomsg;
36
37MALLOC_DECLARE(M_ECHOBUF);
38MALLOC_DEFINE(M_ECHOBUF, "echobuffer", "buffer for echo module");
39
40/*
41 * This function is called by the kld[un]load(2) system calls to
42 * determine what actions to take when a module is loaded or unloaded.
43 */
44static int
45echo_loader(struct module *m __unused, int what, void *arg __unused)
46{
47 int error = 0;
48
49 switch (what) {
50 case MOD_LOAD: /* kldload */
51 error = make_dev_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK,
52 &echo_dev,
53 &echo_cdevsw,
54 0,
55 UID_ROOT,
56 GID_WHEEL,
57 0600,
58 "echo");
59 if (error != 0)
60 break;
61
62 echomsg = malloc(sizeof(*echomsg), M_ECHOBUF, M_WAITOK |
63 M_ZERO);
64 printf("Echo device loaded.\n");
65 break;
66 case MOD_UNLOAD:
67 destroy_dev(echo_dev);
68 free(echomsg, M_ECHOBUF);
69 printf("Echo device unloaded.\n");
70 break;
71 default:
72 error = EOPNOTSUPP;
73 break;
74 }
75 return (error);
76}
77
78static int
79echo_open(struct cdev *dev __unused, int oflags __unused, int devtype __unused,
80 struct thread *td __unused)
81{
82 int error = 0;
83
84 uprintf("Opened device \"echo\" successfully.\n");
85 return (error);
86}
87
88static int
89echo_close(struct cdev *dev __unused, int fflag __unused, int devtype __unused,
90 struct thread *td __unused)
91{
92
93 uprintf("\nClosing device \"echo\".\n");
94 return (0);
95}
96
97/*
98 * The read function just takes the buf that was saved via
99 * echo_write() and returns it to userland for accessing.
100 * uio(9)
101 */
102static int
103echo_read(struct cdev *dev __unused, struct uio *uio, int ioflag __unused)
104{
105 size_t amt;
106 int error;
107
108 /*
109 * How big is this read operation? Either as big as the user wants,
110 * or as big as the remaining data. Note that the 'len' does not
111 * include the trailing null character.
112 */
113 amt = MIN(uio->uio_resid, uio->uio_offset >= echomsg->len + 1 ? 0 :
114 echomsg->len + 1 - uio->uio_offset);
115
116 if ((error = uiomove(echomsg->msg, amt, uio)) != 0)
117 uprintf("uiomove failed!\n");
118
119 return (error);
120}
121
122/*
123 * echo_write takes in a character string and saves it
124 * to buf for later accessing.
125 */
126static int
127echo_write(struct cdev *dev __unused, struct uio *uio, int ioflag __unused)
128{
129 size_t amt;
130 int error;
131
132 /*
133 * We either write from the beginning or are appending -- do
134 * not allow random access.
135 */
136 if (uio->uio_offset != 0 && (uio->uio_offset != echomsg->len))
137 return (EINVAL);
138
139 /* This is a new message, reset length */
140 if (uio->uio_offset == 0)
141 echomsg->len = 0;
142
143 /* Copy the string in from user memory to kernel memory */
144 amt = MIN(uio->uio_resid, (BUFFERSIZE - echomsg->len));
145
146 error = uiomove(echomsg->msg + uio->uio_offset, amt, uio);
147
148 /* Now we need to null terminate and record the length */
149 echomsg->len = uio->uio_offset;
150 echomsg->msg[echomsg->len] = 0;
151
152 if (error != 0)
153 uprintf("Write failed: bad address!\n");
154 return (error);
155}
156
157DEV_MODULE(echo, echo_loader, NULL);
Run the below commands to add the Makefile for compilation
test:~$ cd /usr/src/sys/modules
test:~$ cd mychar
Create a Makefile, add the below content to the Makefile for compilation and save it
test:~$ vi Makefile
See the full content of Makefile
1.PATH: ${SRCTOP}/sys/dev/mychar
2SRCS=mychar.c
3KMOD=mychar
4
5.include <bsd.kmod.mk>
Open the Makefile and add the module name in SUBDIR list.
test:~$ vi /usr/src/sys/modules/Makefile
SUBDIR= \
mychar \
.
.
Run the below command to include the module into conf file for compilation
Add the below lines and save it
test:~$ vi /usr/src/sys/conf/files
dev/mychar/mychar.c optional mychar
Add the device details in configuration file to include the device changes on kernel image
Add the below lines and save it
test:~$ vi /usr/src/sys/amd64/conf/MYKERNEL
device mychar
Execute the below command to build the kernel compilation
test:~$ cd /usr/src
test:~$ make -j8 -DNO_CLEAN buildkernel KERNCONF=MYKERNEL
Check the module generated in below path
test:~$ ls /usr/obj/usr/src/amd64.amd64/sys/MYKERNEL/modules/usr/src/sys/modules/mychar/
mychar.ko
Move to the directory and load the module by running below command
test:~$ cd /usr/obj/usr/src/amd64.amd64/sys/MYKERNEL/modules/usr/src/sys/modules/mychar/
test:~$ kldload mychar.ko
test:~$ dmesg
Echo device loaded
Unload the module from the system by running below command
test:~$ cd /usr/obj/usr/src/amd64.amd64/sys/MYKERNEL/modules/usr/src/sys/modules/mychar/
test:~$ kldunload mychar.ko
test:~$ dmesg
Echo device unloaded
Execute the below command to install the kernel module on system.
Check the given directory /boot/kernel
test:~$ make -j8 installkernel KERNCONF=MYKERNEL
test:~$ ls /boot/kernel
See the full content of ls output
aac.ko
aacraid.ko
accf_data.ko
accf_dns.ko
accf_http.ko
acl_nfs4.ko
acl_posix1e.ko
acpi_asus.ko
acpi_asus_wmi.ko
acpi_dock.ko
acpi_fujitsu.ko
acpi_ged.ko
acpi_hp.ko
acpi_ibm.ko
acpi_panasonic.ko
acpi_sony.ko
acpi_toshiba.ko
acpi_video.ko
acpi_wmi.ko
ads111x.ko
aesni.ko
agp.ko
ahc.ko
ahc_isa.ko
ahc_pci.ko
ahci.ko
ahd.ko
aibs.ko
alias_dummy.ko
alias_ftp.ko
alias_irc.ko
alias_nbt.ko
alias_pptp.ko
alias_skinny.ko
alias_smedia.ko
alpm.ko
alq.ko
amd_ecc_inject.ko
amdgpio.ko
amdpm.ko
amdsbwd.ko
amdsmb.ko
amdsmn.ko
amdtemp.ko
aout.ko
arcmsr.ko
asmc.ko
at45d.ko
ata.ko
ataacard.ko
ataacerlabs.ko
ataamd.ko
ataati.ko
atacenatek.ko
atacypress.ko
atacyrix.ko
atahighpoint.ko
ataintel.ko
ataisa.ko
ataite.ko
atajmicron.ko
atamarvell.ko
atamicron.ko
atanational.ko
atanetcell.ko
atanvidia.ko
atapci.ko
atapromise.ko
ataserverworks.ko
atasiliconimage.ko
atasis.ko
atavia.ko
ath_dfs.ko
ath_hal.ko
ath_hal_ar5210.ko
ath_hal_ar5211.ko
ath_hal_ar5212.ko
ath_hal_ar5416.ko
ath_hal_ar9300.ko
ath_main.ko
ath_rate.ko
atopcase.ko
atp.ko
autofs.ko
backlight.ko
bcm5974.ko
bcma.ko
bcma_bhndb.ko
beastie_saver.ko
bhnd.ko
bhnd_pci.ko
bhnd_pci_hostb.ko
bhnd_pcib.ko
bhndb.ko
bhndb_pci.ko
blake2.ko
blank_saver.ko
bridgestp.ko
bytgpio.ko
callout_test.ko
cam.ko
cardbus.ko
carp.ko
cbb.ko
cc_cdg.ko
cc_chd.ko
cc_cubic.ko
cc_dctcp.ko
cc_hd.ko
cc_htcp.ko
cc_newreno.ko
cc_vegas.ko
ccp.ko
ccr.ko
cd9660.ko
cd9660_iconv.ko
cfiscsi.ko
cfumass.ko
chromebook_platform.ko
chvgpio.ko
ciss.ko
coretemp.ko
cp2112.ko
cpuctl.ko
cpufreq.ko
crypto.ko
cryptodev.ko
ctl.ko
cuse.ko
cxgb_t3fw.ko
cxgbei.ko
cyapa.ko
daemon_saver.ko
dcons.ko
dcons_crom.ko
dpdk_lpm4.ko
dpdk_lpm6.ko
dpms.ko
dragon_saver.ko
ds1307.ko
ds13rtc.ko
ds1672.ko
ds3231.ko
dtaudit.ko
dtmalloc.ko
dtnfscl.ko
dtrace.ko
dtrace_test.ko
dtraceall.ko
dummynet.ko
efirt.ko
ehci.ko
evdev.ko
exca.ko
ext2fs.ko
fade_saver.ko
fasttrap.ko
fbt.ko
fdc.ko
fdescfs.ko
fib_dxr.ko
filemon.ko
fire_saver.ko
firewire.ko
firmware.ko
ftgpio.ko
ftwd.ko
fusefs.ko
g_audio.ko
g_keyboard.ko
g_modem.ko
g_mouse.ko
geom_bde.ko
geom_cache.ko
geom_ccd.ko
geom_concat.ko
geom_eli.ko
geom_flashmap.ko
geom_gate.ko
geom_journal.ko
geom_label.ko
geom_linux_lvm.ko
geom_md.ko
geom_mirror.ko
geom_mountver.ko
geom_multipath.ko
geom_nop.ko
geom_part_apm.ko
geom_part_bsd.ko
geom_part_bsd64.ko
geom_part_ebr.ko
geom_part_gpt.ko
geom_part_ldm.ko
geom_part_mbr.ko
geom_raid.ko
geom_raid3.ko
geom_shsec.ko
geom_stripe.ko
geom_union.ko
geom_uzip.ko
geom_vinum.ko
geom_virstor.ko
geom_zero.ko
gpiobus.ko
gpioiic.ko
gpioled.ko
gpiospi.ko
gpioths.ko
green_saver.ko
h_ertt.ko
hconf.ko
hcons.ko
hgame.ko
hid.ko
hidbus.ko
hidmap.ko
hidquirk.ko
hidraw.ko
hifn.ko
hkbd.ko
hms.ko
hmt.ko
hpen.ko
hpt27xx.ko
hptiop.ko
hptmv.ko
hptnr.ko
hptrr.ko
hsctrl.ko
htu21.ko
hv_hid.ko
hv_netvsc.ko
hv_sock.ko
hv_storvsc.ko
hv_utils.ko
hv_vmbus.ko
hwpmc.ko
ibcore.ko
ice_ddp.ko
icee.ko
ichsmb.ko
ichwd.ko
ida.ko
ietp.ko
if_ae.ko
if_age.ko
if_alc.ko
if_ale.ko
if_ath.ko
if_aue.ko
if_axe.ko
if_axge.ko
if_axp.ko
if_bce.ko
if_bfe.ko
if_bge.ko
if_bnxt.ko
if_bridge.ko
if_bwi.ko
if_bwn.ko
if_bxe.ko
if_cas.ko
if_cc.ko
if_ccv.ko
if_cdce.ko
if_cdceem.ko
if_cue.ko
if_cxgb.ko
if_cxgbe.ko
if_cxgbev.ko
if_cxl.ko
if_cxlv.ko
if_dc.ko
if_disc.ko
if_edsc.ko
if_em.ko
if_ena.ko
if_enc.ko
if_enic.ko
if_epair.ko
if_et.ko
if_fwe.ko
if_fwip.ko
if_fxp.ko
if_gem.ko
if_gif.ko
if_gre.ko
if_gve.ko
if_iavf.ko
if_ic.ko
if_ice.ko
if_igb.ko
if_igc.ko
if_infiniband.ko
if_ipheth.ko
if_ipw.ko
if_iwi.ko
if_iwlwifi.ko
if_iwm.ko
if_iwn.ko
if_ix.ko
if_ixl.ko
if_ixlv.ko
if_ixv.ko
if_jme.ko
if_kue.ko
if_lagg.ko
if_le.ko
if_lge.ko
if_lio.ko
if_malo.ko
if_mana.ko
if_me.ko
if_mgb.ko
if_mos.ko
if_msk.ko
if_muge.ko
if_mwl.ko
if_mxge.ko
if_my.ko
if_nfe.ko
if_nge.ko
if_ntb.ko
if_oce.ko
if_otus.ko
if_ovpn.ko
if_qlnxe.ko
if_qlnxev.ko
if_qlxgb.ko
if_qlxgbe.ko
if_qlxge.ko
if_ral.ko
if_re.ko
if_rl.ko
if_rsu.ko
if_rtw88.ko
if_rtwn_pci.ko
if_rtwn_usb.ko
if_rue.ko
if_rum.ko
if_run.ko
if_sge.ko
if_sis.ko
if_sk.ko
if_smsc.ko
if_ste.ko
if_stf.ko
if_stge.ko
if_sume.ko
if_ti.ko
if_tuntap.ko
if_uath.ko
if_udav.ko
if_upgt.ko
if_ural.ko
if_ure.ko
if_urndis.ko
if_urtw.ko
if_vge.ko
if_vlan.ko
if_vmx.ko
if_vr.ko
if_vte.ko
if_vtnet.ko
if_vxlan.ko
if_wg.ko
if_wpi.ko
if_xl.ko
if_zyd.ko
iflib.ko
ig4.ko
iic.ko
iicbb.ko
iicbus.ko
iichid.ko
iicmux.ko
iicsmb.ko
imcsmb.ko
imgact_binmisc.ko
intelspi.ko
intpm.ko
io.ko
ioat.ko
ip6_mroute.ko
ip_mroute.ko
ipdivert.ko
ipfw.ko
ipfw_nat.ko
ipfw_nat64.ko
ipfw_nptv6.ko
ipfw_pmod.ko
ipl.ko
ipmi.ko
ipmi_linux.ko
ipoib.ko
ips.ko
ipsec.ko
ipw_bss.ko
ipw_ibss.ko
ipw_monitor.ko
irdma.ko
isci.ko
iscsi.ko
iser.ko
isl.ko
isl12xx.ko
ismt.ko
isp.ko
isp_2400.ko
isp_2500.ko
isp_2600.ko
isp_2700.ko
isp_2800.ko
ispfw.ko
itwd.ko
iw_cxgbe.ko
iwi_bss.ko
iwi_ibss.ko
iwi_monitor.ko
iwlwifi-3160-17.ucode.ko
iwlwifi-3168-29.ucode.ko
iwlwifi-7260-17.ucode.ko
iwlwifi-7265-17.ucode.ko
iwlwifi-7265D-29.ucode.ko
iwlwifi-8000C-36.ucode.ko
iwlwifi-8265-36.ucode.ko
iwlwifi-9000-pu-b0-jf-b0-46.ucode.ko
iwlwifi-9260-th-b0-jf-b0-46.ucode.ko
iwlwifi-Qu-b0-hr-b0-77.ucode.ko
iwlwifi-Qu-b0-jf-b0-77.ucode.ko
iwlwifi-Qu-c0-hr-b0-77.ucode.ko
iwlwifi-Qu-c0-jf-b0-77.ucode.ko
iwlwifi-QuZ-a0-hr-b0-77.ucode.ko
iwlwifi-QuZ-a0-jf-b0-77.ucode.ko
iwlwifi-cc-a0-77.ucode.ko
iwlwifi-gl-c0-fm-c0-83.ucode.ko
iwlwifi-gl-c0-fm-c0.pnvm.ko
iwlwifi-so-a0-gf-a0-83.ucode.ko
iwlwifi-so-a0-gf-a0.pnvm.ko
iwlwifi-so-a0-gf4-a0-83.ucode.ko
iwlwifi-so-a0-gf4-a0.pnvm.ko
iwlwifi-so-a0-hr-b0-81.ucode.ko
iwlwifi-so-a0-jf-b0-77.ucode.ko
iwlwifi-ty-a0-gf-a0-83.ucode.ko
iwlwifi-ty-a0-gf-a0.pnvm.ko
iwm3160fw.ko
iwm3168fw.ko
iwm7260fw.ko
iwm7265Dfw.ko
iwm7265fw.ko
iwm8000Cfw.ko
iwm8265fw.ko
iwm9000fw.ko
iwm9260fw.ko
iwn1000fw.ko
iwn100fw.ko
iwn105fw.ko
iwn135fw.ko
iwn2000fw.ko
iwn2030fw.ko
iwn4965fw.ko
iwn5000fw.ko
iwn5150fw.ko
iwn6000fw.ko
iwn6000g2afw.ko
iwn6000g2bfw.ko
iwn6050fw.ko
jedec_dimm.ko
kbdmux.ko
kern_testfrwk.ko
kernel
kgssapi.ko
kgssapi_krb5.ko
kinst.ko
krpc.ko
krping.ko
ksyms.ko
ktest.ko
ktest_example.ko
ktest_netlink_message_writer.ko
libalias.ko
libiconv.ko
libmchain.ko
lindebugfs.ko
linker.hints
linprocfs.ko
linsysfs.ko
linux.ko
linux64.ko
linux_common.ko
linuxkpi.ko
linuxkpi_hdmi.ko
linuxkpi_wlan.ko
logo_saver.ko
lpbb.ko
lpt.ko
ltc430x.ko
mac_biba.ko
mac_bsdextended.ko
mac_ifoff.ko
mac_ipacl.ko
mac_lomac.ko
mac_mls.ko
mac_none.ko
mac_ntpd.ko
mac_partition.ko
mac_pimd.ko
mac_portacl.ko
mac_priority.ko
mac_seeotheruids.ko
mac_stub.ko
mac_test.ko
max44009.ko
mdio.ko
mem.ko
mfi.ko
mfi_linux.ko
mfip.ko
miibus.ko
mlx.ko
mlx4.ko
mlx4en.ko
mlx4ib.ko
mlx5.ko
mlx5en.ko
mlx5ib.ko
mlxfw.ko
mmc.ko
mmcsd.ko
mpi3mr.ko
mpr.ko
mps.ko
mpt.ko
mqueuefs.ko
mrsas.ko
mrsas_linux.ko
msdosfs.ko
msdosfs_iconv.ko
mthca.ko
mvs.ko
mw88W8363fw.ko
mx25l.ko
mxge_eth_z8e.ko
mxge_ethp_z8e.ko
mxge_rss_eth_z8e.ko
mxge_rss_ethp_z8e.ko
nctgpio.ko
ncthwm.ko
netgraph.ko
netlink.ko
nfscl.ko
nfscommon.ko
nfsd.ko
nfslockd.ko
nfsmb.ko
nfssvc.ko
ng_UI.ko
ng_async.ko
ng_bluetooth.ko
ng_bpf.ko
ng_bridge.ko
ng_btsocket.ko
ng_car.ko
ng_checksum.ko
ng_cisco.ko
ng_deflate.ko
ng_device.ko
ng_echo.ko
ng_eiface.ko
ng_etf.ko
ng_ether.ko
ng_ether_echo.ko
ng_frame_relay.ko
ng_gif.ko
ng_gif_demux.ko
ng_hci.ko
ng_hole.ko
ng_hub.ko
ng_iface.ko
ng_ip_input.ko
ng_ipfw.ko
ng_ksocket.ko
ng_l2cap.ko
ng_l2tp.ko
ng_lmi.ko
ng_macfilter.ko
ng_mppc.ko
ng_nat.ko
ng_netflow.ko
ng_one2many.ko
ng_patch.ko
ng_pipe.ko
ng_ppp.ko
ng_pppoe.ko
ng_pptpgre.ko
ng_pred1.ko
ng_rfc1490.ko
ng_socket.ko
ng_source.ko
ng_split.ko
ng_tag.ko
ng_tcpmss.ko
ng_tee.ko
ng_tty.ko
ng_ubt.ko
ng_vjc.ko
ng_vlan.ko
ng_vlan_rotate.ko
nlsysevent.ko
nmdm.ko
ntb.ko
ntb_hw_amd.ko
ntb_hw_intel.ko
ntb_hw_plx.ko
ntb_tool.ko
ntb_transport.ko
nullfs.ko
nvd.ko
nvdimm.ko
nvme.ko
nvram.ko
nxprtc.ko
ocs_fc.ko
ohci.ko
opensolaris.ko
ossl.ko
otusfw_init.ko
otusfw_main.ko
ow.ko
ow_temp.ko
owc.ko
p2sb.ko
padlock.ko
padlock_rng.ko
pca954x.ko
pcf.ko
pcf8574.ko
pcf8591.ko
pchtherm.ko
pf.ko
pflog.ko
pfsync.ko
plasma_saver.ko
plip.ko
pmspcv.ko
ppbus.ko
ppc.ko
ppi.ko
pps.ko
procfs.ko
profile.ko
proto.ko
prototype.ko
ps4dshock.ko
pseudofs.ko
pty.ko
puc.ko
pvscsi.ko
pwmbus.ko
pwmc.ko
qat.ko
qat_200xx_fw.ko
qat_4xxx_fw.ko
qat_api.ko
qat_c2xxx.ko
qat_c2xxxfw.ko
qat_c3xxx_fw.ko
qat_c4xxx_fw.ko
qat_c62x_fw.ko
qat_common.ko
qat_dh895xcc_fw.ko
qat_hw.ko
qlnxr.ko
rain_saver.ko
random_OTHER.ko
random_fortuna.ko
rc4.ko
rdrand_rng.ko
rsu-rtl8712fw.ko
rt2561fw.ko
rt2561sfw.ko
rt2661fw.ko
rt2860fw.ko
rtc8583.ko
rtsx.ko
rtw8723d_fw.bin.ko
rtw8821c_fw.bin.ko
rtw8822b_fw.bin.ko
rtw8822c_fw.bin.ko
rtw8822c_wow_fw.bin.ko
rtwn-rtl8188eefw.ko
rtwn-rtl8188eufw.ko
rtwn-rtl8192cfwE.ko
rtwn-rtl8192cfwE_B.ko
rtwn-rtl8192cfwT.ko
rtwn-rtl8192cfwU.ko
rtwn-rtl8192eufw.ko
rtwn-rtl8812aufw.ko
rtwn-rtl8821aufw.ko
rtwn.ko
runfw.ko
s3.ko
s35390a.ko
safe.ko
safexcel.ko
sbp.ko
sbp_targ.ko
scc.ko
sctp.ko
sdhci.ko
sdhci_acpi.ko
sdhci_pci.ko
sdio.ko
sdt.ko
sem.ko
send.ko
sfxge.ko
sgx.ko
sgx_linux.ko
siba.ko
siba_bhndb.ko
siftr.ko
siis.ko
smartpqi.ko
smb.ko
smbfs.ko
smbios.ko
smbus.ko
snake_saver.ko
snd_als4000.ko
snd_atiixp.ko
snd_cmi.ko
snd_cs4281.ko
snd_csa.ko
snd_driver.ko
snd_emu10k1.ko
snd_emu10kx.ko
snd_envy24.ko
snd_envy24ht.ko
snd_es137x.ko
snd_fm801.ko
snd_hda.ko
snd_hdspe.ko
snd_ich.ko
snd_maestro3.ko
snd_neomagic.ko
snd_solo.ko
snd_spicds.ko
snd_t4dwave.ko
snd_uaudio.ko
snd_via8233.ko
snd_via82c686.ko
snd_vibes.ko
snp.ko
sound.ko
speaker.ko
spibus.ko
spigen.ko
splash_bmp.ko
splash_pcx.ko
splash_txt.ko
star_saver.ko
superio.ko
sym.ko
systrace.ko
systrace_freebsd32.ko
systrace_linux.ko
systrace_linux32.ko
sysvmsg.ko
sysvsem.ko
sysvshm.ko
t4_tom.ko
t4fw_cfg.ko
t5fw_cfg.ko
t6fw_cfg.ko
tarfs.ko
tcp_bbr.ko
tcp_rack.ko
tcphpts.ko
tcpmd5.ko
tmpfs.ko
toecore.ko
tpm.ko
tws.ko
u3g.ko
uacpi.ko
uark.ko
uart.ko
ubsa.ko
ubser.ko
ubtbcmfw.ko
uchcom.ko
ucom.ko
ucycom.ko
udbp.ko
udf.ko
udf_iconv.ko
udl.ko
uep.ko
uether.ko
ufoma.ko
ufs.ko
uftdi.ko
ugensa.ko
ugold.ko
uhci.ko
uhid.ko
uhid_snes.ko
uhso.ko
uinput.ko
uipaq.ko
ukbd.ko
uled.ko
ulpt.ko
umass.ko
umcs.ko
umct.ko
umodem.ko
umoscom.ko
ums.ko
unionfs.ko
uplcom.ko
urio.ko
usb.ko
usb_quirk.ko
usb_template.ko
usbhid.ko
usfs.ko
usie.ko
uslcom.ko
uvisor.ko
uvscom.ko
vesa.ko
viapm.ko
viawd.ko
videomode.ko
virtio.ko
virtio_balloon.ko
virtio_blk.ko
virtio_console.ko
virtio_pci.ko
virtio_random.ko
virtio_scsi.ko
vkbd.ko
vmci.ko
vmd.ko
vmm.ko
vpd.ko
warp_saver.ko
wbwd.ko
wdatwd.ko
wlan.ko
wlan_acl.ko
wlan_amrr.ko
wlan_ccmp.ko
wlan_rssadapt.ko
wlan_tkip.ko
wlan_wep.ko
wlan_xauth.ko
wmt.ko
wpifw.ko
wsp.ko
x86bios.ko
xb360gp.ko
xdr.ko
xhci.ko
xz.ko
zfs.ko
zlib.ko