You don't mention what wifi hardware you have.
Most, if not all, wifi hardware will try to load firmware under linux - if the hardware does not find the correct firmware, it will not work.
You can find which firmware your hardware is trying to load by looking at dmesg - you should see something analogous to this: $ dmesg | tail -10
...
cfg80211: failed to load regulatory.db
Intel(R) Wireless WiFi driver for Linux
Copyright(c) 2003- 2015 Intel Corporation
iwlwifi 0000:02:00.0: enabling device (0000 -> 0002)
iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-7260-17.ucode failed with error -2
iwlwifi 0000:02:00.0: Falling back to sysfs fallback for: iwlwifi-7260-17.ucode
iwlwifi 0000:02:00.0: loaded firmware version 17.459231.0 op_mode iwlmvm
iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 7260, REV=0x144
iwlwifi 0000:02:00.0: base HW address: a0:a8:cd:2c:3e:13
..where, in this example, the firmware is iwlwifi-7260-17.ucode.
Once you know which firmware extension you need, it must be loaded before the wifi extension.