[原]如何编译AML8726-MX Linux 3.0.8 Source Code(乐视盒子)
http://m.blog.csdn.net/blog/qffj/8576738
原文地址:http://blog.csdn.net/qffj/article/details/8576738 转载请注明出处。
参考资料:
http://openlinux.amlogic.com/wiki/index.php/Arm/Android
http://www.cnx-software.com/2012/08/18/amlogic-releases-aml8726-mx-linux-3-0-8-source-code/
http://source.android.com/source/building-kernels.html
其实所有的过程在参考资料里已经有了。但是还是走了一些弯路。这里整理一下。
目的:我买了个乐视盒子,为了让它能跑droid vncserver。需要一个uinput.ko的驱动模块。
环境准备:32位ubuntu (mac的xcode有各种版本问题,工具链是32位的。)我用的是ubuntu 32bit 10.04
- 安装openssh-server(我是远程安装。在本机安装的的可以略过)
- 服务器安装:sudo apt-get install openssh-server
- 客户机登录: ssh 10.64.x.x -l youraccountname
- 环境准备
- sudo apt-get install git-core gnupg flex bison gperf libsdl-dev
libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev
zlib1g-dev sun-java6-jdk
- sun-java6-jdk的安装:(只编内核可能不需要java,可以跳过。下面配了2个源,我忘了具体是哪个起作用的了。)
- add-apt-repository "deb http://archive.canonical.com/ lucid partner"
- sudo add-apt-repository ppa:ferramroberto/java
- sudo apt-get update
- sudo apt-get install sun-java6-jdk
- sudo update-alternatives --config java
- 然后从菜单里选择java-6-sun就可以了
- add-apt-repository "deb http://archive.canonical.com/ lucid partner"
- sudo apt-get install git-core gnupg flex bison gperf libsdl-dev
libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev
zlib1g-dev sun-java6-jdk
- 工具链
- wget http://openlinux.amlogic.com/download/linux/ARM/gnutools/arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
- tar xvlf arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
- cd arm-2010q1/bin
- export PATH=$(pwd):$PATH
- 内核源代码
- 从amlogic下载:(或者git)
- wget http://openlinux.amlogic.com/download/linux/GPL_code_release/2012-08-03/kernel-common-2012-08-03-git-a63244fb9c.tar.gz
- tar xzvf kernel-common-2012-08-03-git-a63244fb9c.tar.gz
- 从github上下载:(我是这么弄的)
- git clone git://github.com/fards/AMlogic_Meson6_030812release.git
- 从amlogic下载:(或者git)
- 编译:
- export ARCH=arm
- export SUBARCH=arm
- export CROSS_COMPILE=arm-none-linux-gnueabi-
- cp arch/arm/configs/meson6smp_defconfig ./
- cp meson6smp_defconfig .config
- make menuconfig
- Device Drivers --->
- Input device support --->
- [*] Miscellaneous devices --->
- <M> User level driver support
- 退出保存后检查vi .config 可以找到UINPUT=M说明会生成uinput.ko模块
- Device Drivers --->
- make
- 成功的话。最后会生成 drivers/input/misc/uinput.ko
- export ARCH=arm
- 安装:
- 在网络连接中检查盒子的ip (我是用wifi连接的)
- adb connect 盒子ip
- adb push uinput.ko /mnt/sdcard/
- adb shell
- su
- insmod /mnt/sdcard/uinput.ko
- 直接insmod会有版本检查不通过
- insmod: init_module 'uinput.ko' failed (Exec format error)
- dmesg
- <3>[ 1013.333016@0] uinput: version magic '3.0.8 SMP preempt
mod_unload ARMv7 ' should be '3.0.50 SMP preempt mod_unload ARMv7 '
- 因为盒子的内核版本是3.0.50. 而源码版本是3.0.8. 根据<Linux Device Drivers> (http://vdisk.weibo.com/s/pFppw)中的介绍。用-f可以强制不做版本检查。但我还没试过。
- <3>[ 1013.333016@0] uinput: version magic '3.0.8 SMP preempt
mod_unload ARMv7 ' should be '3.0.50 SMP preempt mod_unload ARMv7 '
- insmod: init_module 'uinput.ko' failed (Exec format error)
- 直接insmod会有版本检查不通过
- 修改版本号:
- 版本号在Makefile前3行
- make menuconfig
- General setup -->[*] Automatically append version information to...选中,否则会有+号
- 如果用的git,要把.git目录删掉(rm -rf .git)否则git中的版本信息会被加到vermagic中
- make
- 部署
- 拷贝文件从编译机到工作机
- scp jack_fang@10.64.66.5:/home/jack_fang/uinput.ko ~
- 从工作机到android机器
- adb push uinput.ko /mnt/sdcard/
- 在android机器上装驱动
- su
- insmod /mnt/sdcard/uinput.ko
- 从工作机安装vnc server到安卓机器
- adb install com.schumi.vncs-1.apk
- 拷贝文件从编译机到工作机