请教一下,为什么编译新内核后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设备,这时候鼠标就不能用了,不知道什么原因,谢谢大家! 自己查精华贴。这问题也是问烂了。 我按照主题搜索usb也是不得其解阿 我认为是没有加载usb的模块,
你贴出你的lsmod的结果,
然后再说。
你编译内核的时候应该编译usb了吧。哈。 编译的选项完全和老内核一样(至少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,则在另外一个模块的括号里又出现了。 大家看一下,这是老内核的模块列表,此内核下,微软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 下面是新内核的模块列表,注意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 这个问题无法解决么?我搜索了很多地方,不少人都碰到,但似乎一直没有解决办法,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]