A menudo instalo distribuciones de Linux desde USB/CD en vivo. Para eso me gustaría poder configurar mi conexión inalámbrica sin ninguna conexión a Internet. Tengo un chipset Broadcom:
$ lspci -k
04:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n
Descargué el bcmwl-kernel-source
paquete así como sus dependencias ( dkms
). Puedo instalarlos sin conexión y hacer que mi wifi funcione. Sin embargo, me gustaría entender cómo funciona bajo el capó.
Hay una lista de .ko
archivos en la carpeta de módulos:
$ ls /lib/modules/`uname -r`/kernel/net/wireless/
cfg80211.ko lib80211_crypt_tkip.ko lib80211.ko
lib80211_crypt_ccmp.ko lib80211_crypt_wep.ko
Les hice una copia de seguridad y los eliminé.
$ rm /lib/modules/`uname -r`/kernel/net/wireless/*.ko
$ reboot
Después del reinicio, el wifi ya no funciona. Parece que esos .ko
archivos son archivos importantes para hacer el wl
trabajo.
Intento recargar wl
pero ya no se reconoce:
$ modprobe wl
modprobe: ERROR: ../libkmod/libkmod-module.c:180 kmod_module_parse_depline() ctx=0x7f9f5375d010 path=/lib/modules/3.13.0-35-generic/kernel/net/wireless/lib80211.ko error=No such file or directory
modprobe: ERROR: ../libkmod/libkmod-module.c:180 kmod_module_parse_depline() ctx=0x7f9f5375d010 path=/lib/modules/3.13.0-35-generic/kernel/net/wireless/lib80211.ko error=No such file or directory
modprobe: ERROR: could not insert 'wl': Unknown symbol in module, or unknown parameter (see dmesg)
Probé estos comandos para asegurarme de que los .ko
archivos tengan algo que ver con el wl
módulo:
$ apt-get autoremove bcmwl-kernel-source
$ modprobe wl
modprobe: FATAL: Module wl not found.
Parece normal, lo reinstalé bcmwl-kernel-source
:
$ sudo dpkg -i bcmwl-kernel-source_6.30.223.141+bdcom-0ubuntu2_amd64.deb
Selecting previously unselected package bcmwl-kernel-source.
(Reading database ... 396932 files and directories currently installed.)
Preparing to unpack .../bcmwl-kernel-source_6.30.223.141+bdcom-0ubuntu2_amd64.deb ...
Unpacking bcmwl-kernel-source (6.30.223.141+bdcom-0ubuntu2) ...
Setting up bcmwl-kernel-source (6.30.223.141+bdcom-0ubuntu2) ...
Loading new bcmwl-6.30.223.141+bdcom DKMS files...
Building only for 3.13.0-35-generic
Building for architecture x86_64
Building initial module for 3.13.0-35-generic
Done.
wl:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/3.13.0-35-generic/updates/dkms/
depmod........
DKMS: install completed.
modprobe: ERROR: could not insert 'wl': Unknown symbol in module, or unknown parameter (see dmesg)
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.103ubuntu4.2) ...
update-initramfs: Generating /boot/initrd.img-3.13.0-35-generic
La instalación del bcmwl
paquete intenta automáticamente insertarlo wl
a través de modprobe
. Sin embargo, falla como falló cuando lo intenté manualmente:
$ modprobe wl
modprobe: ERROR: could not insert 'wl': Unknown symbol in module, or unknown parameter (see dmesg)
Si restauro los .ko
archivos que eliminé anteriormente de /lib/modules/
uname -r /kernel/net/wireless/
y luego los reinstalo bcmwl-kernel-source
, el script inserta automáticamente wl
( modprobe wl
) y mi tarjeta wifi vuelve a funcionar.
Mis preguntas son:
1) ¿Cómo funciona todo esto? ¿Cómo .ko
se generan los archivos inalámbricos?
2) Si inicio desde un live usb de Ubuntu, esos .ko
archivos ya están generados. ¿Qué haría si me encuentro en una situación en la que esos archivos no están aquí? ¿Son compatibles entre distribuciones Linux para poder hacer una copia de seguridad de ellos?