bmygg 发表于 2005-8-30 17:44:26

请教一下,为什么编译新内核后usb鼠标不能用了

用的是redhat9.0,然后下载了纯净的kernel-2.4.20,拷贝/boot/config***文件到/user/src/新内核源码目录下,改名为.config,然后运行make menuconfig编译内核,并专门针对usb部分留意了一下,完全相同,但是重新启动新内核后,无法找到usb mouse(微软的)。

用lsmod查询,发现input, hid等module都已经加载,但和原系统有一点不同,就是:

lsmod后,input module后面会有一个括号,里面包括hid,keyboard:

input             (hid keyboard,这里还有一个模块名)

如果卸载hid module,则变成

input             (keyboard, 这里还有一个,忘了)

而新内核就是后面这一种情况,似乎看样子就是input模块不包括hid设备,这时候鼠标就不能用了,不知道什么原因,谢谢大家!

jozhu 发表于 2005-8-31 01:03:10

自己查精华贴。这问题也是问烂了。

bmygg 发表于 2005-8-31 06:31:12

我按照主题搜索usb也是不得其解阿

goodboy1881 发表于 2005-8-31 09:49:41

我认为是没有加载usb的模块,
你贴出你的lsmod的结果,
然后再说。
你编译内核的时候应该编译usb了吧。哈。

bmygg 发表于 2005-8-31 11:41:20

编译的选项完全和老内核一样(至少usb部分特别仔细地对过),lsmod的时候,两个内核加载的模块也是一样的,唯一不同的就是老内核input模块括号里面包括了hid,keyboard,mousedrv三个,新内核input模块里面则没有hid。另外新老内核还各自有一个模块的括号里也含有hid。

如果在老内核shell中执行rmmod hid,则hid模块卸载的同时,input模块和另外一个模块的括号里面的hid都会消失,如果再次执行insmod hid,则在括号里又都出现了。

如果在新内核shell中执行rmmod hid,则hid模块卸载的同时,另外一个模块的括号里面的hid会消失(新内核input模块的括号里面本来就没有hid),如果再次执行insmod hid,则在另外一个模块的括号里又出现了。

bmygg 发表于 2005-9-1 09:13:42

大家看一下,这是老内核的模块列表,此内核下,微软usb鼠标正常:

Module                  Size         Used by    Not tainted
parport_pc         18756         1            (autoclean)
lp                        8868         0         (autoclean)
parport               36480         1         (autoclean)
autofs                  12948          0         (autoclean) (unused)
3c59x                   30416          1
ipt_REJECT         3896            6         (autoclean)
iptable_filter         2380            1          (autoclean)
ip_tables            14648          2         
keybdev               2880   0(unused)
mousedev                5428   1
hid                  21700   0(unused)
input                   5792   0
ehci-hcd               19592   0(unused)
usb-ohci               21160   0(unused)
usbcore                77696   1
ext3                   69984   2
jbd                  51220   2

bmygg 发表于 2005-9-1 09:16:09

下面是新内核的模块列表,注意input模块:
Module                  SizeUsed by    Not tainted
parport_pc             18660   1(autoclean)
lp                      8324   0(autoclean)
parport                33568   1(autoclean)
autofs               12372   0(autoclean) (unused)
3c59x                  29168   1
ipt_REJECT            4280   6(autoclean)
iptable_filter          2476   1(autoclean)
ip_tables            14752   2
keybdev               2848   0(unused)
mousedev                5204   1
input                   5248   0
hid                  11800   0(unused)
ehci-hcd               20680   0(unused)
usb-ohci               21480   0(unused)
usbcore                75328   1
ext3                   70820   2
jbd                  49168   2

bmygg 发表于 2005-9-5 08:33:18

这个问题无法解决么?我搜索了很多地方,不少人都碰到,但似乎一直没有解决办法,Linuxforum上有高手回答如下,但也没能解决问题。

我记得 usb keyboard/mouse 在启动设备扫描时是需要hid模块的,具体出了什么问题从你的帖子里看不出来。

not tainted 的意思是,内核目前加载的所有模块都是有 GPL 授权的。如果你自己写了一个非 GPL 授权的模块并成功加载,这个 not tainted 就会去掉(也就是说系统被非 GPL 模块“污染”了,提醒用户对非 GPL 模块是没有技术支持的)
中括号表示模块的依赖关系,比如
usbcore 77696 1
说明 hid, ehci-hcd, usb-ohci 这三个模块是依赖 usbcore 的,如果usbcore 没有成功加载,它们就无法加载;
圆括号表示模块的特性/状态,unused 说明目前没有使用,autoclean 说明 rmmod -a 时会被自动卸载,等等。
页: [1]
查看完整版本: 请教一下,为什么编译新内核后usb鼠标不能用了