博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
让Ubuntu和Android同时运行(Ubuntu on Android)
阅读量:7236 次
发布时间:2019-06-29

本文共 2293 字,大约阅读时间需要 7 分钟。

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/shif [ `id -u` != "0" ]thenecho -e "\033[33m Becoming root \033[0m"su -c buexit 1fiecho -e "\033[33m Setting some stuff up..\033[0m "export bin=/system/binexport mnt=/data/local/ubuntuexport PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATHexport TERM=linuxexport HOME=/rootif [ ! -d $mnt ]thenmkdir $mntfiecho -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 imagebusybox mount -t ext4 -o noatime,nodiratime /dev/block/mmcblk1p2 $mntbusybox mount -t devpts devpts $mnt/dev/ptsbusybox mount -t proc proc $mnt/procbusybox mount -t sysfs sysfs $mnt/sysecho -e "\033[33m Setting Up Networking\033[0m"sysctl -w net.ipv4.ip_forward=1echo "nameserver 8.8.8.8" >> $mnt/etc/resolv.confecho "nameserver 8.8.4.4" >> $mnt/etc/resolv.confecho "127.0.0.1 localhost" > $mnt/etc/hostsecho -e "\033[33m Mounting sdcard in /mnt/sdcard\033[0m"if [ ! -d $mnt/mnt/sdcard ]thenmkdir $mnt/mnt/sdcardfibusybox mount --bind /mnt/sdcard/ $mnt/mnt/sdcardecho -e "\033[33m Entering CHROOT \033[0m"echo " "chroot $mnt /bin/bashecho " "echo -e "\033[33m Shutting down CHROOT\033[0m"echo -e "\033[33m umount $mnt/mnt/sdcard\033[0m"busybox umount $mnt/mnt/sdcardsysctl -w net.ipv4.ip_forward=0echo -e "\033[33m umount $mnt/dev/pts\033[0m"busybox umount $mnt/dev/ptsecho -e "\033[33m umount $mnt/proc\033[0m"busybox umount $mnt/procecho -e "\033[33m umount $mnt/sys\033[0m"busybox umount $mnt/sysecho -e "\033[33m umount $mnt\033[0m"busybox fuser -k $mntbusybox 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=rootvncserver -geometry 800x480

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

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

你可能感兴趣的文章
鸟哥Linux私房菜基础学习篇 第一部分:Linux的规划与安装_主机规划与磁盘分区...
查看>>
awk命令详解
查看>>
top 使用技巧
查看>>
JNIEnv说明
查看>>
jaxb替换smooks项目方案建议书
查看>>
Linux下实现tomcat定时自动重启
查看>>
怎样把一个价值5毛钱的苹果卖到100万?
查看>>
计算机二级C语言应试技巧【上机篇】
查看>>
解决Invalid Code Signing Entitlements 问题
查看>>
Android绑定远程服务
查看>>
LibSVM学习(二)——第一次体验libSvm
查看>>
linux下查看用户及用户组的方法
查看>>
C-遍历二叉树
查看>>
解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
查看>>
电邮之瘾:企业为何无法摆脱?
查看>>
我的友情链接
查看>>
百度百科 - hive
查看>>
sed
查看>>
Cday03
查看>>
给Virtual Box内的Linux添加虚拟硬盘
查看>>