MP800H官方固件中使用的uClibc版本为0.9.28,也是相当老的版本(2005年发布的)。但是由于现有的工具链都是基于这个版本的,到目前为止,升级到新版本的尝试还不成功的。(这不是目前最紧迫的任务,我会晚点再研究)
既然不升级,为什么还要重新编译呢?因为官方编译的版本没有打开完整RPC支持(配置文件中:UCLIBC_HAS_FULL_RPC=y),没有它NFS服务器不能工作。
还是用华硕公布的源码。华硕在uClibc-0.9.28官方源码基础上做了一些修改(我把它整理成针对官方版的补丁:uClibc-0.9.28-asus.patch.zip)
工具链就用华硕源码包里提供的sdelinux-5.03.06-1
配置uClibc:进入uClibc-0.9.28源码目录,执行make menuconfig进行交互是配置。(我用的配置:config-uclibc-0.9.28.zip,可直接将此配置文件解压后改名为.config放入uClibc源码目录,然后再执行make menuconfig在此基础上进行修改)。
配置时有一点需要注意:有一项配置叫做"Linux kernel header location",需要填入Linux内核头文件的路径,这个必需与播放机上运行的内核版本一致。这里我还是用华硕的Linux内核源码。源码包里有个文件叫linux-2.6.12.274877.tgz,将它解开 tar zxf linux-2.6.12.274877.tgz,得到linux-2.6.12目录,将"Linux kernel header location"指向这个目录。
配置完成后执行make进行编译,然后安装到指定目录以便于打包,这里以/home/user/dist/uclibc为例
1 make PREFIX=/home/user/dist/uclibc install
到这里,我们已经有了自己编译的uClibc和BusyBox,下一步就是要测试一下它们是否能正常工作。我将在下一篇博文中介绍。