Skip to content

Latest commit

 

History

History
134 lines (121 loc) · 8 KB

File metadata and controls

134 lines (121 loc) · 8 KB

第八章 高级功能

openthos下chroot 到arch linux运行android studio等图形应用

方法一

  • 准备工作
    • 在安装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桌面,打开应用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

使用Linux(chroot 到ubuntu 根)

  • 安装ubuntu15.10(一定要装英文版,中文会有各种乱码问题), 然后安装openthos到硬盘不同两个分区(以下假设sda2为ubuntu)

安装具体问题见安装

注:ubuntu 16.04 chroot后使用apt-get需要先修改分组信息usermod -g 3003 _apt,详情请见:https://askubuntu.com/a/940851/220641

  • 进入openthos,并启动终端,将ubuntu盘符挂载到一个自己目录下

    • su
    • mkdir /storage/emulated/legacy/ubuntu
    • mount -t ext4 /dev/block/sda2 /storage/emulated/legacy/ubuntu //此处每次重新启动需手动mount一次
  • 更改PATH,挂在文件系统 //下面几个文件系统每次重新启动需手动mount一次

    • export PATH=/usr/bin:/usr/sbin:/bin:/sbin:$PATH //目前每个打开的终端/切换用户需要手动重新更改PATH
    • mount -t sysfs sysfs /storage/emulated/legacy/ubuntu/sys
    • mount -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/pts
  • chroot到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

本地编译openthos,可以尝试以下步骤(且建议内存大小最好为8G或以上并增加swap分区)

在ubuntu系统环境中:

  • 下载repo文件
    • curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
    • chmod +x repo
    • cp 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-dev
    • git 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 multiwindow
    • repo sync
    • source build/envsetup.sh
    • lunch android_x86_64_eng
    • make -j8 oto_img

OTO

OPENTHOS is based on android-x86/aosp/tieto...