当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 借助ubuntu电脑,给安卓手机安装整套ubuntu16.04的方法(高度定制,全中文界面,可输入汉字)
帖子发表于 : 2017-04-24 8:53 
头像

注册: 2007-09-16 8:29
帖子: 14253
送出感谢: 172
接收感谢: 272
一、说在前面的一些废话
我以前是这个论坛的活跃成员,也是ubuntu铁杆用户。
不过由于工作原因,不得已舍弃了ubuntu改用windows,对于ubuntu的热情逐渐淡了,也就不怎么上这个论坛了。
这篇文章属于“诈尸”之作,发上去估计也就不管了,所以我会写的比较详细,事无巨细的,但无暇顾及回帖和提问,估计也不会纠错和更新,主要给自己留一个工作备份,保留住自己的工作过程。
二、安卓手机安装ubuntu的原理及基本思路
其实,安卓的核心就是linux,所以理论上安卓手机直接可以运行ubuntu的桌面环境。其中主要阻碍有3点:
1,安卓手机没有ubuntu桌面所需的X Server,即没有linux桌面所需的图形服务器。
解决办法:安装XServer XSDL,即安卓版的Xserver。我用的以下版本,这个比较稳定,能满足需要。如果手机提示更新,则不要更新,否则反而可能不能用了https://pan.baidu.com/s/1pLue3r1
2,安卓手机的cpu是arm指令集,同pc机的x86指令集区别较大。
解决办法:在ubuntu的电脑上,利用chroot、debootstrap和qemu-arm-static三个命令,虚拟出一个手机环境,并安装好软件,做成一个img文件,拷贝到手机,挂载后用这个img在手机中启动。
3,安卓的linux是简化过的,无法直接运行ubuntu桌面环境。
解决办法:
将手机root,增加权限。
安装busybox,增加所支持的linux命令。
安装终端模拟器(我使用的是:Better Terminal Emulator Pro,自己从应用商店中搜索下载吧),用于输入命令。
在终端模拟器中,用命令行启动ubuntu桌面。
三、给安卓手机安装ubuntu有什么用?
反正我是用来玩游戏的,主要是原来我用kubuntu比较多,里面有一个纸牌游戏kpat,一个逻辑游戏picmi,还有几个其他游戏,别处真的找不到(或者差别还是比较大),有点怀念了,所以就装上了玩一下。其余用途,我还真没发现。(也许还可以用来装逼,呵呵。)
附件:
Screenshot_20170424-092443.png
Screenshot_20170424-092443.png [ 379.28 KiB | 被浏览 2165 次 ]


附件:
Screenshot_20170424-092830.png
Screenshot_20170424-092830.png [ 627.83 KiB | 被浏览 2165 次 ]


附件:
Screenshot_20170424-093622.png
Screenshot_20170424-093622.png [ 994.72 KiB | 被浏览 2165 次 ]



四,XServer XSDL安装及设置。
安装过程略,下载apk正常安装即可。安装后运行时,首先要设置一下,并且此过程要“手快”,很多地方是一闪而过的,没有暂停和等待,要及时操作。
主要是设置鼠标动作,其余的不重要,其余请参照网上的相关文档。比如:http://v.youku.com/v_show/id_XODk5NTI5MTg0.html
安装后运行时,首先看见这个界面
附件:
Screenshot_20170424-095218.png
Screenshot_20170424-095218.png [ 327.37 KiB | 被浏览 2157 次 ]



这是及时按一下灰色区域,出现以下界面:
附件:
Screenshot_20170424-094520.png
Screenshot_20170424-094520.png [ 112.97 KiB | 被浏览 2154 次 ]



选“mouse ...”那一行,然后鼠标设置以下3项:
附件:
Screenshot_20170424-094539.png
Screenshot_20170424-094539.png [ 128.07 KiB | 被浏览 2163 次 ]


鼠标左键:设置成“点击鼠标光标周围”,需要左键点击时,先点击一下鼠标要点击的位置把光标移动过去,看一下位置正确的话,在在光标周围点击一下,完成左键点击。原因是手机屏幕小,定位有时不准,这样用起来方便。不过假如定位不准,则需要在离鼠标光标很远的地方点一下,把鼠标光标移走,再重新移动回来,在光标附近点击则是单击,鼠标光标不会移动的。

附件:
Screenshot_20170424-094553.png
Screenshot_20170424-094553.png [ 132.64 KiB | 被浏览 2163 次 ]


鼠标右键:设置成“物理按键”,我设置的是手机的“菜单(menu)”键,即手机下端左边的按键,因为其他键都有用(home、power不能用,音量键不方便,“返回键”则用于调用输入法输入文字)

附件:
Screenshot_20170424-094607.png
Screenshot_20170424-094607.png [ 141.06 KiB | 被浏览 2163 次 ]


这里去掉几个勾。


然后点ok,再按手机“返回键”退出这些菜单,出现如下倒数计时界面时,点一下屏幕
附件:
Screenshot_20170424-102142.png
Screenshot_20170424-102142.png [ 43.84 KiB | 被浏览 2151 次 ]



设置分辨率(1280*720)
附件:
Screenshot_20170424-094654.png
Screenshot_20170424-094654.png [ 44.24 KiB | 被浏览 2163 次 ]



字体大小(0.4倍,即最下面一行的左边那个)
附件:
Screenshot_20170424-094704.png
Screenshot_20170424-094704.png [ 36.71 KiB | 被浏览 2163 次 ]



最后出现如下界面
附件:
Screenshot_20170424-094635.png
Screenshot_20170424-094635.png [ 51.4 KiB | 被浏览 2163 次 ]



五、制作img文件
主要参考了以下两个帖子(关于如何生成ubuntu的img文件的,但是没有提供手机启动脚本):
http://www.oschina.net/translate/how-to ... -phone?cmp
http://blog.sina.com.cn/s/blog_5f52c0600100u86x.html
其实第二个帖子是我写的,但是发现论坛内居然被删除了,然后希望搜索到某个镜像,真的搜索到了(稍微有点不全)。

下面详细罗列一下过程和命令:

首先要有一个可联网的ubuntu环境,是ubuntu就行,不在乎当前版本,但必须能上Internet网,虚拟机ubuntu环境也可以。我们主要是利用chroot、debootstrap和qemu-arm-static三个命令,虚拟出一个手机环境,并安装好软件,做成一个img文件。

1、为ubuntu设置QEMU和ARM二进制以及asdebootstrap支持:
代码:
sudo apt-get install debootstrap qemu-user-static qemu-system git gcc-arm-linux-gnueabihf binfmt-support


2、创建镜像文件系统(我创建了6GB的),格式化成ext4,并挂载在/mnt目录中。
代码:
dd if=/dev/zero of=ubuntu.img bs=1024 count=6291456
mkfs.ext4 ubuntu.img
sudo mount -o loop ubuntu.img /mnt

注意:4.2以下的安卓,请格式化成ext2。

3、使用debootstrap来部署基础环境(其中xenial 代表的是16.04版本,此过程必须联网),并将qemu-arm-static复制进基本环境中:
代码:
HOSTNAME=ubuntu-armhf sudo debootstrap --variant=minbase --foreign --arch armhf xenial /mnt
sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/

4、用qemu-arm-static完成剩下的部署工作:
代码:
LANG=zh_CN.UTF-8 sudo chroot /mnt /usr/bin/qemu-arm-static -cpu cortex-a15 /bin/bash
./debootstrap/debootstrap --second-stage

注意:自己上网查一下自己的手机cpu型号,改一下 cortex-a15 这个参数。
我的手机其实是cortex-a72,现在还不支持,所以选了较为接近的cortex-a15。

5、一旦上面的工作完成了,我们需要安装apt源(里面的 xenial 是16.04的版本代号),并更新(这里注意:国内的源大多数不支持arm框架,所以不要用国内的这些源)
代码:
echo "deb http://ports.ubuntu.com xenial main restricted universe multiverse" > /etc/apt/sources.list
echo "deb http://ports.ubuntu.com xenial-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://ports.ubuntu.com xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://ports.ubuntu.com xenial-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://ports.ubuntu.com xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://ports.ubuntu.com xenial main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://ports.ubuntu.com xenial-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://ports.ubuntu.com xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://ports.ubuntu.com xenial-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://ports.ubuntu.com xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01
apt-get update
apt-get dist-upgrade


6、配置中文环境,调整时区。
代码:
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
chmod -R 777 /var/lib/locales/supported.d/
cd /var/lib/locales/supported.d/
touch ja
touch ko
touch zh
chmod -R 777 /var/lib/locales/supported.d/
echo "ja_JP.UTF-8 UTF-8" >>ja
echo "ja_JP.EUC-JP EUC-JP" >>ja
echo "ko_KR.UTF-8 UTF-8" >>ko
echo "ko_KR.EUC-KR EUC-KR" >>ko
echo "zh_CN.UTF-8 UTF-8" >>zh
echo "zh_TW.UTF-8 UTF-8" >>zh
echo "zh_CN.GB2312 GB2312" >>zh
echo "zh_CN.GBK GBK" >>zh
echo "zh_CN.GB18030 GB18030" >>zh
echo "LANGUAGE=zh_CN:zh:en_US:en" >> /etc/environment
echo "LC_CTYPE=zh_CN.UTF-8" >> /etc/environment
echo "LANG=zh_CN.UTF-8" >> /etc/environment
echo "GST_ID3_TAG_ENCODING=GBK" >> /etc/environment
cd /
dpkg-reconfigure locales
dpkg-reconfigure tzdata
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"  #从这句以后,shell内开始显示中文了。
apt-get install xfonts-base xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-wqy fonts-wqy-microhei fonts-wqy-zenhei
apt-get clean


tzdata要先后选择 6:Asia 和 31. Hong_Kong。(不知道为什么,不能选shanghai,选shanghai则时间不对)

7、然后,你就可以安装各种软件(我安装了kubuntu桌面环境。由于使用的是XServer XSDL,所以这里不用安装xorg):
代码:
apt-get install sudo apt-utils dialog less wget vim net-tools openssh-server \
htop tmux build-essential libevent-dev python-dev python-setuptools \
python-lxml sqlite3 nodejs npm
apt-get install kubuntu-desktop
apt-get clean
apt-get install kubuntu-restricted-extras
apt-get clean
apt-get install bovo kpat ksquares ksudoku picmi kdiamond kollision
apt-get install language-pack-zh-hans language-pack-zh-hans-base language-pack-kde-zh-hans language-pack-gnome-zh-hans language-pack-gnome-zh-hans-base firefox-locale-zh-hans thunderbird-locale-zh-hans  kde-l10n-zhcn
apt-get clean


由于分配的空间比较紧张,所以每install一个大的程序后,都需要clean一下才行。
8、添加拥有sudo权限的用户(注意:其实在安卓的ubuntu里面用不上,里面是root用户直接进入环境的):
代码:
adduser ubuntu
addgroup --system admin
echo "admin ALL=(ALL:ALL) ALL" >> /etc/sudoers
usermod -G ubuntu,admin,plugdev,audio,video ubuntu
passwd


9、创建一个用于再手机系统内启动kde的文件,然后离开chroot环境。
代码:
echo "export DISPLAY=127.0.0.1:0" > /bin/starkde
echo "export LANGUAGE=zh_CN:zh" > /bin/starkde
echo "export LC_CTYPE=zh_CN.UTF-8" >> /bin/starkde
echo "export LANG=zh_CN.UTF-8" >> /bin/starkde
echo "export LC_ALL=zh_CN.UTF-8" >> /bin/starkde
echo "startkde" >> /bin/starkde
chmod a+x /bin/starkde
exit

10、为了移植安卓机器,建立一些目录(这里不建立,写到启动脚本里面动态建立也行)然后umount。
代码:
sudo mkdir /mnt/sdcard
sudo mkdir /mnt/dev/shm
sudo umount /mnt


六、手机端的操作

1、传文件给手机,并在手机中建立挂载目录。
如果ubuntu安装了adb,手机开放了adb,则可以连线后在电脑端用adb推送文件和建目录,否则就直接拷贝文件、在手机端建目录。
代码:
adb push ./ubuntu.img.zip /mnt/sdcard
adb shell mkdir /mnt/sdcard/ubuntu

2、建立启动脚本(我的脚本写的比较简单,仅能用于启动自己的这个img):
(脚本名:startkde,放在手机内存sd卡根目录,添加可执行权限)
代码:
##############
# 缩写 #
##############

bm="mount"
bu="umount"
export PATH=$bin:/usr/bin:/usr/local/bin:/usr/sbin:/bin:/usr/local/sbin:/usr/games:$PATH


img="/mnt/sdcard/ubuntu.img"
mnt="/mnt/sdcard/ubuntu"
dsk="/bin/starkde"


echo " "
echo "Img:\t$img"
echo "Dir:\t$mnt"
echo "Desktop:\t$dsk"
echo " "


###################################
# 挂载镜像、目录 #
###################################
### 挂载镜像
echo "Mounting $img to $mnt ..."
$bm $img $mnt

### 挂载必要的目录
echo "Mounting some directories ..."
$bm -o bind /dev $mnt/dev
$bm -t devpts devpts $mnt/dev/pts
$bm -t proc proc $mnt/proc
$bm -t sysfs sysfs $mnt/sys

### 挂载有用的安卓系统目录
for dir in 'system' 'etc' ; do
adir="$mnt/a$dir"
echo "create directory: $adir ...."
if [ ! -d $adir ]; then mkdir $adir ; fi
echo "bind $dir to $adir"
$bm -o bind /$dir $adir
done

### 挂载sd卡、tf卡
chsd="$mnt/sdcard"
mSD=/mnt/sdcard
if [ ! -d $chsd ]; then mkdir $chsd; fi
$bm -o bind $mSD $chsd
#chtf="$mnt/tfcard"
#mTF=/mnt/extsd
#if [ ! -d $chtf ]; then mkdir $chtf; fi
#$bm -o bind $mTF $chtf


###########################
# 设置网络 #
###########################
$bb 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 "Your Linux pad can be accessed from the IP:"
ifconfig wlan0
echo " "


#########################################
# 进入Linux系统 #
#########################################
#echo "stopping android services"
#stop
echo "chroot to $mnt ..."
DISPLAY=localhost:0 chroot $mnt /bin/sh $dsk

##############################################
# 退出chroot后关闭linux桌面 #
##############################################
echo -e "\n\n\n\n\n=============\nBack to host android.\n============\n"
#echo "Starting android services..."
#start
#echo -e "killing dekstop..."
#pkill kde
#pkill lxde
#pkill gnome
#pkill xfce
#echo -e "killing udevd..."
#pkill udevd
echo -e "killing synergyc..."
pkill synergyc
#echo -e "killing Xorg..."
#pkill Xorg


##########################################
# 解除目录绑定、卸载镜像 #
##########################################
echo "Shutting down chroot linux ..."
for pid in `$bb lsof | $bb grep $mnt | $bb sed -e's/ / /g' | $bb cut -d ' ' -f2`; do $bb kill -9 $pid >/dev/null 2>&1; done
sleep 15s
$bu $mnt/sdcard
#$bu $mnt/tfcard
$bu $mnt/asystem
$bu $mnt/aetc
$bu $mnt/dev/pts
$bu $mnt/dev
$bu $mnt/proc
$bu $mnt/sys
$bu $mnt
if [ $? = 0 ]; then
echo 'The chroot directory have been umounted!'
fi


3、先设置好XServer XSDL并启动,然后打开终端模拟器,在保证获得root权限前提下,依次执行如下命令:
代码:
su
cd /mnt/sdcard
sh ./startkde


然后按手机home键(不要关死手机shell,而是转到后台),转到提前打开的Xserver XSDL,发现kde已经在启动了。
kde开着,也不影响安卓的使用,不影响接打电话。

七、关于中文输入
经实际测试,这个ubuntu没必要安装输入法,而且安装了也无法启用,因为:这个ubuntu使用安卓自带的输入法来输入!
不过,经实际测试:
谷歌输入法:无法切换到中文,不能使用。
搜狗输入法:输入中文时,候选字部分不能显示,无法使用。

QQ输入法:可以正常使用。
其他:未做测试。

八、整体评价
1、支持手机arm构架的源很少,至少国内的几个源,都不支持(仅支持intel和amd的)
2、这种虚拟的环境,和手机环境总归有点差异,所以移植到手机后,有些软件不能执行。如果要安装、调整什么软件,尽可能还是在ubuntu的虚拟环境中进行,然后将img文件重新复制到手机。
3、现在的手机屏幕并不很小,cpu、内存也不小,所以实际效果还可以,运行很流畅并不卡顿,即使一直开着,也不会明显拖慢手机,而且很稳定。只是没有物理鼠标和键盘,稍有不方便,暂时不能用于日常办公,仅限娱乐。不过如果手机支持otc,是可以外接鼠标键盘的。
4、占用空间比较大,我的这个占用6G以上空闲空间,但是放在现在动辄64G\128G的手机上,占用空间问题并不大。
5、理论上本办法可以安装所有版本的ubuntu,只要修改debootstrap命令和软件源里面的版本代号即可。各版本代号如下:
代码:
版本号      代号         发布时间
17.04      Zesty Zapus      2017/04
16.10       Yakkety Yak      2016/10/20
16.04LTS   Xenial Xerus      2016/04/21
15.10      Wily Werewolf      2015/10/23
15.04      Vivid Vervet      2015/4/22
14.10      Utopic Unicorn      2014/10/23
14.04 LTS   Trusty Tahr      2014/04/18
13.10      Saucy Salamander   2013/10/17
13.04      Raring Ringtail      2013/04/25
12.10      Quantal Quetzal      2012/10/18
12.04 LTS   Precise Pangolin   2012/04/26


_________________
闻到死太贵, 麦克价更高。 有了笨笨兔, 二者皆可抛。
+ 我的六轮折腾
+ 折腾6轮的结果(对40余种WM的测试和分析,多种DE和WM并存的方案)
+ 折腾的中间成果:可以独立运行的一个Wharf(图标化的启动菜单)
+ 强烈推荐----折腾的终极成果:一个自己开发的DE环境
+ 签名空闲链接位置招租


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 借助ubuntu电脑,给安卓手机安装整套ubuntu16.04的方法(高度定制,全中文界面,可输入汉字)
帖子发表于 : 2017-04-24 9:14 
头像

注册: 2006-02-10 16:36
帖子: 2805
系统: Xubuntu14.04/Deepin
送出感谢: 15
接收感谢: 28
确实好长时间不见 ljj_jjl2008了,没有看帖,先回个帖


_________________
友帮拓,真难听。有没有接触官方的老大?给改了吧!
一直想找一个在linux下的Visual FoxPro/access桌面数据库。MUIBase还算是最相近的。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 借助ubuntu电脑,给安卓手机安装整套ubuntu16.04的方法(高度定制,全中文界面,可输入汉字)
帖子发表于 : 2017-11-09 20:34 
头像

注册: 2010-10-14 12:54
帖子: 232
送出感谢: 24
接收感谢: 1
:em11 也看看。回去把自己不用的平板试试!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 借助ubuntu电脑,给安卓手机安装整套ubuntu16.04的方法(高度定制,全中文界面,可输入汉字)
帖子发表于 : 2017-11-10 10:16 
头像

注册: 2010-07-15 13:31
帖子: 1401
送出感谢: 77
接收感谢: 23
想起了两年前的魅族 :Cry


_________________
Ubuntu 命令技巧: http://wiki.ubuntu.org.cn/index.php?title=UbuntuSkills&variant=zh-cn
Ubuntu 桌面指南: https://help.ubuntu.com//


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 借助ubuntu电脑,给安卓手机安装整套ubuntu16.04的方法(高度定制,全中文界面,可输入汉字)
帖子发表于 : 2017-11-10 11:20 
头像

注册: 2007-06-13 15:57
帖子: 12651
地址: 在他乡
送出感谢: 54
接收感谢: 90
老人诈尸


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 借助ubuntu电脑,给安卓手机安装整套ubuntu16.04的方法(高度定制,全中文界面,可输入汉字)
帖子发表于 : 2017-11-10 17:52 

注册: 2013-05-26 6:58
帖子: 2141
系统: Debian 9
送出感谢: 881
接收感谢: 30
引用:
主要给自己留一个工作备份,保留住自己的工作过程。

要小心被版主手抖误删.
记得以前我搜资料当时没时间看,过几天再搜就搜不到了,论坛上一问结果是被版主误删了.


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 借助ubuntu电脑,给安卓手机安装整套ubuntu16.04的方法(高度定制,全中文界面,可输入汉字)
帖子发表于 : 2017-11-10 21:30 
头像

注册: 2007-06-13 15:57
帖子: 12651
地址: 在他乡
送出感谢: 54
接收感谢: 90
科学之子 写道:
引用:
主要给自己留一个工作备份,保留住自己的工作过程。

要小心被版主手抖误删.
记得以前我搜资料当时没时间看,过几天再搜就搜不到了,论坛上一问结果是被版主误删了.

现在没人那么闲了


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译