-
Notifications
You must be signed in to change notification settings - Fork 23
chroot到ubuntu
- 首先安装ubuntu15.10(一定要装英文版,中文会有各种乱码问题,另外16.04 chroot后 apt-get无法使用), 然后安装openthos到硬盘不同两个分区(以下假设sda2为ubuntu)
安装具体问题见安装
-
进入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
本地编译openthos,可以尝试以下步骤(且建议内存大小最好为8G或以上并增加swap分区) chroot到ubuntu下后:
- 下载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
- 安装必要包、工具和配置 (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
orm -j2 oto_img