[原]如何编译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就可以了
    • 工具链
      • 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
    • 编译:
      • 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模块
      • make
      • 成功的话。最后会生成 drivers/input/misc/uinput.ko
    • 安装:
      • 在网络连接中检查盒子的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可以强制不做版本检查。但我还没试过。
    • 修改版本号:
      • 版本号在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
posted @ 2015-01-31 03:46  alxe_yu  阅读(803)  评论(0编辑  收藏  举报