设为首页 收藏本站
查看: 1054|回复: 0

[经验分享] build android for VMware

[复制链接]

尚未签到

发表于 2016-1-5 09:34:21 | 显示全部楼层 |阅读模式
  在android-porting讨论组看到了有人成功的在X86平台下运行android后,我也开始按照讨论组内指导的方法尝试创建能够在vmWare上运行的andorid,最后成功的生成了能够运行的未作修改的android。在实现的过程发现在http://code.google.com/p/patch-hosting-for-android-x86-support/链接处有build android for x86的补丁和方法。比较详细的教程在上面所示链接的wiki下的BuildAndroidForX86Platforms处可以找到。下面我将称这个教程为BuildAndroidForX86Platforms教程。
  虽然严格按照这个教程可以成功的build,我在实现过程也出现了些许问题,所以有必要总结下。
  1 首先参考BuildAndroidForX86Platforms教程的
  2 重编译Linux内核
  1) 运行make menuconfig, 配置内核参数。要选择添加下面的驱动:
  网卡驱动:
  device drivers
network device support ->
Ethernet (10 or 100Mbit) --->
  •   EISA, VLB, PCI and on board controllers
    <*>   AMD PCnet32 PCI support

      Vesa FB驱动:
      device drivers
      Graphics support --->
    <*> Support for frame buffer devices --->
  •   VESA VGA graphics support
    控制台驱动:

      Console display driver support --->
    <*> Framebuffer Console support
  • Select compiled-in fonts
  •   VGA 8x8 font
  •   VGA 8x16 font
    如果是2.6.27内核,需要将pmem取消

  • Misc devices --->
    [ ] Android pmem allocator (NEW)

    2) 编译内核
    make bzImage
    生成linux内核二进制文件。

    3 编译installer.img
    1)将步骤2生成的bzImage改名为kernel拷贝到vendor/asus/eee_701目录下。
    2)确认已经打了教程提到的补丁尤其是这5个
      0001-1.-added-scripts-to-build-install-image.patch
      0001-1.-fixed-crash-caused-by-wrong-preload-class.patch
      alarm.patch
      e2fsprogs.patch
      eventhub.patch
      3)
      在BoardConfig.mk文件为BOARD_KERNEL_CMDLINE变量赋值的那一行行尾添加vga=788.为BOARD_KERNEL_CMDLINE变量的内容是kernel boot时的命令行参数。vesafb根据boot命令行的vga=788来设置frambuffer的模式,十进制值788对应十六进制的314,表示800*600*16的模式,即屏幕分辨率为800*600,颜色为16位表示。根据我的经验,在vmWare上设置屏幕分辩率800*600640*400等都是可以的,关键不要弄错颜色位。要查看$(androidPath)/framwork/base/libs/ui/EGLDisplaySurface.cpp的513行的
      mFb.format赋值的参数是GGL_PIXEL_FORMAT_RGB_565还是GGL_PIXEL_FORMAT_BGRA_8888,前者表示16位色,后者表示为32位色。必须根据这个值来选择frambuffer的模式,否则会出现花屏的现象。vesa frambuffer支持的模式在下图显示:
      http://p.blog.csdn.net/images/p_blog_csdn_net/jkdirac/EntryImages/20090712/vesa.PNG
      4)
    运行回到android源码的最上层目录。执行make TARGET_PRODUCT=eee_701 TARGET_ARCH=x86 DISABLE_DEXPREOPT=true -j8 installer_img
    然后就是长时间的make过程,最后将会在$(androidPath)/out/target/product/eee_701目录下生成一个installer.img文件,这就是我们需要的android的安装文件。

    4在vmWare安装android
    创建一个installer.vmdk, 内容如下
    # Disk DescriptorFile
    version=1
    CID=b01deebc
    parentCID=ffffffff
    createType="monolithicFlat"
    # Extent description
    RW 900376 FLAT "installer.img" 0
    # The Disk Data Base
    #DDB
    ddb.toolsVersion = "0"
    ddb.adapterType = "ide"
    ddb.geometry.sectors = "63"
    ddb.geometry.heads = "255"
    ddb.geometry.cylinders = "49"
    ddb.virtualHWVersion = "4"
    需要把RW 900376 FLAT "installer.img" 0这行的900376 改成你的 installer.img的大小/512 的值
    然后将installer.img和installer.vmdk放在同一路径。使用vmWare创建一个linux-2.6的带IDE硬盘的机器,将installer.vmdk添加为一个硬盘。启动vmware的机器,将installer.vmdk设置为启动盘。然后就开始了android的安装过程。安装完成后,将机器boot设置为不是installer.vmdk,因为此时android已经安装到了机器的主硬盘上,从另外一个硬盘boot,可以开始运行android系统了。

    实现过程的问题及可能解决的方法:
    1) android启动后没有网络连接。 可能是由于在编译Linux kernel没有添加network支持,参考步骤2 重编译Linux内核的内容
    2) android启动后,在出现命令提示符后,进入黑屏状态,按alt-f1可以重新看到命令提示符。可能是由于Linuxkernel没有添加vesa frambuffer,参考步骤2 重编译Linux内核的内容
    3) android启动后,进入android图形界面出现花屏。可能的原因是frambuffer的颜色设置与android ui的颜色格式不一致。参考步骤“编译installer.img”第3)部分。

  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-160469-1-1.html 上篇帖子: RHEL 5.4 安装 VMware Tools 下篇帖子: VMware安装Ubuntu上网
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表