如何编译AML8726-MX Linux 3.0.8 Source Code(乐视盒子)

原文地址: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  --->
      •   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. 根据 (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
  • 部署
    • 拷贝文件从编译机到工作机
    • 从工作机到android机器
      • adb push uinput.ko /mnt/sdcard/
    • 在android机器上装驱动
      • su
      • insmod /mnt/sdcard/uinput.ko
    • 从工作机安装vnc server到安卓机器
      • adb install com.schumi.vncs-1.apk 



你可能感兴趣的:(Android)