本博客倡导开放源代码,在此公布之程序源代码如无特别声明均采用GNU通用公共 许可证(GPL)

乐在其中

分享学习Linux的乐趣

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  23 随笔 :: 0 文章 :: 401 评论 :: 0 Trackbacks
Linux内核负责管理/调度所有的系统资源和设备,并为应用程序提供服务。要想让播放机支持更多的设备,比如USB无线网卡,必需从内核入手。Linux支持动态加载模块,这些模块其实也是内核的一部分,只不过是被模块化罢了。模块化的好处之一是可以在需要时才加载模块,不需要时可以卸载,释放其占用的内存。这对内存紧张的嵌入式系统无疑是有帮助的。

我重新编译内核有以下几个目的:
1) 打开官方内核中某些没有打开的功能,如NFS服务器。
2) 尝试支持更多外部设备,如编译第三方驱动程序。
3) 内核瘦身,比如关闭某些不需要的功能,或者将其编译成模块。

内核源码仍使用华硕公布的源码,其中名为linux-2.6.12.274877.tgz的文件即是内核源码。用tar zxf linux-2.6.12.274877.tgz解开此文件,得到linux-2.6.12目录。看一下版本号
1 $ grep UTS_RELEASE linux-2.6.12/include/linux/version.h
2 #define UTS_RELEASE "2.6.12.6-VENUS"
与在播放机上用'uname -r'看到的一样,因此我们能确信这就是播放机所用内核的源码,虽然来源不是海信,但是我认为海信不会在内核上做什么改动,最多不过调整一些配置参数。

粗略研究了一下内核源码,发现Realtek在原始的2.6.12.6内核基础上做了不少修改,下面列出其中一部分:
  1. 文件系统方面增加了
    • fuse - Filesystem in Userspace
    • ptp - Picture Transfer Protocol,用于数码相机
    • vcd - CDROM文件系统
    • squashfs - 压缩的只读文件系统
    • yaffs - 针对NAND闪存优化的文件系统
  2. 大量的MIPS平台更新,其中包括对Realtek Venus系统(就是播放机所用系统)的支持
  3. 增加了Realtek无线网卡支持,包括RTL8185,RTL8187,RTL8190,RTL8192,RTL8191SU等芯片组的支持。
  4. 增加了一些专门针对Realtek Venus的优化
linux-2.6.12目录下有两个配置文件样本:config.develop.avhdd.mars.old 和 config.rescue.usb.flash.mars.old。根据字面意思推测第一个文件是常规模式的内核配置,第二个是急救模式的内核配置。急救模式只保留了急救固件升级所需功能,因此编译出的内核比常规模式的小很多。在MP800H上,急救内核与Bootloader放在同一个flash分区内,正常的固件升级不会更新这一部分。关于通过串口激活急救模式进行固件升级的方法,请看蓝媒论坛dragon版主的大作《MP800H串口刷机指南》
我以config.develop.avhdd.mars.old为基准对内核进行配置(执行make menuconfig),打开了NFS Server Support(编译成模块,并且只打开NFSv3支持),其余部分保持不变,最后得到的.config文件增加了如下几项:
1 CONFIG_NFSD=m
2 CONFIG_NFSD_V3=y
3 CONFIG_NFSD_TCP=y
4 CONFIG_EXPORTFS=m
然后执行make进行编译(注意:编译内核要用/usr/bin下的工具链,即mipsel-sdelinux-v6.03.01-1,在PATH中/usr/bin应该在/usr/local/bin的前面)。编译完成后会生成名为vmlinux.bin的文件,用lzma把它压缩后改名为vmlinux.develop.avhdd.mars.bin.lzma,这个文件即可用于制作固件。另外还需要把编译好的模块安装到某个目录以便于打包,比如要安装到/home/user/dist/modules则执行如下命令:
1 make INSTALL_MOD_PATH=/home/user/dist/modules modules_install
至此,我们已经准备好了新的内核和模块。在用自己编译的模块替换官方固件模块时要注意两点:
1. 如果配置内核是打开了DEBUG,编译出的模块会很大,在制作固件前最好把调试信息去掉。下面的命令可以很容易的完成这个任务:
1 $ cd /home/user/dist/modules
2 $ find . -name '*.ko' -exec mipsel-linux-strip --strip-unneeded '{}' \;
2. 有一个模块ufsd.ko是没有源码的,这个模块提供NTFS读写的支持。如果你想使用NTFS,则要从官方固件中拷贝这个文件。

posted on 2010-03-21 21:49 gouzhuang 阅读(9358) 评论(132)  编辑 收藏 引用 所属分类: 嵌入式Linux
评论共2页: 1 2 

评论

# re: 编译内核(Compile the Kernel) 2010-04-21 23:39 laowantong
can not type chinese, just copy output


BusyBox v1.1.3 (2009.10.29-07:51+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # /sbin/insmod /lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-disk.ko
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-disk.ko': Success (8): Success

/ # /sbin/lsmod
Module Size Used by Not tainted
ohci_hcd 25232 0
ehci_hcd 45856 0
sata_mars 24960 0
libata 60432 1 sata_mars

busybox seem too old, not depmod, and insmod can't take -v option, there is not useful error mesg printed.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 08:31 gouzhuang
@laowantong(老顽童?)
>insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-disk.ko': Success (8): Success
看来还是兼容性问题。如果你愿意尝试,我可以提供编译好的内核及模块,这个需要重刷固件。

等等,有可能是我关闭了内核debug,导致与你的内核不兼容。我会用最接近原厂的配置(华硕的配置)重编一次。
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 09:35 gouzhuang
@laowantong
按原厂配置编译好了,rtl8187l也一并编译了。试试吧,再不行就只有更新内核了。

http://www.cnitblog.com/Files/gouzhuang/ide-modules.tar.zip

http://www.cnitblog.com/Files/gouzhuang/rtl8187l-modules.tar.zip  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 11:50 everpunk
@gouzhuang
呵呵又来叨扰了

按照高手教的我在PC上新建了个文本文件,将盘符的那个指令拷贝进去然后取名是1拷贝到U盘,然后连上播放器。这时想起没有改成你所说的myhotplug又用命令行mv将1.txt改成myhotplug,然后执行/tmp/usbmounts/sda1 # cp myhotplug to /dev/root/usr/local/etc
cp: unable to stat `/dev/root/usr/local/etc/myhotplug': Not a directory
cp: to: No such file or directory

出现的就是这个,还是没搞定。

还有疑问,就是“修改系统默认的hotplug程序:
echo /sbin/myhotplug > /proc/sys/kernel/hotplug”
是什么意思啊?该怎么操作呀?

而且又说“注意这只在本次启动有效,系统重启后默认hotplug程序又会恢复原来的。要想在系统启动时自动修改,需要将上面的命令加到系统初始化脚本里(如果不熟悉 linux系统最好不要轻易修改,否则可能造成系统无法启动)”

那就是说每次开机都要执行一遍吗?

谢谢啊!

  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 12:14 laowantong
only 1 file in rtl8187l ? maybe some depmod?
how to write the entry in modules.dep?
let me try  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 12:30 gouzhuang
@laowantong
>only 1 file in rtl8187l ? maybe some depmod?
是的, 内嵌了ieee80211, 所以不依赖任何外部模块

>how to write the entry in modules.dep?
是depmod产生的:
编译完内核并将模块安装到某个指定目录后,在内核源码目录执行
depmod -ae -F System.map -b 模块安装目录 -r 2.6.12.6-VENUS
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 12:39 gouzhuang
@everpunk
>然后执行/tmp/usbmounts/sda1 # cp myhotplug to /dev/root/usr/local/etc
应该是 cp myhotplug /usr/local/etc

然后 chmod +x /usr/local/etc/myhotplug

然后 echo /usr/local/etc/myhotplug > /proc/sys/kernel/hotplug
这个命令的意思是把字符串"/usr/loca/etc/myhotplug"写到/proc/sys/kernel/hotplug文件里。

建议你先找一本Linux入门的书看看。

  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 13:04 laowantong
seem change error code. still not working

/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l # insmod /lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l/r8187l.ko
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l/r8187l.ko': Success (2): Success
/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l # insmod /lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-disk.ko
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-disk.ko': Success (2): Success
/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l # insmod /lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-generic.ko
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-generic.ko': Success (2): Success
/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l # insmod /lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-cd.ko
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-cd.ko': Success (2): Success
/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l # insmod /lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-core.ko
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-core.ko': Success (2): Success

my machine is 1283(M890), maybe diff from 1073?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 13:37 laowantong
root@linux9:/home/jchen/firmware/new/img2_1/lib/modules/2.6.12.6-VENUS# ls mo*
modules.alias modules.ieee1394map modules.pcimap
modules.ccwmap modules.inputmap modules.symbols
modules.dep modules.isapnpmap modules.usbmap


do you think these files need to modify, when you add ide and r8187l modules?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 14:21 laowantong
when I plug in WG111v2 USB card, system insert module r8187, that is for WG111v3 card.
/tmp/log # lsmod
Module Size Used by Tainted: PF
r8187 111696 0
ieee80211_8187 100432 1 r8187
ieee80211_crypt 7248 1 ieee80211_8187
ufsd 445136 0
ohci_hcd 25232 0
ehci_hcd 45856 0
sata_mars 24960 0
libata 60432 1 sata_mars

strange!

/tmp/log # modprobe r8187l
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187l/r8187l.ko': Success (2): Success
modprobe: failed to load module r8187l

  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 15:09 gouzhuang
@laowantong
try use this busybox, it may give more meaningful error message

http://www.cnitblog.com/Files/gouzhuang/busybox.zip

this is a static linked busybox 1.15.3, run this command

busybox insmod <path_to_module>

let see what it says  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 15:28 gouzhuang
@laowantong
>when I plug in WG111v2 USB card, system insert module r8187, that is for WG111v3 card.
r8187 and r8187l has overlapped device support.

driver idVendor idProduct
-------------------------
r8187 0x0bda 0x8187
r8187 0x0bda 0x8189
r8187 0x0846 0x6100
r8187 0x0846 0x6a00
r8187 0x050d 0x705e
r8187l 0x1b75 0x8187
r8187l 0x0bda 0x8187
r8187l 0x0846 0x6100
r8187l 0x0846 0x6a00

what is the idVendor and idProduct of your usb card?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 15:56 gouzhuang
@laowantong
>do you think these files need to modify, when you add ide and r8187l modules?
insmod does not rely on any of these files. As far as I know, modprobe requires an up-to-date modules.dep, and it may use modules.symbol and modules.alias  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 16:30 gouzhuang
@laowantong
>my machine is 1283(M890), maybe diff from 1073?
don't worry, they use the same kernel source. in fact my player reports board-id 1283.

here goes the kernel and modules:
http://www.cnitblog.com/Files/gouzhuang/vmlinux.bin.lzma.zip
http://www.cnitblog.com/Files/gouzhuang/modules.tar.zip

in case you want to know the kernel config, here it is:
http://www.cnitblog.com/Files/gouzhuang/kernel-config.zip  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-22 23:23 everpunk
@gouzhuang
看了一些简单的命令,还是晕

然后 echo /usr/local/etc/myhotplug > /proc/sys/kernel/hotplug
这个命令的意思是把字符串"/usr/loca/etc/myhotplug"写到/proc/sys/kernel/hotplug文件里

pc上的文件是txt文件是不是在命令行也要有后缀名txt呢?
我试了一次把后缀名取消后,按照以上命令后在接上USB硬盘时在tr继续下载时,提示找不到下载文件,df -k后看到盘符还是变成别的了和起初的tr下载路径不一样了。

现在用的比较笨的办法是每次插上USB硬盘df -k看了下盘符,然后killall tr的程序再用vi修改下载路径才能继续下载,这些是不是能用按键写脚本的方式实现呢?

  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 09:06 老顽童
怎么看idVendor and idProduct of your usb card?   回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 09:25 老顽童
太好了, 有static的busybox, 利器! 你没有去掉任何sub command吧? 那我只要看1.15.3的man page了! 太谢谢了! 现在机带的modprobe真好笑, 明明出错了, 还说success,也不给点错误MESG.

M890里提示说无法启动syslog, 不知道是什么原因. 没有log也不知道出什么错, 可能是因为/var --> /tmp那个区太小了, 什么也不log,真要命.

syslog-ng_2.0.9-2_mipsel.ipk
metalog_0.7-5_mipsel.ipk
你用过哪个? 哪个比较好?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 10:08 gouzhuang
@老顽童
>怎么看idVendor and idProduct of your usb card?
台式机linux上用lsusb命令看

我给你的busybox就是把我自己用的改用static link重新编译的,不支持 --install功能,你需要自己建symbolic link。busybox --help 可以列出编入的所有命令。

我没用任何的log,也不打算用。/tmp用的是ramfs,/tmp下文件越多,可用内存就越少。想看系统日志可以用dmesg命令,它是把最近的内核日志显示出来。建议你进行调试时停掉DvdPlayer,它产生太多的日志,很快就让内核日志缓冲区溢出,早一点的日志信息就看不到了。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 10:09 老顽童
@everpunk
我不推荐你用这个/proc/sys/kernel/hotplug 办法, /proc是系统区, 不是普通用户可以动的地方, 读写那里是高危动作, 何况每次重起还得telnet进去重做. 自动启动当然可以, 一旦你忘了插上USB盘就启动, 可能系统就瘫涣了,或者下回更新固件, 你完全记不起要修改些什么东东. 即使记得, 还得一步步解包固件, 添加软件, 修改配置,重新打包,刷新, 一步弄错, 就完蛋了.

我个人认为改动厂家固件不可取, 添加软件,增强功能,必须添在另外的文件系统里,比如USB外挂硬盘, 内接STAT硬盘.添在/opt里, 不要去动FLASH / 文件系统里的东西.
LZ说的:
# Start all init scripts in /opt/etc/init.d
for i in /opt/etc/init.d/S??* ;do
if [ -x $i ] ; then
$i start&
fi
done
是个好办法, 这个动作,可以用liyanlee用发现的按键来操作, 又没有危险.

还是用http://1073.konamicn.com/thread-534-1-2.html办法, 把遥控器上红绿灯黄兰四个键值搞出来. 然后每次要下载时, 插上硬盘, 按下键, 挂上/opt 也不要修改TR任何东西, 就能下载, (当然第一次要按wenl的教程修改好设置)  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 10:31 everpunk
@老顽童
谢谢老顽童!

有点不解的是移动硬盘的EXT3分区里没有/opt的文件夹啊?是不是必须要有这个文件夹的?

我安装的是wenl的2.1的rom版本  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 10:56 老顽童
webmstr@ubuntu804d:~$ lsusb

Bus 002 Device 004: ID 0846:6a00 NetGear, Inc. WG111 WiFi (v2)

看来是overlap的
r8187 0x0846 0x6a00
r8187l 0x0846 0x6a00

难道不需要r8187l 驱动?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 13:50 老顽童
@everpunk
在固件里添个/opt目录, 大概是我肯对厂家固件动的唯一手脚.
刚看新固件M890_V8.2.5R1936, 发现
opt -> /usr/local/etc/opt
厂家还是听取用户的呼声的:-)

即使以后IDE R8187L模块工作了, 我想也要用insmod而不用modprobe, 放在/opt的什么地方去加载, 免的去修改固件里的modules.dep文件.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 14:38 老顽童
还有一个想法. 源自前天看遥控器的web界面, http://1073.konamicn.com/viewthread.php?tid=53&highlight=web
遥控器可以用web来模拟了, 那么有两个好处, 遥控器不在身边或坏了, 可以用电脑来代替按键, 另外如果你人上班不在机子边上, 家里老人不会用M890,你在单位也可以远程进去遥控机器选片播放.

从第二点, 带来个问题, 人不在TV边上, 你按键就不知道走到哪里了, 要是能够redirect TV/HDMI output到远方的Xwindow上,岂不美妙?

mispel已经有了Xserver了,
x11_6.2.1+cvs20050209-3_mipsel.ipk
xdmcp_0.1.3+cvs20050130-2_mipsel.ipk
把DISPLAY送到外地去, 不是问题吧, 就是不知道怎么redirect TV/HDMI output?

或者VNC能不能用? 把TV当做某个DISPLAY, 让VNC连上那个DISPLAY?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 14:57 gouzhuang
@老顽童
>难道不需要r8187l 驱动?
我认为是r8187对你的网卡支持有问题。你可以手工选择驱动:
rmmod r8187以及ieee80211_*
modprobe r8187l

>要是能够redirect TV/HDMI output到远方的Xwindow上,岂不美妙?
据我所知这是不可能的。播放机的图形界面根本不是基于Xwindow的。音/视频的解码和输出是由专用的解码芯片完成的。播放程序DvdPlayer是通过RPC与解码芯片进行通讯的。这是我目前掌握的情况。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-23 16:42 老顽童
不期望音/视频的解码和输出到Xwindow上来, 好象不太现实,

只要能看到DvdPlayer的输出就好了... 看来是我异想天开, 要是有DvdPlayer的web界面就好了, 呵呵

好, 回家去试试新kernel  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-24 23:30 ccc
求助,最近在操作中遇到这样的错误提示,请教各位高手如何解决,谢谢!

insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/usb/host/ehci-hcd.ko': Success (17): Success
modprobe: failed to load module ehci-hcd
insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/usb/host/ohci-hcd.ko': Success (17): Success
modprobe: failed to load module ohci-hcd
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-25 09:31 gouzhuang
@ccc
>insmod: cannot insert `/lib/modules/2.6.12.6-VENUS/kernel/drivers/usb/host/ohci-hcd.ko': Success (17): Success
应该是这个模块已经加载了,不能重复加载,用lsmod看一下有没有。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-25 10:01 gouzhuang
到目前为止,insmod报出的错误代码有:2,8,17
查了一下内核头文件,这些错误代码有如下定义:
#define ENOENT 2 /* No such file or directory */
...
#define ENOEXEC 8 /* Exec format error */
...
#define EEXIST 17 /* File exists */

不过对于老顽童先遇到8,后遇到2仍有些不解。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-25 10:22 ccc
@gouzhuang
limod查看应该已加载:
~ # lsmod
Module Size Used by Tainted: PF
sata_mars 23488 0
libata 58928 1 sata_mars
ufsd 445136 0
ohci_hcd 25200 0
ehci_hcd 45728 0
我是用dragon的800v3固件,ext3格式的扩展盘  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 00:49 laowantong
oops,new kernel not work for me:-(


/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide # insmod /lib/modules/2.6.12.6-VE
NUS/kernel/drivers/ide/ide-disk.ko
insmod: can't insert '/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-disk.ko': unknown symbol in module, or unknown parameter
/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide # insmod /lib/modules/2.6.12.6-VE
NUS/kernel/drivers/ide/ide-core.ko
insmod: can't insert '/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-core.ko': unknown symbol in module, or unknown parameter
/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide # insmod /lib/modules/2.6.12.6-VE
NUS/kernel/drivers/ide/ide-generic.ko
insmod: can't insert '/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide/ide-generic.ko': unknown symbol in module, or unknown parameter
/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide # modprobe
/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide # modprobe ide-disk
modprobe: failed to load module ide_core (kernel/drivers/ide/ide-core.ko): unknown symbol in module, or unknown parameter
/lib/modules/2.6.12.6-VENUS/kernel/drivers/ide # modprobe sata_mars
modprobe: failed to load module libata (kernel/drivers/scsi/libata.ko): unknown symbol in module, or unknown parameter
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 08:43 老顽童
@gouzhuang
>不过对于老顽童先遇到8,后遇到2仍有些不解。

不是的.
是先遇到2(No such file or directory), 后遇到8(Exec format error).
开头是modules.dep文件没刷新, modprobe没工作,找不到文件, insmod没有full path, 所以找不到文件.

后面的问题可能是不匹配了.
不过我用你的
1.vmlinux.bin 替换/vmlinux
2.modules.tar.zip 替换整个/lib/modules/2.6.12.6-VENUS
3.busybox 替换/bin/busybox
出来上面的问题.

不知道什么问题, 能不能不搞module了? 直接把IDE部分编进vmlinux?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 11:38 gouzhuang
@laowantong
>oops,new kernel not work for me:-(
Sorry, 是我没搞清你的播放机的固件结构。我的机子是基于NOR Flash的,你的应该是NAND Flash的,两者固件的结构略有不同。

我看了一下海信MP801(基于NAND)的固件,认为应该这样更新内核,请与你的固件进行对照,如有不符请先不要更新,有把握再做。

1. 固件包内package2目录下有个文件叫vmlinux.develop.avhdd.mars.nand.bin,这个文件要用http://www.cnitblog.com/Files/gouzhuang/vmlinux.bin.lzma.zip 来替代(解压后得到vmlinux.bin,然后改名为vmlinux.develop.avhdd.mars.nand.bin)

2. package2目录下有个yaffs2_1.img文件,这个是根文件系统映像,解开后用 http://www.cnitblog.com/Files/gouzhuang/vmlinux.lzma.zip (需要解压) 替换下面的vmlinux文件再重新打包

3. 重新打包固件,再用它刷机

注意:以上步骤我没有条件验证,最好先咨询一下有同型号刷机经验者。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 16:57 老顽童
@gouzhuang
谢谢,
我没想到要做第一步, 只做了第二步.

M890机器应该是NAND Flash的

应该没什么问题吧, 如果刷坏了, 可以用原厂固件替换回去的吧?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 21:25 laowantong
module file is uploaded, verified lsmod
/ # lsmod
Module Size Used by Not tainted
r8187l 233968 0
r8187 108400 0
ieee80211_8187 93264 1 r8187
ieee80211_crypt 5648 1 ieee80211_8187
ide_generic 1152 0 [permanent]
ide_disk 19264 0
ide_core 116608 2 ide_generic,ide_disk
ohci_hcd 23408 0
ehci_hcd 43072 0
sata_mars 21952 0
libata 50096 1 sata_mars


but device file was not created. how to do next?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 22:06 老顽童
found in dmesg:

sata dma reset
sata2: occupy port1, COMRESET ok, sstatus = 113, SCRstatus = 113
__mars_sata_phy_reset(861)check taskfile state
sata2 is slow to respond, please be patient
sata2 failed to respond. status:0x80(20 secs)
sata2: HDisk status not ready.
__mars_sata_phy_reset(861)check taskfile state
sata2 is slow to respond, please be patient
sata2 failed to respond. status:0x80(20 secs)
sata2: HDisk status not ready.
__mars_sata_phy_reset(861)check taskfile state
sata2 is slow to respond, please be patient
sata2 failed to respond. status:0x80(20 secs)
sata2: ata_bus_probe failed
scsi1 : SATA_DRV
Mars no support IDE
ide generic info: ide_generic_init
Mars no support IDE




still not working!  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 22:36 老顽童
about rtl8187l, 好象是工作了,

wlan0 Link encap:Ethernet HWaddr 00:24:B2:33:2F:62
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


起来了! 需要配置下  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 22:45 老顽童
不过video, avi文件好象有点问题:"启动代码未知"错误
mkv又可以play  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 23:37 gouzhuang
@老顽童
>不过video, avi文件好象有点问题:"启动代码未知"错误
mkv又可以play
能说详细点吗?

如果怀疑跟内核有关可以进行以下两项检查:
1. 比较一下我编译的模块是否比原厂固件少了某些模块。
2. 比较一下我编译的内核与原厂内核的符号表,看有多大差异。符号表可以用命令"nm vmlinux"获得。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-27 23:43 gouzhuang
@老顽童
>Mars no support IDE
似乎sata_mars驱动不支持IDE转接

>about rtl8187l, 好象是工作了,
要确认是否工作很简单:扫描一下网络,如果能发现无线网络就说明驱动工作正常。用这个命令:iwlist wlan0 scan
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 09:31 老顽童
如果, sata_mars驱动不支持IDE转接, 是不是说不可能用内接的IDE盘了?还是因为厂家把IDE部分给精减掉了?

ubuntu上不能看MIPS的符号表, 只好回家再看了.

rtl8187l上面的灯亮了,wlan0也出来了,看来硬件驱动部分是工作了,只是我需要配置下WAP,什么的, 还不太懂怎么搞, 需要学学. 用dvdplayer界面上的无线网络配置, 它说找不到SSID.不知道怎么回事. 如果就是相当于做: iwlist wlan0 scan, 找不到SSID,是哪里的问题呢?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 10:43 gouzhuang
@老顽童
>如果, sata_mars驱动不支持IDE转接, 是不是说不可能用内接的IDE盘了?还是因为厂家把IDE部分给精减掉了?
我看了一下内核源码,在ide模块初始化代码的开始处有如下代码:
if(is_mars_cpu())
{
printk (KERN_INFO "Mars no support IDE\n");
return 0;
}
看来是ide模块自己拒绝初始化,跟sata_mars无关。

>ubuntu上不能看MIPS的符号表, 只好回家再看了.
我在ubuntu上可以看呀!你确定看的是vmlinux文件而不是vmlinux.bin文件吗?

>rtl8187l 上面的灯亮了,wlan0也出来了,看来硬件驱动部分是工作了,只是我需要配置下WAP,什么的, 还不太懂怎么搞, 需要学学. 用dvdplayer界面上的无线网络配置, 它说找不到SSID.不知道怎么回事. 如果就是相当于做: iwlist wlan0 scan, 找不到SSID,是哪里的问题呢?
先不管dvdplayer,手工执行ifconfig wlan0 up; iwlist wlan0 scan看有什么结果。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 11:29 老顽童
oops, 我看的是: package2里面的vmlinux.develop.avhdd.mars.nand.bin, 这个文件不就是yaffs2_1.img里面的/vmlinux吗? 我是用你编译的kernel文件vmlinux.lzma.zip, 解压后,分别改名, 然后替换这两个文件的啊.

anyway,请看原厂M890_V8.2.5R992.zip固件的符号表:
http://download.goconnect.net/temp/M890_V8.2.5R992.vmlinux.nm  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 11:34 老顽童
啊.晕, 才注意到, 你传了两个不同的文件,

http://www.cnitblog.com/Files/gouzhuang/vmlinux.bin.lzma.zip

http://www.cnitblog.com/Files/gouzhuang/vmlinux.lzma.zip

汗, 我当成一个文件了, 奇怪,刷机没出问题:-)  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 11:40 老顽童
好象有关ide的没有差别啊:

diff gou_vmlinux.nm ../img2_1/M890_V8.2.5R992.vmlinux.nm | grep ide

< 531ee4d7 A __crc_scsi_reset_provider
> 752323a9 A __crc_scsi_reset_provider
< 803cd314 T __ip_select_ident
< 8049c96c r __kcrctab___ip_select_ident
< 8049b97c r __kcrctab_d_genocide
< 8049c250 r __kcrctab_scsi_reset_provider
< 804a56e4 r __kstrtab___ip_select_ident
< 804a00f0 r __kstrtab_d_genocide
< 804a33ac r __kstrtab_scsi_reset_provider
< 80499f70 r __ksymtab___ip_select_ident
< 80497f90 r __ksymtab_d_genocide
< 80499138 r __ksymtab_scsi_reset_provider
> 803bf854 T __ip_select_ident
> 8048ea58 r __kcrctab___ip_select_ident
> 8048da18 r __kcrctab_d_genocide
> 8048e33c r __kcrctab_scsi_reset_provider
> 8049793c r __kstrtab___ip_select_ident
> 804921dc r __kstrtab_d_genocide
> 80495604 r __kstrtab_scsi_reset_provider
> 8048c00c r __ksymtab___ip_select_ident
> 80489f8c r __ksymtab_d_genocide
> 8048b1d4 r __ksymtab_scsi_reset_provider
< 801d4c60 T d_genocide
> 801d87d0 T d_genocide
< 80313434 t hide_cursor
< 804ac5ec d ident_map
< 805963a0 b identity
> 802f43e4 t hide_cursor
> 8049e65c d ident_map
> 805823b0 b identity
< 801f4df8 t proc_pident_lookup
< 801f38bc t proc_pident_readdir
> 801f8678 t proc_pident_lookup
> 801f713c t proc_pident_readdir
< 80348508 T scsi_decide_disposition
< 80347b88 T scsi_reset_provider
< 80347b80 t scsi_reset_provider_done_command
> 8033a6c0 T scsi_decide_disposition
> 80339d40 T scsi_reset_provider
> 80339d38 t scsi_reset_provider_done_command
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 11:52 gouzhuang
@老顽童
>汗, 我当成一个文件了, 奇怪,刷机没出问题:-)
你运气好:),重要的是packages/vmlinux.develop.avhdd.mars.nand.bin。根目录下的vmlinux似乎没什么用,不知为什么要放在那儿,难道只是为了符号表?。我的播放机上根本没这个文件。

待会看看你的符号表。
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 12:15 老顽童
哈哈,运气的是 我用了:vmlinux.bin.lzma.zip 而不是vmlinux.lzma.zip  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 21:04 laowantong
/ # lsmod
Module Size Used by Not tainted
r8187l 233968 0
ohci_hcd 23408 0
ehci_hcd 43072 0
sata_mars 21952 0
libata 50096 1 sata_mars


iwlist wlan0 scan
seem hanged, not respond

ifconfig wlan0 192.168.61.200 netmask 255.255.255.0 up

wlan0 Link encap:Ethernet HWaddr 00:24:B2:33:2F:62
inet addr:192.168.61.200 Bcast:192.168.61.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


from ubuntu machine, can telnet in the M890
root@linux9:/# telnet 192.168.61.200
Trying 192.168.61.200...
Connected to 192.168.61.200.
Escape character is '^]'.
Venus login: root
login: can't chdir to home directory ''


BusyBox v1.15.3 (2010-04-22 15:00:26 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.


Dvdplayer network menu,wireless connection config, still not working.

strange, where did it got WPA key? I have not set up yet. only ifconfig set IP, that is all, why does it work????

once I drop wire LAN, the wireless also not accessible.strange,IP did bind in 2 interfaces

eth0 Link encap:Ethernet HWaddr 00:CE:39:21:F5:8D
inet addr:192.168.61.8 Bcast:192.168.61.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1633 errors:0 dropped:0 overruns:0 frame:0
TX packets:307 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:112757 (110.1 KiB) TX bytes:25580 (24.9 KiB)
Interrupt:2 Base address:0x6000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wlan0 Link encap:Ethernet HWaddr 00:24:B2:33:2F:62
inet addr:192.168.61.200 Bcast:192.168.61.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-28 23:59 gouzhuang
@laowantong
>strange, where did it got WPA key? I have not set up yet. only ifconfig set IP, that is all, why does it work????
其实你的无线网卡没有正常工作。你的telnet是通过有线网连接过去的。因为你的无线网卡和有线网卡的IP以及你的Ubuntu机器在同一子网内,播放机的有线网卡一样会响应访问无线IP的请求。

ifconfig的输出可以看出wlan0没有RUNNING状态。iwlist hang也说明无线网卡不正常。

加载r8187l模块后立即运行dmesg看看有什么日志信息。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-29 22:26 laowantong
http://download.goconnect.net/temp/dmesg.txt

please check the dmesg output. thanks.
maybe ieee???.ko some module did not included?

for x86 compile, I did get 2ko files and installed   回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-30 09:29 gouzhuang
@laowantong
>for x86 compile, I did get 2ko files and installed
I checked the Makefile, for 2.6 kernel everything is compiled into one module. What's the name of the 2 ko you got?

Did you test if the card works on PC with this driver? I suspect the driver was only tested on x86, it may have problem with mips.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-04-30 13:09 gouzhuang
@laowantong
我意识到我对Makefile的一处修改可能有问题!原来的Makefile中强制gcc产生硬件浮点运算指令: -mhard-float。我知道播放机的CPU是没有浮点运算单元(FPU)的,所以我就简单地把它给注释掉了。现在想想可能正确的做法应该是把它替换成-msoft-float。我加上了-msoft-float重新编译了一下,请你再试一下。
http://www.cnitblog.com/Files/gouzhuang/r8187l.ko.zip
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-01 20:17 老顽童
好象还是一样啊...

Linux kernel driver for RTL8187L based WLAN cards
Copyright (c) 2004-2005, Realtek
rtl8187L: Initializing module
rtl8187L: Wireless extensions version 18
rtl8187L: Initializing proc filesystem
rtl8187L: Reported EEPROM chip is a 93c46 (1Kbit)
rtl8187L: Card MAC address is 00:24:b2:33:2f:62
rtl8187L: Card reports RF frontend Realtek 8225
rtl8187L: WW:**PLEASE** REPORT SUCCESS/INSUCCESS TO Realtek
rtl8187L: This seems a new V2 radio: rtl8225_zebra2
rtl8187L: PAPE from CONFIG2: 0
rtl8187L: EEPROM Customer ID: FF

rtl8187L: Driver probe completed

usbcore: registered new driver rtl8187L
rtl8187L: Now Radio On
rtl8187L: rtl8180_open process
rtl8187L: Card successfully reset
Break instruction in kernel code in arch/mips/kernel/traps.c::do_bp, line 694[#1]:
Cpu 0
$ 0 : 00000000 10007f00 00000000 00000001
$ 4 : 800e2d14 00004317 00000000 00000002
$ 8 : 00000020 802f1d70 00000000 00000000
$12 : 00000000 80590000 805a957c 00000000
$16 : 800e2d14 00004317 8058dc60 800e28a0
$20 : 80aec4a8 800e2220 c01966e4 00000000
$24 : 00000000 80382d80
$28 : 813d6000 813d7ed0 00000000 c01969a0
Hi : 00000000
Lo : 0000000a
epc : 801473fc mod_timer+0x20/0x84 Tainted: PF
ra : c01969a0 ieee80211_softmac_scan_wq+0x2bc/0x2c4 [r8187l]
Status: 10007f03 KERNEL EXL IE
Cause : 58808024
PrId : 00019378
Modules linked in: r8187l ufsd ohci_hcd ehci_hcd sata_mars libata
Process Ieee80211/0 (pid: 437, threadinfo=813d6000, task=813967f0)
Stack : 800e2220 00000000 8058dc60 800e28a0 800e2220 00000000 c01969a0 c01967c8
80aec4b0 80aec4a4 98f80707 80aec4a0 800e2a70 800e2a6c 10007f01 80aec4a0
80153f88 80153dd0 8013119c 00000000 800fb060 81a03bf8 00000000 813967f0
80132134 00100100 00200200 00000001 ffffffff ffffffff ffffffff ffffffff
00000000 00000000 00000000 00000001 00020000 00000000 00000000 00000000
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-02 09:41 老顽童
看来我是记错了, X86 install也是一个文件rtl8187.ko

root@melbak01:/root/rtl8187L_linux_26.1039.0104.2010.release# make install
kernel/drivers/net/wireless/rtl8187.ko: kernel/net/mac80211/mac80211.ko kernel/drivers/misc/eeprom_93cx6.ko kernel/net/wireless/cfg80211.ko
kernel/drivers/net/wireless/rtl8187.ko: kernel/net/mac80211/mac80211.ko kernel/drivers/misc/eeprom_93cx6.ko kernel/net/wireless/cfg80211.ko
make[1]: Entering directory `/root/rtl8187L_linux_26.1039.0104.2010.release/rtl8187'
make -C /lib/modules/2.6.28-11-server/build M=/root/rtl8187L_linux_26.1039.0104.2010.release/rtl8187 CC=gcc modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.28-11-server'
Building modules, stage 2.
MODPOST 1 modules
make[2]: Leaving directory `/usr/src/linux-headers-2.6.28-11-server'
install -p -m 644 r8187l.ko /lib/modules/2.6.28-11-server/kernel/drivers/net/wireless
depmod -a
make[1]: Leaving directory `/root/rtl8187L_linux_26.1039.0104.2010.release/rtl8187'
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-03 11:29 gouzhuang
@老顽童
>epc : 801473fc mod_timer+0x20/0x84 Tainted: PF
>ra : c01969a0 ieee80211_softmac_scan_wq+0x2bc/0x2c4 [r8187l]

按这个线索找下去,比较了一下8187L和8187的源码,在ieee80211_softmac.c第429行发现一个可疑之处:会造成为2.6.12内核编译时生成为2.4内核写的代码,很可能是realtek增加对2.6.20以上内核支持时引入的bug。我把它修改了重新编译,希望能解决问题,否则我也没有办法了。
http://www.cnitblog.com/Files/gouzhuang/r8187l.ko.20100503.zip

源码补丁:http://www.cnitblog.com/Files/gouzhuang/ieee80211_softmac.patch.zip


  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-03 22:42 老顽童
HOHO 你是天才! 成功了!

Linux kernel driver for RTL8187L based WLAN cards
Copyright (c) 2004-2005, Realtek
rtl8187L: Initializing module
rtl8187L: Wireless extensions version 18
rtl8187L: Initializing proc filesystem
rtl8187L: Reported EEPROM chip is a 93c46 (1Kbit)
rtl8187L: Card MAC address is 00:24:b2:33:2f:62
rtl8187L: Card reports RF frontend Realtek 8225
rtl8187L: WW:**PLEASE** REPORT SUCCESS/INSUCCESS TO Realtek
rtl8187L: This seems a new V2 radio: rtl8225_zebra2
rtl8187L: PAPE from CONFIG2: 0
rtl8187L: EEPROM Customer ID: FF

rtl8187L: Driver probe completed

usbcore: registered new driver rtl8187L
rtl8187L: Now Radio On
rtl8187L: rtl8180_open process
rtl8187L: Card successfully reset
Algorithmics/MIPS FPU Emulator v1.5

/ # iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:0F:B5:13:DC:8E
ESSID:"home"
Protocol:IEEE 802.11bg
Mode:Master
Channel:0.147484
Encryption key:on
Bit Rates:0.147484 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 6 9 11 12 18 22 24 36 48 54
Quality=78/100 Signal level=-41 dBm Noise level=-107 dBm
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Extra: Last beacon: 46ms ago


下面我要看看资料去配置无线网了! DvdPlayer TV界面无线配置还是不工作, 不管了.
太谢谢了!
不过我想, 如果固件升级了, 这module还能用么?能不能直接嵌入新固件里去用?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 08:54 gouzhuang
@老顽童
我们的努力总算没有白费,Cheers!
关于无线网的自动配置,可以参考我的文章 http://www.cnitblog.com/gouzhuang/archive/2010/03/26/hotplug.html

/sbin/hotplug程序在编译时就把支持的设备列表固化其中了,因此它不会自动加载r8187l。你要么重新编译/sbin/hotplug,要么干脆用r8187l替换r8187。r8187和r8187l的区别我没有去研究,但对你来说完全可以用r8187l替换r8187。方法如下:
1.删除/lib/modules/2.6.12.6-VENUS/kernel/drivers/net/wireless/realtek/rtl8187 目录下的所有内容
2.将r8187l.ko改名为r8187.ko并放入上面的目录
3.删除modules.dep中的原r8187.ko和它依赖的ieee80211_*.ko的内容,并相应修改r8187l.ko的文件名和路径。
4.删除modules.alias和modules.usbmap中有关r8187的内容,并将r8187l改名为r8187

官方固件升级修改内核的可能性不大,因此你可以用我编译的内核和模块去替换。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 10:27 老顽童
其实我是想尽量不touch固件. 把r8187l.ko放在/opt下面什么地方,用时再加载, 不想动modules.dep,modules.alias和modules.usbmap文件, 这样, 一旦官方升级, 直接刷新就可以了.希望你编译的module可以直接用在官方的固件环境里, 昨晚没时间试验.今天回去换上官方的kernel试试. 我估计能用, 因为根据你发现的BUG, 应该是compile target错误, 而不是功能性的错误. 看来其他的网卡, 也是可以编译的, 从X86 port to MISPEL源程序上修改多吗? 能否给我一份完整的patch(C code and Makefile, etc), 有空我也学学, 呵呵.

r8187.ko和r8187l.ko可以共存,就不管他了, 大不了我用遥控器上红健脚本来rmmod 8187l.ko, insmod r8187l.ko. 就不用modprobe了.

同样也不想动/sbin/hotplug

我看法是, 把官方的, 和自己增强功能的软件, 截然分开, 可以添加,尽量不要替换. 基本的play video功能, 由官方来保证, 其他附加的网络功能,另外随便添加就是了.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 11:17 gouzhuang
@老顽童
要用原厂内核必需首先解决模块编译的兼容性问题,否则还会遇到insmod报“Success (8)”的错误。也就是说:你必需知道原厂编译内核所用的.config配置文件。

其实驱动程序的源码不需做额外的移植,只要进行交叉编译就可以了,我做的只是根据我的编译环境修改了Makefile以及修正一个小bug。 这里是完整的补丁:http://www.cnitblog.com/Files/gouzhuang/rtl8187L_linux_26.1039.0104.2010.release.patch.zip  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 12:29 老顽童
好,谢谢, 回去试试官版,再来报告.

上次说的, 你编译的kernel 在play avi文件时有点问题,
举例说这个文件 http://www.verycd.com/topics/418689/
就出现 "启动代码未知"错误

需要更多的信息吗?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 12:38 老顽童
哦, 还有就是内接IDE盘的问题, 你觉得有希望解决吗?

为什么USB的EXT3文件系统总是被mount 成readonly, NTFS系统却会mount 成RW?
是hotplug问题? 还是什么地方设置我没找到?

我忘了在M890还是PC linux上make FAT32, 居然XP下不认了,奇怪.好象说这个partition没active. 要重起. 但是重起了还是同样错误, 奇怪.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 14:02 gouzhuang
@老顽童
>上次说的, 你编译的kernel 在play avi文件时有点问题
你能肯定跟内核有关吗?用官方的内核能播放吗?

>哦, 还有就是内接IDE盘的问题, 你觉得有希望解决吗?
希望是有的,但是需要深入去看源代码,要花多少时间不好确定,能否解决也没有把握。

>为什么USB的EXT3文件系统总是被mount 成readonly, NTFS系统却会mount 成RW?
从hotplug的源码来看都是mount -o ro的,也许M890厂商修改了源码。要想知道很简单,看看下面命令的输出
strings hotplug|grep mount
如果播放机上没有strings命令就把/sbin/hotplug拷到PC Linux上执行  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 14:18 老顽童
用官方的内核能播放, 前天晚上特意更新了官方固件测试过了, 用厂家旧版的固件也应该可以播放

是否跟内核有关,不能肯定,除了用你的kernel外, 还用了新的busybox. 其他VIDEO部分固件肯定没动过的.

"启动代码未知" 这是什么意思呢? 解码器不对?不象啊
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 16:21 gouzhuang
@老顽童
仔细看了一下你提供的官方内核符号表,发现有些符号在华硕的内核源码里找不到!比如:
AES_H_CTX_Init
AES_H_DigestCleanup
AES_H_DigestFinal
AES_H_DigestInit
AES_H_DigestPeek
AES_H_DigestUpdate
AES_H_InitHash.0
aes_h_md
MARS_AES_H_DigestFinal
MARS_AES_H_DigestUpdate
Mars_aes_h_md
MARS_SHA1_DigestFinal
MARS_SHA1_DigestUpdate
Mars_sha1_md
MCP_aes_h
MCP_AES_H_PADDING
MCP_mars_aes_h
MCP_mars_sha1
MCP_SHA1_DataHash
MCP_SHA1_DataHashTest
MCP_SHA1_Hashing
MCP_SHA1_HASH_INIT
MCP_SHA1_IV_UPDATE
MCP_SHA1_PADDING
SHA1_CTX_Init
SHA1_DigestCleanup
SHA1_DigestFinal
SHA1_DigestInit
SHA1_DigestPeek
SHA1_DigestUpdate
sha1_md

结论:我们手里的源码不是最新的:(  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 16:54 老顽童
好象那些是SSL的吧, 跟VIDEO有关系吗?
跟MARS有点关系, IDE的?


如果找2.6.12.6源码的添上去呢?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-04 21:50 laowantong
M890 update to lastest firmware, not your kernel,
simplely cp r8187l.ko to /usr/local/etc
then run
/usr/local/etc # insmod /usr/local/etc/r8187l.ko
insmod: cannot insert `/usr/local/etc/r8187l.ko': Success (2): Success


dmesg
r8187l: disagrees about version of symbol wake_up_process
r8187l: Unknown symbol wake_up_process
r8187l: disagrees about version of symbol wake_up_process
r8187l: Unknown symbol wake_up_process

seem missing some?
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-05 10:20 gouzhuang
@laowantong
>r8187l: disagrees about version of symbol wake_up_process
这说明官方内核源码的确与我们的不同,某些内核接口发生了变化造成其符号版本不同(符号的版本是其外部接口特征通过某种checksum算法计算得到的)。
我关闭了符号版本检查重新编译了模块,希望它能加载(以前没有试过,不知到能否行得通)。当然这样做是有风险的,很可能官方内核的变化确实已经造成不兼容,强行加载会使内核不稳定!不过试试也无妨。
http://www.cnitblog.com/Files/gouzhuang/r8187l.ko.no_modvers.zip  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-05 11:21 老顽童
因为你用的是华硕公布的源码, 我这里估计是MELE的,修改KERNEL不奇怪.

能不能把"wake_up_process"去掉? 我不知道它是做什么的.

anyway, 我去试试新module.

Success (2): 不是说找不到文件么? 会不会我放的地方/usr/local/etc不对? insmod 有没有要求其他的config文件modules.dep, .alias, etc呢?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-05 13:03 gouzhuang
@老顽童
>因为你用的是华硕公布的源码, 我这里估计是MELE的,修改KERNEL不奇怪.
其实源码都来自于realtek,播放机厂家修改内核到可能性不大,很可能是它们拿到了新版的源码。

>能不能把"wake_up_process"去掉? 我不知道它是做什么的.
这个是内核进行进程调度的函数之一,属于核心功能。

>Success (2): 不是说找不到文件么? 会不会我放的地方/usr/local/etc不对?
这个错误代码只是很粗略的分类,在这里到意思应该是:“找不到匹配的符号”。既然dmesg已经指出了wake_up_process版本不匹配,说明模块找到了但在并试图加载时因为这个失败了。

>insmod 有没有要求其他的config文件modules.dep, .alias, etc呢?
没有。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-05 21:20 老顽童
在固件M890_V8.2.5R2071上成功了!!!

/usr/local/etc # insmod /usr/local/etc/r8187l.ko

/usr/local/etc # dmesg

Linux kernel driver for RTL8187L based WLAN cards
Copyright (c) 2004-2005, Realtek
rtl8187L: Initializing module
rtl8187L: Wireless extensions version 18
rtl8187L: Initializing proc filesystem
rtl8187L: Reported EEPROM chip is a 93c46 (1Kbit)
rtl8187L: Card MAC address is 00:24:b2:33:2f:62
rtl8187L: Card reports RF frontend Realtek 8225
rtl8187L: WW:**PLEASE** REPORT SUCCESS/INSUCCESS TO Realtek
rtl8187L: This seems a new V2 radio: rtl8225_zebra2
rtl8187L: PAPE from CONFIG2: 0
rtl8187L: EEPROM Customer ID: FF

rtl8187L: Driver probe completed

usbcore: registered new driver rtl8187L
rtl8187L: Now Radio On
rtl8187L: rtl8180_open process
rtl8187L: Card successfully reset


wlan0 Link encap:Ethernet HWaddr 00:24:B2:33:2F:62
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:48 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


/usr/local/etc # iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:0F:B5:13:DC:8E
ESSID:"home"
Protocol:IEEE 802.11bg
Mode:Master
Channel:0.147484
Encryption key:on
Bit Rates:0.147484 Mb/s
Extra: Rates (Mb/s): 1 2 5.5 6 9 11 12 18 22 24 36 48 54
Quality=96/100 Signal level=-28 dBm Noise level=-118 dBm
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
Extra: Last beacon: 21ms ago

  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-05 21:29 老顽童
下面是配置WAP:
我找不到wpa_passphrase这个命令, 只好跑UBUNTU上搞好wap_supplicant.conf 也放在/usr/local/etc下,

/usr/local/etc # cat wpa_supplicant.conf

ctrl_interface=/var/lock/wpa_supplicant
network={
ssid="home"
scan_ssid=1
proto=WPA RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk=XXXXXXXXXXXXXXXXXXX
}

/usr/local/etc # wpa_supplicant -B -Dwext -iwlan0 -c/usr/local/etc/wpa_supplicant.conf

wlan0 Link encap:Ethernet HWaddr 00:24:B2:33:2F:62
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:84 errors:0 dropped:4335 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8878 (8.6 KiB) TX bytes:437 (437.0 B)

dmesg:

Linking with home
Linking with home
Associated successfully
Using G rates
alg name:TKIP
alg name:TKIP


/usr/local/etc # /sbin/udhcpc -i wlan0 -t 15 -b -q -s /etc/udhcpc.script
info, udhcpc (v0.9.9-pre) started
ifconfig wlan0 169.254.126.63
route add -net 0.0.0.0 netmask 0.0.0.0 wlan0
debug, Sending discover...
debug, Sending select for 192.168.61.9...
info, Lease of 192.168.61.9 obtained, lease time 259200
deleting routers
route: SIOC[ADD|DEL]RT: No such process


wlan0 Link encap:Ethernet HWaddr 00:24:B2:33:2F:62
inet addr:192.168.61.9 Bcast:192.168.61.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1401 errors:0 dropped:4378 overruns:0 frame:0
TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103991 (101.5 KiB) TX bytes:3133 (3.0 KiB)

成功获得IP!
拔掉网线, telnet 192.168.61.9

/ # ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:CE:39:21:F5:8D
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:15660 errors:0 dropped:0 overruns:0 frame:0
TX packets:5612 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1089217 (1.0 MiB) TX bytes:1236075 (1.1 MiB)
Interrupt:2 Base address:0x6000

wlan0 Link encap:Ethernet HWaddr 00:24:B2:33:2F:62
inet addr:192.168.61.9 Bcast:192.168.61.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2929 errors:0 dropped:4660 overruns:0 frame:0
TX packets:273 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:213466 (208.4 KiB) TX bytes:28352 (27.6 KiB)

这次是真的从无线网进去了!!!
但是, DvdPlay还是报告找不到SSID, 其设置部分是蛮搞笑的, 关闭,但是有IP:-)
无线设置: 关 192.168.61.9  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-05 21:46 老顽童
M890_V8.2.5R992.zip/img2_1/sbin$ strings hotplug|grep mount
/mnt/usbmounts
/tmp/satamounts
/var/lock/hotplug/mount_tmp
mount -t ntfs -o ro -o nls=utf8 -o umask=0 %s %s/.%s
mount -t vfat -o ro,shortname=winnt -o utf8 -o umask=0 %s %s/.%s
mount -t ext3 -o ro %s %s/.%s
mount -t ptpfs --move %s/.%s %s
mount --move %s/.%s %s
umount %s
mount -t ptpfs %s %s/.%s
mount -t ufsd -o ro -o nls=utf8 -o umask=0 %s %s/.%s
umount -f -l %s
Hotplug: Umount %s successfully.
/tmp/usbmounts/


真的USB DISK都是 ro mount的. 那怎么FAT32可以RW呢? EXT3就只能RO?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-06 09:11 gouzhuang
@老顽童
>在固件M890_V8.2.5R2071上成功了!!!
这是个好消息!我们终于可以为官方内核编译模块了:)。看来关闭符号版本检查是关键。

另外,你说的那个avi文件我下载了,在海信的机子上用我自己编的内核可以播放,没有任何问题。我猜测M890的播放程序依赖内核中的某些功能,而这些功能在华硕的内核源码里没有。

>真的USB DISK都是 ro mount的. 那怎么FAT32可以RW呢? EXT3就只能RO?
那一定是别的程序或脚本将它remount,rw。难道是DvdPlayer?可以试一下stopall停掉DvdPlayer然后再插入fat32 usb disk。
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-06 10:36 老顽童
是啊, 看来其他无线网卡的模块都可以这么干了.

昨晚试验完, 关机, 搬到卧室看<本能2>中途突然听一声爆裂响, 出现粉红色屏幕, 然后黑屏.
圆开关的灯不亮了, 按键不灵, 听到风扇还在转, 拔掉整流器电源,才能关机.
插上整流器电源, 圆开关的红灯亮, 网卡灯闪亮两次后暗灭.
无论长按还是短按圆开关, 红灯即灭, 网卡灯一直闪亮, 播放器HDMI没输出, 风扇在转.

无线网卡没插上, 模块也没在起动脚本里启动, 肯定不是r8187l的问题,

一声爆裂响, 难道是什么东西烧毁了? 我的天, 才玩个把月啊, 就玩完了?  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-06 10:44 gouzhuang
@老顽童
深表同情!还在保修期吧?赶紧送修吧。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-09 21:53 mp801h user
@老顽童
我的mp801h,090的官方固件,用了r8187l.ko.20100503.zip的驱动,网卡工作正常,可以获取essid,连接AP,手工配置IP后能ping通,可是dvdplayer里面的网络一进去就不通了,dmesg正常,就是ping不通任何地方,包括AP的地址也不通,这个dvdplayer搞死了。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-10 10:09 老顽童
看来要搞搞DVDPLAYER的东东, 最好还是不动它那部分, 用外接式, 遥控键手工加载就是了.
可怜我的录像王动不了了. 玩不了咯...

如果没硬件, 用那个什么模拟器, 能够试验IDE的东东么??  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-05-10 16:16 gouzhuang
@老顽童
>如果没硬件, 用那个什么模拟器, 能够试验IDE的东东么??
恐怕很难用模拟器来试验IDE驱动。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-07-13 09:12 老顽童
我的M890还没拿回来, 可能要八月自己回上海时去取了, 呵呵,
久没来了, 上来问好!  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-06 17:01 ygao
@gouzhuang
看来关闭符号版本检查是关键。
http://cid-33323d948b0eaf12.office.live.com/self.aspx/.Public/rt1073-devel/drivers/rt73.zip

这个是你今年2月份的作品,我试了一下,是在没有关闭符号版本检查的情况下编译的,能否请你为我再编译一下,谢谢.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-06 17:02 ygao
@gouzhuang 没有关闭符号版本检查会出现同样的问题.
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-07 01:00 gouzhuang
@ygao
试试这个:http://cid-33323d948b0eaf12.office.live.com/self.aspx/.Public/rt1073-devel/drivers/rt73-module-20101007.tar.bz2

不知道你的内核是否打开了debug,所有编译了两个版本,一个打开了debug,一个关闭debug。其中应该有一个适合你的内核。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-08 21:09 ygao
@gouzhuang
~ # cd /usr/local/etc/diy/
/usr/local/etc/diy # insmod ./rt73.ko
/usr/local/etc/diy # dmesg
###################################################################
[cfyeh-test] usb_set_configuration(1454)
Don't support this usb device or don't insert correct module yet!!!
bus_id 1-1.1:1.0 (config #1, interface 0)
###################################################################
------shrink priority: 10
shrink_page_cache: do shrink...
in shrink_page_cache free: 128, left: 0
------shrink priority: 10
shrink_page_cache: do shrink...
in shrink_page_cache free: 128, left: 0
rt73: init
usbcore: registered new driver rt73
/usr/local/etc/diy # iwlist wlan0 scan
wlan0 Interface doesn't support scanning.

/usr/local/etc/diy #

不能使用.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-08 21:13 ygao
/usr/local/etc/diy # lsmod
Module Size Used by Tainted: PF
rt73 265200 0
ufsd_lbd 446320 1
ohci_hcd 25232 0
ehci_hcd 46624 0
mousedev 13984 0
evdev 10784 0
sata_mars 26944 2
libata 60976 1 sata_mars  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-08 21:18 ygao
以上是without debug,
带有debug的,
/usr/local/etc/diy # insmod rt73.ko
insmod: cannot insert `rt73.ko': Success (2): Success
/usr/local/etc/diy #
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-08 21:24 ygao
/usr/local/etc/diy # iwconfig
eth0 no wireless extensions.

lo no wireless extensions.
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-08 23:04 gouzhuang
@ygao
似乎驱动程序没有识别你的网卡。请插入网卡后执行下面的命令,把有关网卡的输出结果贴出来:

# mount -t usbfs usbfs /proc/bus/usb
# cat /proc/bus/usb/devices  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-09 09:23 ygao
我的无线网卡:TP-Link - WN322G+

Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 4 Spd=480 MxCh= 0
Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 1
Vendor=0cf3 ProdID=1006 Rev= 1.08
Product=USB2.0 WLAN
SerialNumber=12345
#Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
If#= 0 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=125us
Ad=04(O) Atr=03(Int.) MxPS= 64 Ivl=125us
Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-09 09:27 ygao
@gouzhuang
我所找到的资料:

Apparently that wifi device has different versions available, each with different chipsets; Zydas and Atheros at least.
Unfortunately device 0cf3:1006 contains the very new Atheros AR9271 chipset.
A new driver has been developed for it: ath9k_htc
http://wireless.kernel.org/en/users/Drivers/ath9k_htc
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-09 09:35 ygao
@gouzhuang
TL-WN322G+ 有两个版本,机身上有标志

Ver:1.0 芯片 ZD1211rw

Ver:2.0 芯片 Atheros 9271

我的是:Ver:1.0 芯片 ZD1211rw  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-09 13:43 gouzhuang
@ygao
根据你网卡信息:Vendor=0cf3 ProdID=1006,应该是Atheros 9271

http://wireless.kernel.org/en/users/Drivers/ath9k_htc/devices  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-09 13:56 gouzhuang
@ygao
坏消息是:ath9k_htc要求内核至少是2.6.21  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-10 01:02 ygao
@gouzhuang
TP-LINK TL-WN322G+ Ver:1.0 ---Chipset: ZD1211rw
我的应该是这个.
这个有三个版本,每个还不一样.  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-12 11:10 gouzhuang
@ygao
根据你提供的USB ID 0cf3:1006,确实是Atheros 9271
请参考:http://www.linux-usb.org/usb.ids  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-12 19:21 ygao
@gouzhuang
我不知道这之间的关系,我可以百分之百肯定,因在我的随机光盘中驱动程序:

[ZyDAS]
;DisplayName Section Hardware ID
;----------- ------- --------------------------
%ZD1211B_50U_DESC% = ZD1211B_50U.ndi, USB\VID_0ACE&PID_1215
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-13 10:33 ygao
@gouzhuang
我搞错了,我的的确是Atheros 9271

  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-13 10:50 gouzhuang
@ygao
USB\VID_0ACE&PID_1215
我猜这是指Vendor ID=0ACE, Product ID=1215, 和你的网卡的ID不一样。光盘上是否还有其它驱动程序?Linux下驱动程序只能支持ID匹配的设备,从zd1211b源码看,0cf3:1006不在支持范围。
如果你确实想试一下,我这里有编译好的zd1211b驱动:
http://cid-33323d948b0eaf12.office.live.com/browse.aspx/.Public/linux-mipsel/drivers

两个文件,一个是打开内核debug,一个关闭了debug。取决于你的内核编译参数,其中应该有一个是兼容的。  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-10-13 18:36 ygao
@gouzhuang
谢谢了,网卡自标1.0,但驱动是2.0的,这个卡太混乱了.
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2010-12-11 12:27 laopi
请教一下,我安装了hdpfans上面通用固件1.6,可是每次开机都会提示什么‘检测到USB’,非要按一下‘取消’才行,这段程序在那里?能不能去掉?
  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2011-03-03 16:56 jwd
能不能帮我编译一个Netgear WG111V3的驱动,是reltek8187B的,看代码驱动好像是支持8187B的,但是VID/PID没有被支持 (VID=0846,PID=4260)  回复  更多评论
  

# re: 编译内核(Compile the Kernel) 2011-03-07 14:38 gouzhuang
@jwd
最近比较忙,有空我试一下。  回复  更多评论
  

评论共2页: 1 2 
只有注册用户登录后才能发表评论。