- 准备工作
- 在安装openthos前,多分配一个分区(用于存arch linux文件系统)
- 如果已经安装完openthos,可以u盘启动ubuntu live cd重新增加一个分区,安装和分区可参见安装
用到的分区格式可以参考,如下:
| 分区 | 大小 | 文件系统格式 | 用途 |
|---|---|---|---|
| sda1 | 200M | FAT32 | openthos EFI分区 |
| sda2 | 4G | ext4 | openthos system分区 |
| sda3 | 40G | ext4 | openthos data 分区 |
| sda4 | 200G | ext4 | arch linux 系统/数据分区 |
- 重新启动系统,进入openthos
- 打开终端,格式化为arch 留出的分区,以sda4为例:(sda× ×为你为arch linux所留文件系统分区,此处要记住)
su(切换到root用户操作)mkfs.ext2 /dev/block/sda4(格式化预留磁盘)
- 在/data/下创建一个挂载点, 将arch linux 分区挂载到本地路径
mkdir /data/archlinux(创建一个目录,挂载arch linux盘符)mount -t ext2 /dev/block/sda4 /data/archlinux(将分好的分区挂在到分好的目录下)cd /data/archlinux- 下载archlinux
- 内网拷贝:
scp lh@192.168.0.180:/home/lh/archlinux/archlinux.tar.gz .(将已经安装配置好的arch linux文件系统拷贝到本地) - 网盘链接:https://pan.baidu.com/s/1mi2iUW4
- 内网拷贝:
tar xvf archlinux.tar.gz(解压拷贝过来的压缩包)
- 将/archlinux/data 下的配置脚本文件、应用拷贝到本地
cp arch mount-static prearch /system/bin/(将两个脚本和一个重新编译的mount拷贝到本地)
- 修改脚本内容(脚本中指定的路径和权限)
cd /system/bin/chmod 777 mount-static arch prearch(增加脚本/应用可执行权限)- 修改prearch脚本第一行,将sda7 改为sda4 ,并将ext4 改为ext2 (修改mount 所挂在盘符和文件系统)
- 运行脚本chroot到 arch linux
prearch(mount所有chroot 所需的分区, 创建应用所需文件目录)arch(更改环境变量,chroot)
- 在arch linux上启动图形wayland服务westen
- openthos 终端下
wm size查看下当前分辨率:如结果为1920x1080 cd /./linuxgui.sh 1920 1080
- openthos 终端下
- 切换回openthos桌面,打开应用oto virtual...
- 现在可以启动应用进入linux环境, 打开终端,运行/opt下的android studio吧
- 打开一个终端
cd /opt/android-studio/bin./studio.sh
- archlinux目录需挂在在单独的磁盘分区上,否则pacman暂时无法直接使用(chroot后没有/的挂在点)
(arch 文件系统压缩后为5G 左右)
- su
- scp lh@192.168.0.180:/home/lh/archlinux/installarch.sh /system/bin/
- cd /system/bin/
- chmod 777 installarch.sh
- mount -t ext4 /dev/block/sda4 /data/archlinux (此处sda4为为arch准备的任意一个单独磁盘分区,改为您实际待用分区)
- ./installarch.sh
- umount /data/archlinux
- 修改/system/bin/arch脚本中 /dev/block/sda4 为您实际待用分区
- 然后每次要chroot的时候 输入arch命令就可以了
- arch
- /linuxgui.sh 1920 1080 (1920 x 1080 为openthos 的终端下wm size 查看的显示器分辨率)
- 备注:如果无法找到studio 的文件存放的路径,可以访问如下默认路径:/data/archlinux/root/AndroidStudioProjects
- 安装ubuntu15.10(一定要装英文版,中文会有各种乱码问题), 然后安装openthos到硬盘不同两个分区(以下假设sda2为ubuntu)
安装具体问题见安装
注:ubuntu 16.04 chroot后使用apt-get需要先修改分组信息
usermod -g 3003 _apt,详情请见:https://askubuntu.com/a/940851/220641
进入openthos,并启动终端,将ubuntu盘符挂载到一个自己目录下
sumkdir /storage/emulated/legacy/ubuntumount -t ext4 /dev/block/sda2 /storage/emulated/legacy/ubuntu//此处每次重新启动需手动mount一次更改PATH,挂在文件系统 //下面几个文件系统每次重新启动需手动mount一次
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:$PATH//目前每个打开的终端/切换用户需要手动重新更改PATHmount -t sysfs sysfs /storage/emulated/legacy/ubuntu/sysmount -t proc proc /storage/emulated/legacy/ubuntu/proc- 将 mount-static(静态编译的mount 支持--bind参数) 拷贝到/system/bin 下mount-static链接
mount-static --bind /dev /storage/emulated/legacy/ubuntu/dev//非必要 chroot后,访问设备节点(播放音乐、读取u盘等与外设打交道时需要)mount -t devpts devpts /storage/emulated/legacy/ubuntu/dev/ptschroot到ubuntu的根
chroot /storage/emulated/legacy/ubuntu/ su -修改ubuntu下必要配置 //配置一次即可,增加android 下socket相关组(3003 3004),并将其加入root组权限 ,修改dns配置文件
groupadd -g 3003 socket_AF_INT
groupadd -g 3004 socket_raw
usermod -a -G socket_AF_INT,socket_raw root
su -// 此时可以ping通其它ip
vi /etc/resolv.conf//增加如下一行, 另外DNS可由openthos终端内getprop | grep eth0查看nameserver 192.168.0.1
至此, 可以在终端内 apt-get update 等安装和使用基本ubuntu的命令了(首先安装一个编辑器:apt-get install vim),另外为了不太丑、好用点可以再增加部分如下配置:
- 修改/etc/profile, 末尾增加如下内容
set -o vi
alias vi=vim
export TERM=xterm
stty cols 191//备注:设置一行多少个字符(和显示器大小,字体大小等相关,不要超出一行最大限制,会有乱码,尽量从一个较小的值试出符合自己屏幕显示的值)
export LINES=54//备注:同行限制,一列有多少个字符
shopt -u checkwinsize
- 增加swap分区 //本地编译时内存不足
- `dd if=/dev/zero of=/opt/swap.img bs=1M count=8000`
- `mkswap /opt/swap.img`
- `swapon /opt/swap.img`
- `swapon -s` // 查看下swap状态
- 相关配置和为了方便操作的脚本可参考陈刚的脚本和提供的工具:[tools](https://github.com/openthos/community-analysis/tree/master/tools)
本地编译openthos,可以尝试以下步骤(且建议内存大小最好为8G或以上并增加swap分区)
在ubuntu系统环境中:
- 下载repo文件
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repochmod +x repocp repo /usr/bin/export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
- 安装必要包、工具和配置 (ubuntu14.04环境)
openjdk7:如果系统为ubunt16.04 或16.10需在网上自行下载1.7版本JDK。sudo apt-get install git openjdk-7-jdk g++-multilib zlib1g-dev lib32z1-dev bison flex gperf python-mako libxml2-utils syslinux-utils squashfs-tools libelf-devgit config --global user.email "email@xxx.com"git config --global user.name "name"repo init -u git://192.168.0.185/lollipop-x86/manifest -b multiwindowrepo syncsource build/envsetup.shlunch android_x86_64_engmake -j8 oto_img
OPENTHOS is based on android-x86/aosp/tieto...