当前位置: 首页 > news >正文

让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即可。

相关文章:

  • 二叉树的创建和操作
  • 再谈java乱码:GBK和UTF-8互转尾部乱码问题分析
  • 1.ubuntu网络配置
  • 戴尔软件调查结果显示中型企业正积极实施大数据项目
  • C#基础知识整理:C#类和结构(4)
  • bzoj 1692: [Usaco2007 Dec]队列变换 ——二分+hash
  • Android 快捷小工具
  • linux find命令详解
  • 自动化测试基础篇--Selenium简介
  • Elasticsearch的使用场景深入详解
  • Microsoft Office Word 遇到问题需要关闭
  • 【算法导论】第15章动态规划
  • Objective-C——消息、Category和Protocol
  • 物理世界的安防
  • [emuch.net]MatrixComputations(7-12)
  • 分享一款快速APP功能测试工具
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【刷算法】求1+2+3+...+n
  • Angularjs之国际化
  • css系列之关于字体的事
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • es6要点
  • miaov-React 最佳入门
  • mysql innodb 索引使用指南
  • PHP CLI应用的调试原理
  • php的插入排序,通过双层for循环
  • python学习笔记-类对象的信息
  • SpiderData 2019年2月16日 DApp数据排行榜
  • text-decoration与color属性
  • windows下如何用phpstorm同步测试服务器
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 番外篇1:在Windows环境下安装JDK
  • 关于Java中分层中遇到的一些问题
  • 简单易用的leetcode开发测试工具(npm)
  • 力扣(LeetCode)21
  • 前端性能优化——回流与重绘
  • 树莓派 - 使用须知
  • 微信小程序--------语音识别(前端自己也能玩)
  • 原生js练习题---第五课
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • hi-nginx-1.3.4编译安装
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ![CDATA[ ]] 是什么东东
  • #include<初见C语言之指针(5)>
  • #includecmath
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (JS基础)String 类型
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (超详细)语音信号处理之特征提取