我正在尝试将 TL-WN725N 用作 Fedora 20 的 USB WiFi 适配器。
我遵循了这些说明,适配器运行良好,甚至在过去几周内进行了两次更新。
然后我yum update今天做了一个,在我重新启动计算机之前它仍然可以正常工作。我试图重新加载模块并得到insmod: ERROR: could not insert module 8188eu.ko: Invalid module format.
我发现的是,我的内核和模块中的内核头文件不再相同,我必须更新内核,所以我这样做并得到了
sudo yum install kernel-headers
Loaded plugins: langpacks, refresh-packagekit
Package kernel-headers-3.17.3-200.fc20.x86_64 already installed and latest version
Nothing to do
Run Code Online (Sandbox Code Playgroud)
现在我对如何让模块正确加载有点困惑。有人知道吗?
我有一个从这个补丁编译的自定义内核模块,它logitech G19在其他 G 系列设备中增加了对键盘的支持。我在 Ubuntu 的特立独行内核的主分支 (2.6.35) 上编译得很好。
我可以启动并加载模块,但我遇到了一个非常奇怪的情况。一旦我加载模块(在启动时或通过 modprobe),我就会出现黑屏并且我的控制台锁定。
奇怪的是它没有锁定我的系统,它只是当前的控制台会话。我可以通过 SSH 进入我的盒子,它给了我一个终端和一个会话。我可以打字,我什至可以运行一个命令,它会给我输出。然后它绘制我的下一个提示并立即锁定。
我看到dmesg有一个空指针,我得到以下堆栈跟踪:
[ 956.215836] input: Logitech G19 Gaming Keyboard as /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2.1/1-2.1.2/1-2.1.2:1.1/input/input5
[ 956.216023] hid-g19 0003:046D:C229.0004: input,hiddev97,hidraw3: USB HID v1.11 Keypad [Logitech G19 Gaming Keyboard] on usb-0000:00:1d.7-2.1.2/input1
[ 956.216065] input: Logitech G19 as /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2.1/1-2.1.2/1-2.1.2:1.1/input/input6
[ 956.216128] Registered led device: g19_97:orange:m1
[ 956.216146] Registered led device: g19_97:orange:m2
[ 956.216178] Registered led device: g19_97:orange:m3
[ 956.216198] Registered led device: g19_97:red:mr
[ 956.216216] Registered led device: …Run Code Online (Sandbox Code Playgroud) 我想内置所有模块,但这失败了iwlagn:
iwlagn 0000:03:00.0: request for firmware file 'iwlwifi-6000-4.ucode' failed.
iwlagn 0000:03:00.0: no suitable firmware found!
Run Code Online (Sandbox Code Playgroud)
微码文件存在于其中/lib/firmware,如果我编译iwlagn为模块,则整个过程都可以正常工作。我不知道它在哪里寻找文件或有什么问题 - 有什么想法吗?
我正在使用 Buildroot 为 NXP LPC3250 微控制器构建嵌入式 Linux (2.6.39.2) 系统。
现在,我正在尝试启动并运行 ALSA/ASoC,但在让模块协同工作时遇到了一些问题。(我认为!)
我正在测试的板是Embedded Artists 3250 V2 开发板。V2 与 V1 的不同之处在于它没有 LCD 屏幕,但包含I2S 音频编解码器:NXP UDA1380。对 EA3250 V1 的电路板支持包含在内核的LPCLinux版本中。还有一个不同的开发板,称为Phytec 3250,其中包含相同的 UDA1380 编解码器芯片。LPCLinux 发行版还支持 Phytec 板以及音频编解码器芯片。据我所知,Phytec 3250 板在 I2C 地址0x18上具有 UDA1380 编解码器。在我的 EA3250 V2 板上,音频编解码器位于 I2C 地址0x1a。(我已经验证芯片已通电,我可以使用 I2C-tools 包与它通信。它响应 i2cdetect,我可以使用 i2cget 从芯片正确读取寄存器。)
我需要编辑 Phytec 3250 驱动程序文件来更改编解码器芯片的地址。我编辑了lpc3xxx-uda1380.c 的这一部分:
static struct snd_soc_dai_link phy3250_uda1380_dai[] = {
{
.name = …Run Code Online (Sandbox Code Playgroud) 我有一个动态编译的 Linux 内核模块。它是如何添加到启动中的?里面有很多.ko文件/lib/modules。如何设置加载这些模块的优先级?
我尝试了 2 个新的 USB 键盘,它们在 Linux 开始启动之前都可以工作。
启动时我看到:
[ 8.365211] usb 3-2: New USB device found, idVendor=1a2c, idProduct=0b23
[ 8.404863] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8.444623] usb 3-2: Product: USB Keyboard
[ 10.641472] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[ 13.481363] usb 3-2: can't set config #1, error -110
[ 13.523672] usb 3-2: USB disconnect, device number 2
[ 13.804028] usb 3-2: new low-speed USB device number 3 using uhci_hcd
Run Code Online (Sandbox Code Playgroud)
lsusb …
我正在为嵌入式设备构建 busy-box 和 iptables,它们的依赖项之一是内核头文件。
我在整个文件系统中搜索了 *.ko 文件,但没有找到。所以我得出结论,应用程序没有创建任何可加载的驱动程序(内核模块)。
用户空间应用程序需要内核头文件的其他情况是什么?
我安装了 3.16 和 4.0 版的linux-image软件包。在登录期间,我可以在“高级选项”菜单项中选择要启动的内核。但是,当我安装 DKMS 模块时,它仅针对较新版本进行编译:
Setting up fglrx-modules-dkms (1:14.12-1) ...
Loading new fglrx-14.12 DKMS files...
Building only for 4.0.0-1-amd64
Run Code Online (Sandbox Code Playgroud)
3.16 也安装了相关包 ( linux-headers, linux-kbuild, linux-compiler-gcc)。
为什么没有为旧内核映像编译包?我可以配置的内容,以免被编译?
我在重新编译内核时遇到了麻烦。下载源码包,解压运行
fakeroot make-kpkg kernel_image
Run Code Online (Sandbox Code Playgroud)
导致我出错
[...]
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
CHK include/generated/package.h
UPD include/generated/package.h
CC kernel/bounds.s
kernel/bounds.c:1:0: error: code model kernel does not support PIC mode
Run Code Online (Sandbox Code Playgroud)
该问题可以通过更改使用 获得的内核配置来解决make menuconfig。
如何摆脱这个错误并成功编译
编译内核源代码时,您可以选择使用CONFIG_MODULE_SIG*选项对内核模块进行签名。该modinfo工具应该处理验证模块签名的任务,但多年来一直存在一些错误,该工具根本无法再完成这项工作。我得到的只是以下内容:
sig_id: PKCS#7
signer:
sig_key:
sig_hashalgo: md4
signature: 30:82:02:F4:06:09:2A:86:48:86:F7:0D:01:07:02:A0:82:02:E5:30:
...
Run Code Online (Sandbox Code Playgroud)
所以没有密钥,哈希算法是 md4,它甚至没有在内核中编译。
那么如何手动检查和验证模块签名呢?这甚至可能吗?