kal*_*gne 6 linux wifi kernel broadcom modprobe
我经常从 live usb/CD 安装 Linux 发行版。为此,我希望能够在没有任何互联网连接的情况下设置我的无线网络。我有一个 Broadcom 芯片组:
$ lspci -k
04:00.0 Network controller: Broadcom Corporation BCM43228 802.11a/b/g/n
Run Code Online (Sandbox Code Playgroud)
我下载了bcmwl-kernel-source软件包及其依赖项 ( dkms)。我可以离线安装它们并使我的 wifi 正常工作。但是我想了解它是如何工作的。
.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
Run Code Online (Sandbox Code Playgroud)
我备份了它们并删除了它们
$ rm /lib/modules/`uname -r`/kernel/net/wireless/*.ko
$ reboot
Run Code Online (Sandbox Code Playgroud)
重新启动后,wifi不再工作。这些.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)
Run Code Online (Sandbox Code Playgroud)
我尝试了这些命令以确保.ko文件与wl模块有关:
$ apt-get autoremove bcmwl-kernel-source
$ modprobe wl
modprobe: FATAL: Module wl not found.
Run Code Online (Sandbox Code Playgroud)
看起来正常,我重新安装了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
Run Code Online (Sandbox Code Playgroud)
安装bcmwl包会自动尝试wl通过modprobe. 但是它失败了,就像我手动尝试时失败一样:
$ modprobe wl
modprobe: ERROR: could not insert 'wl': Unknown symbol in module, or unknown parameter (see dmesg)
Run Code Online (Sandbox Code Playgroud)
如果我恢复.ko之前从/lib/modules/uname -r 中删除的文件/kernel/net/wireless/ ,然后重新安装bcmwl-kernel-source,脚本会自动插入wl( modprobe wl) 并且我的 wifi 卡再次工作。
我的问题是:
1) 所有这些是如何工作的,无线.ko文件是如何生成的?
2)如果我从 Ubuntu live usb 启动,这些.ko文件已经生成。如果我遇到这些文件不存在的情况,我该怎么办?它们是否与 Linux 发行版之间兼容,以便我可以备份它们?
| 归档时间: |
|
| 查看次数: |
2132 次 |
| 最近记录: |