扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先,关于linux,我们需要知道两个知识点,一个在linux系统下,我们可以将一个文件挂载为一个分区,也就是说如果我有一个磁盘镜像文件,我可以直接挂载为一个linux的分区;这一点与windows的虚拟光驱有点类似,但是在linux下,不仅是光盘镜像文件,所有的镜像文件都可以挂载为一个linux的分区;第二个知识点就是chroot,可能看到这个你就明白了本文讲的方法是如何从安卓设备运行linux系统的,如果还不明白的话,请继续往下看。chroot 就是Change Root,也就是改变程序执行时所参考的根目录位置。有了这两个知识就简单了。
10年积累的做网站、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有武安免费网站建设让你可以放心的选择与我们合作。
方法:首先启动安卓系统,然后将linux的系统镜像文件挂载为安卓系统的一个分区(所以设备必须支持Loop设备),然后通过chroot命令切换程序执行时所参考的根目录即可。这样我们就可以使用系统镜像文件里的操作系统了。
需要用到的几个软件:BusyBox Pro,Complete Linux Installer(内含终端模拟器 VNC安卓客户端和Linux镜像下载链接),适合于Arm的Ubuntu镜像。这几个软件都可以从Google Play里下载到,其中BusyBox Pro是收费应用,网上应该也有免费的下载,可以搜一下。另外Complete Linux Installer也带有BusyBox如果不想下载那个收费的,用这里带的或许也可以,但是可能会报告一个错误。
软件安卓好之后,将Ubuntu镜像放到SD卡里,最好是Class 10的高速卡,不然可能会稍微卡一点,但是不会非常卡,因为大多数的操作还是依赖于安卓系统构建的系统的了,这跟直接将系统镜像写入SD卡并从SD卡启动不同。这个镜像文件需要放到SD卡的一个文件夹下,注意一定不能使中文。然后打开Complete Linux Installer,里面有一个启动操作系统,右上角会有一个菜单编辑,名称任意,路径当然就要选择我们的镜像所致的路径了,保存并返回。此时点击启动即可启动linux系统。此时会启动终端模拟器,提示几个问题,如果是第一次启动会让设置密码,设置好密码之后,再依次输入y,最好设置分辨率,y,即可。如果启动失败,可以多试几次即可。
之后可以打开VNC客户端,连接127.0.0.1:5900输入刚才设置的用户名密码即可连接登陆。如果显示被拒绝连接,可以检查一下端口号是否正确。检查的方法是到终端模拟器执行 netstat -tlnp 看一下vncserver前面对应的端口号码是多少,再到VNC客户端改为相应的端口号即可。
安卓系统虽然也算作Linux的一种,使用的也是Linux内核,但毕竟安卓应用运行在java虚拟机上,不能运行标准的Linux。
第一种,高阶玩法,根据网上的相关资料自己编译内核移植系统。国内外的玩家主要玩的多的包括全志A10、瑞芯微的RK3066和RK3188。
第二种,安卓设备上先安装termux,然后在termux上安装,再在安装标准版Linux。
第三种,安卓设备上运行deploy,然后在deploy中运行标准版Linux。这种方法利用的类似虚拟机技术,然后在虚拟机里运行标准版Linux。
第四种,手机或平板、电视盒子上安装终端模拟器-Android Terminal Emulator、busybox,bootscript.sh。通过脚本运行。
1、你把你的安卓系统ROOT。 2、在你的安卓系统中安装Better Terminal Emulator Pro 3、在Better Terminal Emulator Pro 就跟你在LINUX中一样的操作,所有的LINUX命令都支持
移植toolbox到普通Linux系统中
toolbox是Android中专用的busybox,从嵌入式Linux转过来都会大大地吐槽功能简陋。但实质上也有很多特有的很好用的功能。比如getevent命令来调试所有的输入事件。已经静态编译出来了(下载地址:toolbox 静态编译),这里记录一下移植过程。
原本以为会很难,所以一直放很久才开始做,最终很简单,只需要稍加修改Android.mk就可以编译出一个静态链接的toolbox。以下diff文件就是改动信息。
diff --git a/system/core/toolbox/Android.mk b/system/core/toolbox/Android.mk
index 086ba0d..d5aef3b 100755
--- a/system/core/toolbox/Android.mk
+++ b/system/core/toolbox/Android.mk
@@ -91,6 +91,7 @@ LOCAL_SRC_FILES := \
grep/grep.c grep/fastgrep.c grep/file.c grep/queue.c grep/util.c
LOCAL_SHARED_LIBRARIES := libcutils libc libusbhost
+LOCAL_STATIC_LIBRARIES := libc libcutils
LOCAL_C_INCLUDES := bionic/libc/bionic
@@ -102,6 +103,7 @@ LOCAL_C_INCLUDES += external/libselinux/include
endif
+LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE := toolbox
# Including this will define $(intermediates).12345678910111213141516171819201234567891011121314151617181920
然后进行编译就自动编译成了静态链接的了。
$ file out/target/product/xxx/system/bin/toolbox
out/target/product/xxx/system/bin/toolbox: ELF 32-bit LSB executable, ARM, \
version 1 (SYSV), statically linked, stripped
$12341234
当然,我没有编译所有的CPU架构的,只是编译了ARMv7的,所以比较低的架构或者其它CPU可能不能直接使用,那么就自行编译吧。
完
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流