请想要深入学习和研究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. Android开发手记一 NDK编程实例
  2. Android项目开发完成以后就要将android项目文件打包成apk文件
  3. windows修改Android(安卓)AVD路径
  4. 创建和使用Android(安卓)library工程
  5. Android(安卓)Asynchronous Http Client - 开源http 多线程引擎
  6. Android下修改hosts文件
  7. android ListView用法简介
  8. 手机应用开发 第二节:PhoneGap and Dojo Mobile on Android(创建
  9. Android实现自定义适配器详解

随机推荐

  1. ab网站压力测试(基于CentOS6.5)
  2. GitHub Action + ACK:云原生 DevOps 落地
  3. 求职?涨薪?瓶颈期?那你一定不要错过这次福利
  4. 测试微服务 VS 测试单体式应用
  5. Linux系统入门-Bash
  6. 软件架构-分布式系列并发编程Lock锁和Too
  7. Linux学习笔记总结(九十八)
  8. .Net如何学习
  9. 安全星球将成为企业办公必备的工具
  10. 报表生成器FastReport .Net如何存储和加