在Mer系统中启动Android系统(一)

来源:互联网 发布:声音合成软件 编辑:程序博客网 时间:2024/05/17 23:46

由于项目需要,开始在OMAP上测试在Mer系统中利用LXC容器机制来启动Android机制。LXC虚拟容器机制最重要的限制是,虚拟系统必须与HOST系统共用同一个LINUX内核,鉴于Android在内核上有较大的修改,而Mer系统对内核的限制较小,拟采用Android内核来作为HOST系统内核。

一.编译LINUX内核

第一次直接使用下载的ANDROID内核uImage启动Mer,内核直接崩溃,暂时没有分析原因。同时编译好LXC的工具包后,在原生的Mer系统中执行lxc-checkconfig命令发现,Mer系统使用的内核很多LXC需要的特性没有开启。因此决定先编译一个新内核。

从OMAP提供的方法去下载内核源码。https://wiki.linaro.org/Platform/Android/JustWorkOnTheKernel,实际上这个链接的方法感觉不怎么好,实际上选好要下载的ANDROID版本后,打开https://android-build.linaro.org/builds/~linaro-android/panda-ics-gcc46-tilt-tracking-blob/,从download中下载linaro_kernel_build_cmds.sh。直接执行脚本或者从脚本中提炼出。步骤如下:

mkdir kernel

cd kernel

git clone git://git.linaro.org/people/andygreen/repo-branch-archive 

git checkout tilt-android-tracking

git clone不支持断点续传,可以采用gitfetch等方法来解决。checkout版本很重要,因为linux内核源码分支很多。下载内核配置

 http://snapshots.linaro.org/android/~linaro-android/panda-ics-gcc46-tilt-tracking-blob/235/kernel_config

修改kernel_config

l  从http://wiki.merproject.org/wiki/Adaptation_Guide,支持Mer系统需要开启的内核选项有:

CONFIG_EXT4_FS

y,m

Mer uses ext4 as rootfs

CONFIG_DEVTMPFS

y

needed by systemd

CONFIG_DEVTMPFS_MOUNT

y

needed by systemd

CONFIG_CGROUPS

y

CONFIG_INPUT_EVDEV

y

CONFIG_AUTOFS4_FS

y,m

CONFIG_IPV6

y,m,!

optional, but highly recommended

 CONFIG_RTC_DRV_CMOS

y,!

optional, but highly recommended

CONFIG_FANOTIFY

y,!

optional, required for systemd readahead.

CONFIG_UEVENT_HELPER_PATH

"",!

should be empty, if you want to use systemd without initramfs

CONFIG_AUDIT

y,!

optional, but recommended

CONFIG_TMPFS_POSIX_ACL

y,!

recommended, if you want pam_systemd.so to setup your "seats"

CONFIG_ANDROID_PARANOID_NETWORK

n

CONFIG_ANDROID_LOW_MEMORY_KILLER

n

CONFIG_DUMMY

n

CONFIG_ANDROID

n

not tested

 

l  https://wiki.archlinux.org/index.php/Linux_Containers

CONFIG_GROUP_SCHED=y

CONFIG_FAIR_GROUP_SCHED=y

CONFIG_RT_GROUP_SCHED=y

CONFIG_CGROUP_SCHED=y

CONFIG_CGROUPS=y

CONFIG_CGROUP_NS=y

CONFIG_CGROUP_FREEZER=y

CONFIG_CGROUP_DEVICE=y

CONFIG_CPUSETS=y

CONFIG_PROC_PID_CPUSET=y

CONFIG_CGROUP_CPUACCT=y

CONFIG_RESOURCE_COUNTERS=y

CONFIG_CGROUP_MEM_RES_CTLR=y

CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y

CONFIG_MM_OWNER=y

CONFIG_NAMESPACES=y

CONFIG_UTS_NS=y

CONFIG_IPC_NS=y

CONFIG_USER_NS=y

CONFIG_PID_NS=y

CONFIG_NET_NS=y

CONFIG_NET_CLS_CGROUP=y

CONFIG_SECURITY_FILE_CAPABILITIES=y

CONFIG_DEVPTS_MULTIPLE_INSTANCES=y

其中CONFIG_DEVPTS_MULTIPLE_INSTANCES=y,CONFIG_GROUP_SCHED=y

没有开启。

依据LXC的README文档,为了便于测试,下面三个内核选项也开启:

CONFIG_MACVLAN=y

CONFIG_VETH=y

CONFIG_BRIDGE_NETFILTER=y

配置好内核选项后

make –j4 O=out ARCH=arm CROSS_COMPILE=${HOME}/opt/arm-2009q1/bin/arm-none-linux-gnueabi-mkimage uImage

如果没有mkimage工具,我使用的OPENSUSE从 http://download.opensuse.org/repositories/home:/netsroth/openSUSE_11.4/中下载cross-arm-linux-sheevaplug-uboot-mkimage,安装后执行

cp -pi /usr/bin/mkimage${HOME}/opt/arm-2009q1/bin/arm-none-linux-gnueabi-mkimage

这样就编出了需要的uImage内核,下一步测试uImage内核能否启动Mer系统了。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上火嘴唇都肿了怎么办 嘴唇起泡后肿了怎么办 嘴唇上有白点颗粒状怎么办 嘴唇缺了一块红怎么办 人得钩端螺旋体怎么办 脖子上有鸡皮肤怎么办 不结婚老了以后怎么办 丁克族老了怎么办知乎 2个月宝宝咳嗽怎么办 干活累的手疼怎么办 脸上长白色的癣怎么办 全身起红斑很痒怎么办 宝宝脖子红烂了怎么办 背上长红斑很痒怎么办 身上起风疙瘩很痒怎么办 身上起小包很痒怎么办 浑身起红包很痒怎么办 手太粗糙怎么办小窍门 小腿长疙瘩很痒怎么办 腿过敏起红疙瘩怎么办 肚子上起红疙瘩很痒怎么办 小蚂蚁咬了肿了怎么办 锦鲤鱼尾巴烂了怎么办 泰迪身上长白毛怎么办 鱼身上有红斑了怎么办 新买锦鲤不吃食怎么办 鱼身上有红血丝怎么办 大腿内侧有红色条纹怎么办 腿上出现红血丝怎么办 孕妇有脚气,很痒怎么办 孕晚期脚气很痒怎么办 孕期有脚气很痒怎么办 激光后留下色沉怎么办 腋下很黑怎么办怎样才能变白 屁股上长一块癣怎么办 鼻两侧一热发红怎么办 脸上起皮发红痒怎么办 自癜风发红发痒怎么办 脸又干又痒怎么办 脸发红还有点痛怎么办 脸过敏了红痒怎么办