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

[经验分享] Android移植到VirtualBox及详细流程

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-10 12:34:31 | 显示全部楼层 |阅读模式
  请想要深入学习和研究Android的朋友加入Opendroid 81410571,我们目前已成功移植android到s3c2440以及virtualbox等。正在筹划进一步的深入学习计划!
  VirtualBox是Sun推出的一款跨平台开源虚拟机软件,Android目前已经支持x86原生编译,我们的目的是让Android可以在VirtualBox上运行。鉴于x86虚拟机平台调试的方便性,不失为一学习研究的好平台。
本文写作时,android已经被国内外人士移植到x86之上。Eeepc 701和vmware是最早跑起来的一些x86平台。同时VirtualBox也已经有人移植成功。
本文亦参考了这些经验。特别是如下两文:
http://groups.google.com/group/android-porting/msg/6cf95445f9709987
http://groups.google.com/group/android-porting/msg/2dedc5fe7ad58ed3

详细的移植步骤,我们按3步来:
1.Android根文件系统
这个与eeepc701上的完全一样, 需要下载源码并自行编译.
  请参考http://blog.csdn.net/opendroid/archive/2009/02/24/3933897.aspx
如果提示out/.../data目录不存在, 创建之后重编, 直到生成installer.img.

2.支持VirtualBox的linux kernel
我们这里主要添加的是网卡和fb支持.
首先拷贝./vendor/asus/eee_701/kernel.config到kernel/.config
然后make menuconfig修改如下选项:
network device support ->
Ethernet (10 or 100Mbit) --->
  •   EISA, VLB, PCI and on board controllers
    <*>   AMD PCnet32 PCI support

    Graphics support --->
    <*> Support for frame buffer devices --->
  •   VESA VGA graphics support <- Unfortunately, Vesa VGA

    Console display driver support --->
    <*> Framebuffer Console support
  • Select compiled-in fonts
  •   VGA 8x8 font
  •   VGA 8x16 font
    同时,还需要去掉pmem支持,只有需要大块连续内存的设备上需要它
    * Disable pmem allocator if your kernel is 2.6.27 base.
  • Misc devices --->
    [ ]  Android pmem allocator (NEW)
    最后make bzImage生成到arch/x86/boot/bzImage

    3.镜像生成
    这是一个比较复杂的过程
    1)创建分区配置文件, 可以参考vendor/asus/eee_701/disk_layout.conf
    $vim d.conf
    内容为:
    device {
    scheme mbr

    # bytes in a disk sector (== 1 LBA), must be a power of 2!
    sector_size 512

    # What LBA should the partitions start at?
    start_lba 2048

    # Autodetect disk size if == 0
    num_lba 0

    partitions {
    sysloader {
    active y
    type linux
    }

    recovery {
    active y
    type linux
    }

    boot {
    active y
    type linux
    }

    cache {
    type linux
    }

    system {
    type linux
    }

    third_party {
    type linux
    }

    data {
    type linux
    }
    }
    }

    2)拷贝host机器的mbr文件
    $cp grub/grub.bin installed.img

    3)创建 boot.img:
    里面需要有三个文件:
    ramdisk cmdline kernel
    你需要export out/host/linux-x86/bin/到PATH以便方便的访问如下用到的一些工具。

    接下来一步步创建出来:
    $mkdir bootimg
    $cp -raf root rootimg
    rootimg里面的init.rc,需要改掉所有的mount ext3为ext2,因为genext2fs只能生成ext2镜像.
    $mkbootfs rootimg | gzip -9 > bootimg/ramdisk

    $echo "console=tty0 console=ttyS1,115200n8 console=tty0
    androidboot.hardware=eee_701 vga=788" > bootimg/cmdline

    $cp android/kernel/arch/x86/boot/bzImage bootimg/kernel

    生成boot.img:
    $genext2fs -b 8192 -m 0 -d bootimg boot.img

    4)创建dummy img
    $mkdir dummy
    $genext2fs -b 8192 -m 0 -N 8 -d dummy dummy.img

    5)创建data.img
    $genext2fs -b 81920 -d data -N 512 -m 0 data.img

    6)创建磁盘镜像文件installed.img
    $editdisklbl -l d.conf -i installed.img boot=boot.img cache=dummy.img system=system.img third_party=dummy.img data=data.img
    至此,installed.img镜像生成后,你可以直接在kvm/qemu,也可以经过一些处理,在vmware和virtualbox上使用。

    7)在virtualbox上,我们需要将installed.img转换成installed.vdi
    $VBoxManage convertfromraw -format VDI ./installed.img ./installed.vdi

    4.运行
    1)配置virtualbox
    任选一linux based的机型即可。硬盘选ide primary master, 镜像选择你才做好的install.vdi..网络选择NAT方式,虽然受限制,但是可以直接支持访问外网。
    2)启动
    启动之后,在sun的图片界面,一定要按F12以进入启动选择界面,之后按1)即可。否则会卡在grub,需要重新生成vdi文件并重新加载!!切记!!
      3)切换到命令行
      按alt+right可以切换到命令行,方便调试。

  • 运维网声明 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-162523-1-1.html 上篇帖子: 设置Sun VirtualBox的共享文件夹 下篇帖子: ubuntu开启3D效果,修复VirtualBox
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

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

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

    扫描微信二维码查看详情

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


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


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


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



    合作伙伴: 青云cloud

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