在ubuntu 15.04 x86-64上实验 android-x86-5.1.1+kernel-4.0.9
源码是从sf上取得
mkdir android-repo
cd android-repo
repo init -u git://gitscm.sf.net/gitroot/android-x86/manifest -b lollipop-x86
repo sync
开始配置
自己的配置
cd ..
. ./chysetenv.sh
export PATH=/backup/android-related/git-repo:$PATH
export USE_CCACHE=1
export CCACHE_DIR=/backup/android-related/ccache
/backup/android-related/android-repo/prebuilts/misc/linux-x86/ccache/ccache -M 30G
export ANDROID_PRODUCT_OUT=/backup/android-related/android-repo/out/target/product/generic
export EMULATOR_X86=/backup/android-related/android-repo/prebuilts/android-emulator/linux-x86_64
ANDROID_PRODUCT_OUT_BIN=/backup/android-related/android-repo/out/host/linux-x86/bin
export PATH=$PATH:$ANDROID_PRODUCT_OUT_BIN:$ANDROID_PRODUCT_OUT:$EMULATOR_X86
这是为之前AOSP准备的,现在部分内容其实没用,比如EMULATOR_X86,也许就前面4行有用
开始编译
cd android-repo
source build/envsetup.sh
lunch android-x86-eng #选择10 x86-32 系统 or 7 for x86-64系统
make -j16 iso_img
就完成了! 可以直接用virtualbox使用生成的img,在不安装模式下是可以基本正常工作的。
定制内核(optional)
make -C kernel O=/backup/android-related/android-repo/out/obj2 ARCH=x86 android-x86_defconfig #选择缺省android-x86配置
make -C kernel O=/backup/android-related/android-repo/out/obj2 ARCH=x86 android-x86_defconfig
make -C kernel O=/backup/android-related/android-repo/out/obj2 ARCH=x86 menuconfig #可以自己做些定制
make -C kernel O=/backup/android-related/android-repo/out/obj2 ARCH=x86 -j16 #编译成功内核
注意:
DO NOT make in kernel/ directly. If you do so, try
$ make -C kernel distclean
$ rm -rf $OUT/obj/kernel
用qemu-system-i386测试
1 qemu-system-i386 -m 2G -cdrom /backup/android-related/android-repo/out/target/product/x86/android_x86.iso -serial stdio >/backup/temp/logq
2 qemu-system-i386 -kernel kernel -cdrom android_x86.iso -append "initrd=/initrd.img root=/dev/ram0 console=ttyS0 androidboot.hardware=android_x86 DEBUG=2 SRC= DATA=" -no-reboot -serial stdio
kernel是编译出来的内核
3 qemu-system-i386 -kernel kernel -cdrom android_x86.iso -initrd /home/chyyuu/develop/xly_qemu_debug_linux/rootfs_32.img.gz -append "root=/dev/ram rdinit=/sbin/init console=ttyS0" -no-reboot -serial stdio
增加了config中的选项,具体可以参考4.3的android-x86_defconfig.chy1和chy2的区别。
然后,就可以识别到QEMU CDROM了,就可以采用1的方式到shell了!
生成的iso的grub.cfg(真实名字是isolinux.cfg)的内容
default vesamenu.c32
timeout 600
menu background android-x86.png
menu title Android-x86 Live & Installation CD 5.1-rc1
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffff00 #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ffffff00 #ff000000
menu color hotkey 7 #ffffff00 #00000000
label livem
menu label Live CD - ^Run Android-x86 without installation
kernel /kernel
append initrd=/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 quiet SRC= DATA=
label vesa
menu label Live CD - ^VESA mode
kernel /kernel
append initrd=/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 quiet nomodeset vga=788 SRC= DATA=
label debug
menu label Live CD - ^Debug mode
kernel /kernel
append initrd=/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 vga=788 DEBUG=2 SRC= DATA=
label install
menu label Installation - ^Install Android-x86 to harddisk
kernel /kernel
append initrd=/initrd.img root=/dev/ram0 androidboot.hardware=android_x86 INSTALL=1 DEBUG=
用qemu-system-x86_64测试
UEFI 模式
qemu-system-x86_64 -enable-kvm -m 4G -bios OVMF.fd -hdb android_x86_64.img -vga std -serial stdio
BIOS 模式
qemu-system-x86_64 -enable-kvm -m 4G -cdrom android_x86_64.iso -vga std -serial stdio
VESA mode
qemu-system-x86_64 -enable-kvm -m 4G -bios OVMF.fd -hdb android_x86_64.img -vga std -serial stdio
kernel 参数
nomodeset vga=788 即800x600:16bpp
console=ttyS0 用串口交互
通过adb连接qemu进行调试(BIOS模式)
$ qemu-system-x86_64 -enable-kvm -m 4G -cdrom android_x86_64.iso -vga cirrus -serial stdio -redir tcp:5555::5555
$ adb shell
支持virgl方式(BIOS调试),qemu-2.6+
qemu-system-x86_64 -enable-kvm -m 3096 -serial stdio -cdrom android_x86_64.iso -hda diska.img -device virtio-gpu-pci,virgl -redir tcp:5555::5555
实验室android-x86 5.1 lollipop-x86 代码托管服务器
下载 repo 工具:
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo #repo也可下载:http://192.168.0.185/git-repo-downloads/repo
chmod a+x ~/bin/repo
建立工作目录:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
初始化仓库, 并选择multiwindow Android-x86 版本:
repo init -u git://192.168.0.185/lollipop-x86/manifest.git -b multiwindow
如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
REPO_URL = 'git://192.168.0.185/git-repo' 或清华大学的源:REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
同步源码树(以后只需执行这条命令来同步):
repo sync
注意,如何发现下载速度慢,可能是由于到google站点去取源码了,可以修改 .repo/manifest.xml的第5行为
fetch="git://192.168.0.185/lollipop-x86/" />
建立multiwindow开发分支:
repo start multiwindow --all
设置代码提交的远程仓库别名为“devorg”:
repo forall -c 'git remote add devorg git://192.168.0.185/lollipop-x86/$REPO_PROJECT.git $@'
上述步骤在首次操作完成后,便可开始代码开发:
在对某个project的代码进行更改前,请确保当前是multiwindow分支;单个project提交,在该project目录下:
git commit -a -m "xxx commit"
git push devorg multiwindow:refs/heads/multiwindow
将所有project的multiwindow分支提交到远程仓库:
repo forall -c git push devorg multiwindow:refs/heads/multiwindow
第三方app
第三方APP ,均已上传至如下地址。git clone到本地即可
git://192.168.0.185/openthos-apps