Я часто устанавливаю дистрибутивы Linux с live usb/CD. Для этого я хотел бы иметь возможность настроить беспроводную связь без подключения к интернету. У меня чипсет Broadcom:
$ lspci -k
04:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n
Я скачал bcmwl-kernel-source
пакет, а также его зависимости ( dkms
). Я могу установить их в автономном режиме и заставить работать мой Wi-Fi. Однако я хотел бы понять, как это работает под капотом.
.ko
В папке модулей находится список файлов:
$ ls /lib/modules/`uname -r`/kernel/net/wireless/
cfg80211.ko lib80211_crypt_tkip.ko lib80211.ko
lib80211_crypt_ccmp.ko lib80211_crypt_wep.ko
Я сделал их резервную копию и удалил.
$ rm /lib/modules/`uname -r`/kernel/net/wireless/*.ko
$ reboot
После перезагрузки Wi-Fi больше не работает. Похоже, эти .ko
файлы важны для работы wl
.
Я пробую перезагрузить wl
, но он больше не распознается:
$ 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)
Я попробовал эти команды, чтобы убедиться, что .ko
файлы имеют какое-то отношение к wl
модулю:
$ apt-get autoremove bcmwl-kernel-source
$ modprobe wl
modprobe: FATAL: Module wl not found.
Вроде нормально, переустановил 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
Установка bcmwl
пакета автоматически пытается вставить wl
через modprobe
. Однако это не удается, как и при попытке вручную:
$ modprobe wl
modprobe: ERROR: could not insert 'wl': Unknown symbol in module, or unknown parameter (see dmesg)
Если я восстановлю .ko
файлы, которые я ранее удалил из /lib/modules/
uname -r /kernel/net/wireless/
, а затем переустановлю bcmwl-kernel-source
, скрипт автоматически вставит wl
( modprobe wl
), и моя карта Wi-Fi снова заработает.
У меня есть вопросы:
1) Как все это работает, как .ko
генерируются беспроводные файлы?
2) Если я загружаюсь с Ubuntu Live USB, эти .ko
файлы уже сгенерированы. Что делать, если я окажусь в ситуации, когда этих файлов здесь нет? Совместимы ли они между дистрибутивами Linux, чтобы я мог сделать их резервную копию?