让Ubuntu和Android同时运行(Ubuntu on Android)

简介:

Ubuntu目前有个项目叫Ubuntu for Android(http://www.ubuntu.com/devices/android),看起来非常cool:

它的原理在http://www.ubuntu.com/devices/android并无介绍。但是我们猜测可以用chroot配合实现一个最简单的Ubuntu for Android。

我们为Andriod编写一个脚本Ubuntu.sh,在该脚本中启动Ubuntu的文件系统,透过chroot进行:

#!/system/bin/sh

if [ `id -u` != "0" ]
then
echo -e "\033[33m Becoming root \033[0m"
su -c bu
exit 1
fi

echo -e "\033[33m Setting some stuff up..\033[0m "

export bin=/system/bin
export mnt=/data/local/ubuntu
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root

if [ ! -d $mnt ]
then
mkdir $mnt
fi

echo -e "\033[33m Mounting the Linux Image \033[0m"

#replace /dev/block/mmcblk1p2 by the partition Ubuntu image is replaced
#it might be a loop image
busybox mount -t ext4 -o noatime,nodiratime /dev/block/mmcblk1p2 $mnt
busybox mount -t devpts devpts $mnt/dev/pts
busybox mount -t proc proc $mnt/proc
busybox mount -t sysfs sysfs $mnt/sys

echo -e "\033[33m Setting Up Networking\033[0m"

sysctl -w net.ipv4.ip_forward=1
echo "nameserver 8.8.8.8" >> $mnt/etc/resolv.conf
echo "nameserver 8.8.4.4" >> $mnt/etc/resolv.conf
echo "127.0.0.1 localhost" > $mnt/etc/hosts

echo -e "\033[33m Mounting sdcard in /mnt/sdcard\033[0m"
if [ ! -d $mnt/mnt/sdcard ]
then
mkdir $mnt/mnt/sdcard
fi

busybox mount --bind /mnt/sdcard/ $mnt/mnt/sdcard

echo -e "\033[33m Entering CHROOT \033[0m"
echo " "

chroot $mnt /bin/bash

echo " "
echo -e "\033[33m Shutting down CHROOT\033[0m"
echo -e "\033[33m umount $mnt/mnt/sdcard\033[0m"
busybox umount $mnt/mnt/sdcard
sysctl -w net.ipv4.ip_forward=0
echo -e "\033[33m umount $mnt/dev/pts\033[0m"
busybox umount $mnt/dev/pts
echo -e "\033[33m umount $mnt/proc\033[0m"
busybox umount $mnt/proc
echo -e "\033[33m umount $mnt/sys\033[0m"
busybox umount $mnt/sys

echo -e "\033[33m umount $mnt\033[0m"
busybox fuser -k $mnt
busybox umount $mnt

其中的一行:

busybox mount -t ext4 -o noatime,nodiratime /dev/block/mmcblk1p2 $mnt

是为了mount Ubuntu的rootfs,我们的实验中Ubuntu的rootfs存放在/dev/block/mmcblk1p2。该文件系统通过rootstack得到:

sudo rootstock -f ubuntu -l <yourname> -p <yourpassword> -i 1G --seed linux-image-omap,build-essential,tightvncserver, lxde

将得到的tgz包解压到我们sd卡的分区2。

运行Ubuntu.sh,进入到了Ubuntu的根文件系统,并执行了bash,之后我们开一个vncserver:

export USER=root
vncserver -geometry 800x480

在Android端,通过VNCClient软件连接到127.0.0.1:5901即可。





 本文转自 21cnbao 51CTO博客,原文链接:http://blog.51cto.com/21cnbao/898842,如需转载请自行联系原作者


相关文章
|
28天前
|
移动开发 监控 安全
mPaaS常见问题之Android集成dexPatch热修复运行时候无法正常进行热更新如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
34 0
|
1月前
|
Ubuntu 网络协议 Java
【Android平板编程】远程Ubuntu服务器code-server编程写代码
【Android平板编程】远程Ubuntu服务器code-server编程写代码
|
3月前
|
Linux Android开发
Android 正常运行所需的一系列 Linux 内核接口
Android 正常运行所需的一系列 Linux 内核接口
53 0
|
5月前
|
Ubuntu Linux
Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
Win10 Ubuntu子系统(内嵌ubuntu18.04)运行32bit Linux原生程序 解决Exec format error错误
118 0
|
4月前
|
Java 关系型数据库 数据库
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
Android App连接真机步骤与APP的开发语言和工程结构讲解以及运行实例(超详细必看)
36 0
|
17天前
|
Ubuntu Unix Linux
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
|
1月前
|
Ubuntu 安全 虚拟化
vmware虚拟机运行ubuntu等卡慢的解决办法
vmware虚拟机运行ubuntu等卡慢的解决办法
127 0
|
1月前
|
Ubuntu 网络协议 Java
在Android平板上使用code-server公网远程Ubuntu服务器编程
在Android平板上使用code-server公网远程Ubuntu服务器编程
|
2月前
|
编译器 开发工具 Android开发
|
2月前
|
Ubuntu 网络协议 Linux
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
49 0