Skip to content

chroot到ubuntu

Dp edited this page Nov 4, 2016 · 1 revision

chroot 到ubuntu 根

  1. 首先安装ubuntu15.10(一定要装英文版,中文会有各种乱码问题,另外16.04 chroot后 apt-get无法使用), 然后安装openthos到硬盘不同两个分区(以下假设sda2为ubuntu)

安装具体问题见安装

  1. 进入openthos,并启动终端,将ubuntu盘符挂载到一个自己目录下
    su
    mkdir /storage/emulated/legacy/ubuntu
    mount -t ext4 /dev/block/sda2 /storage/emulated/legacy/ubuntu //此处每次重新启动需手动mount一次

  2. 更改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

  3. chroot到ubuntu的根
    chroot /storage/emulated/legacy/ubuntu/ su -

  4. 修改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),另外为了不太丑、好用点可以再增加部分如下配置:

  1. 修改/etc/profile, 末尾增加如下内容

set -o vi
alias vi=vim
export TERM=xterm
stty cols 191 备注:设置一行多少个字符(和显示器大小,字体大小等相关,不要超出一行最大限制,会有乱码,尽量从一个较小的值试出符合自己屏幕显示的值)
export LINES=54 备注:同行限制,一列有多少个字符
shopt -u checkwinsize

  1. 增加swap分区 //本地编译时内存不足
    dd if=/dev/zero of=/opt/swap.img bs=1M count=8000
    mkswap /opt/swap.img
    swapon /opt/swap.img
    swapon -s // 查看下swap状态
  2. 相关配置和为了方便操作的脚本可参考陈刚的脚本和提供的工具:tools

编译OPENTHOS

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

  1. 下载repo文件
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/repo
    修改repo文件, 将google的地址REPO_URL改为:git://192.168.0.185:/git-repo
    chmod +x ~/repo
    cp ~/repo /usr/bin
  2. 安装必要包、工具和配置 (ubuntu15.10环境下,所需安装的所有包)
    openjdk7此处如果为ubunt16.04 或16.10需在网上下载(1.7版本jdk已被移除,并且目前编译androidx86需要1.7版本。
    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
    git config --global user.email "[email protected]"
    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
    m -j2 iso_img or m -j2 oto_img