大家都知道,Ubuntu touch出来了,但是一般的手机目前还不支持,需要移植。难道我们就真的不能体验ubuntu touch了么,即使是配置不是太差的手机?
但是使用framebuffer,我们可以在任何安卓手机或平板上体验各种Linux桌面。应当也是可以运行ubuntu touch的,但是由于它运行的不是Xorg,所以还需要你的参与和探索。
除了纯粹的玩,想在安卓手机和平板上运行Linux桌面,我是因为有一些软件,没办法在安卓下使用,比如说gimp。
如果不想破坏原来的安卓系统,用下面两个方法体验和使用Linux桌面比较好:
1. 直接安装Linux到SD卡上。这种情况是运行一个完整的Linux版本。可以使用别人构建好的镜像,一句dd if=xxxx.img of=/dev/sdX命令,就可以安装Linux系统到sd卡。然后根据制造商的不同,关机使用不同的按键组合就能从SD引导运行这个Linux系统。但是这种镜像要有针对你的手机或平板的驱动,你才能用一些功能,比如说最基本的lcd屏要能显示、触摸屏至少要能用吧。
2. 在安卓系统之上,利用安卓本身的Linux内核、服务和应用程序来运行Linux桌面。基本的原理都是chroot。但在使用图形界面这一块,有些不同:
2.1 用的最多的是VNC,在Linux系统里运行一个VNC服务器,然后用安卓下的VNC客户端连接就可以了。但是这种方法在配置一般的手机或平板上运行不流畅。
2.2 也可以使用Xserver应用(还没有Wayland或Mir),这比起VNC的速度比较慢的协议来说,效率要高一些,但是目前的Xserver基本不实用:http://blog.sina.com.cn/s/blog_59cf67260101bvjf.html。
2.3. 关掉安卓服务,直接运行原生的Xorg,在这基础之上运行Linux桌面。
运行原生的Xorg有以下好处:
a. 比VNC:流畅。我的全志A10单核1.0GHz的机器,基本上有我原来那个赛扬的老机器用Windows XP的流畅度了。
b. 比TF卡:方便。不用重启机器,按各种按钮,就能切换到各种Linux桌面。
c. 比TF卡:方便。同上,玩完Linux,不用重启机器,就可以重新回到安卓。当然,这一点比VNC要差一点,这是由于没有人开发比较完整的Xserver。(或者Wayland、Mir也行啊)。
d. 比TF卡:还是方便。能直接用安卓下的驱动,不用从源码编译驱动。
e. 就和虚拟机一样,可以无痛的体验任何linux系统,只要有它的rootfs就行了。
爱折腾的筒子们,玩腻了chroot然后VNC和从TF卡启动的话,不妨来试试安卓平板上直接运行原生Xorg和Linux桌面吧。(直接使用安卓的Linux内核和相关的设备文件)
下面的内容就是在安卓的Linux内核和一些命令行工具上进行的,但是我后来发现原来已经有人把这个过程封装到安卓下的应用中了,所以本文可以用一句话概括:
使用Linux Deploy!(它也支持VNC和Xserver哦)
原来介绍的过程,就只是相当于Linux Deploy的原理或者说执行步骤了。
哈哈,不过还是可以供大家参考吧,还有,大家使用的过程中有什么问题,也可以在下面讨论。欢迎拍砖。
非常感谢坛子里的oppop007、photor等人,他们的讨论:
viewtopic.php?f=177&t=368225
viewtopic.php?f=177&t=444342
viewtopic.php?f=126&t=444845
使我明白了其中的关键两步:链接frame buffer设备文件和停止安卓服务。详细的教程还由oppop007来写的吧,我就写个简单的说一下关键的部分好了。
一、介绍
方法概述:把android的framebuffer设备文件链接到chroot的系统/dev目录下,停止安卓的服务,chroot到相应的系统里,然后运行Xorg,接着就可以运行桌面环境了。
适用范围:通用,支持framebuffer就行!(好像所有安卓机器都是用的fb吧。)
二、方法
1、测试:
测试你的机器的framebuffer是否能用,在终端中输入(adb shell或安卓上的终端应用都可以,已经root过的哦):
代码: 全选
cat /dev/zero > /dev/graphics/fb0
不用担心,用手掌划几下屏幕,就能看到原来的安卓桌面了。
当然,可能你framebuffer设备的不一定是fb0,那就试试其它的,fb1、fb2……
2、使用:
2.1 链接framebuffer设备文件和停止安卓服务
chroot前,保持你的屏幕亮着,然后在adb shell里输入:
代码: 全选
cp -af /dev/graphics/fb0 $chroot_dir/dev/fb0
stop
2.2 chroot
这个网上教程很多,就不详细说了。
2.3 启动xorg
chroot后可以直接试着启动Xorg,只需:
代码: 全选
nohup Xorg :0 vt1 &
如果出错,请cat /var/log/Xorg.0.log,关于Xorg的配置和其中可能出现的问题,我放到二楼,欢迎大家讨论。
2.4 玩桌面
桌面嘛,自己想装个什么,xfce、lxde或是icewm等等,想启动啥就装啥启动啥就好。
2.5 退出Linux,重启安卓
玩完了linux,关掉相应进程,退出,然后要重新回到安卓也很方便,在安卓的shell里输入:
代码: 全选
start
有时候stop和start命令不太管用。可以用脚本, 坛子里的oppop007这个帖子:viewtopic.php?f=177&t=368225&start=30的35楼有两个脚本。不过我更喜欢另外两个(忘了在哪儿看到的了):
停止安卓服务的stopandroid脚本
代码: 全选
#!/system/bin/sh
setprop ctl.stop media
setprop ctl.stop zygote
#sleep 1
setprop ctl.stop bootanim
#sleep 1
setprop ctl.stop media
setprop ctl.stop zygote
#sleep 1
setprop ctl.stop bootanim
exit 0
启动安卓的startandroid脚本
代码: 全选
#! /system/bin/sh
setprop ctl.stop media
setprop ctl.stop zygote
setprop ctl.stop bootanim
setprop ctl.start bootanim
setprop ctl.start zygote
setprop ctl.start media
exit 0
ps. 我的平板是奥可视的PX92,CPU全志A10,Cortex-A8单核1GHz,内存1G。用上面的LXDE桌面流畅度还不错,现在的平板和手机大多比这强,想比用起来更没问题。我使用的镜像是 linaro-alip-armhf-t4和debian-wheezy-lxde-armhf-mk802ii-1080p60-25-03-2013。有人需要的话我就分享。