用Linux Deploy让安卓手机成为Linux服务器
- 安卓是基于Linux的,那么是不是可以把安卓手机当服务器用呢?那么我的树莓派是不是可以丢了呢~
- 一开始想找直接将Linux系统刷到手机上,不过难度太大了而且据说很难适配,那这条路走不通了
- 那么能不能直接从安卓调用底层的Linux呢?通过查找,也不行…
- 后来发现了Termux、Linux Deploy、Aid Learning
- 经过尝试,Aid Learning感觉好像是用Termux魔改的,增加了很多东西,各方面都挺完善的,但是也因此比较臃肿,手机跑也挺吃力的
- Termux没用尝试过,但是好像说没有Linux Deploy自由度那么大,而Linux Deploy需要root才行,而且据说可以安装Docker,所以最终选了它(emm感觉被忽悠了…docker还是跑不了啊摔…不过除此之外基本上就和树莓派差不多了,而性能甚至更强)
准备
- 手机解锁bootloader(啊华为都关闭解锁通道了,还得花我8块大洋去解锁)
- 手机已root(又失去25大洋…)
- 下载安装Linux Deploy https://github.com/meefik/linuxdeploy/releases(我使用的版本是2.6.0-259)
- 下载安装Busy Box https://github.com/meefik/busybox/releases (其实这个我觉得没用,因为BusyBox我是安装失败了的,但是linux系统照样跑,但是很多教程都说需要安装,那么就先放上来好了)(安装失败可以在手机上尝试手动创建/system/xbin文件夹)
配置Linux Deploy、安装Linux系统
打开linux deploy,左上角设置,最重要的就是下面两个要勾上,其他的设置可采用默认的
然后点右下角配置要安装的linux系统
我这里以Debian为例,现在的手机一般都是arm64的,架构不要选错,不然会出现无法启动、无法ssh等各种奇怪的问题,如果安装出现问题,可以尝试选择其他arm架构进行安装,Debian默认源速度还行,就没有换国内源了
安装路径有一定要注意下,默认是
${EXTERNAL_STORAGE}/linux.img
,也就是外部储存,${ENV_DIR}
则代表本机储存,有点坑在这里,因为所谓“内部”和“外部”并不是绝对的,和手机设置的默认储存位置有关,如果手机设置默认储存为本机的话,那么${EXTERNAL_STORAGE}
其实代表的是安卓系统文件管理器能看到的目录的地址,${ENV_DIR}
代表的是安卓文件系统的内部地址,也就是root之后才能看到的那部分的目录(有点绕啊…)
总之我想表达的是,最好使用绝对路径防止路径混乱,而绝对路径是从root之后的根目录算起的
其他的配置根据自己实际情况配置即可,我给他他5G,本地化记得选,防止中文乱码,没选的话也可以进Debian进行配置
如果需要挂载sd卡可以勾上挂载,ssh则是必选的
挂载的路径要根据自己系统实际情况来填,可以用任意可root的文件管理器找到sd卡的实际路径,再复制进去,因为每种手机的路径不一定一样的
其他没提到的如VNC,根据自己需要选即可,并非必须选项
我的建议是,安装的linux系统单纯作为一个运行的容器来用,最好不要储存数据,因为镜像安装后是一个
***.img
的整体文件。然后把数据文件(如自己的java程序、python脚本等)放在sd卡中并挂载到linux容器中,这样的话,不管以后安装了多少个镜像,都不会影响到数据,比如说有两个镜像,Debian和CentOS,不管启动哪个镜像,都是使用同一个sd卡,不需要重复复制数据文件进linux系统中。
配置完毕后,回退一步,点右上角三个点的地方,安装,等待十几分钟左右,出现<<< deploy
代表安装成功,点击一下停止按钮,然后再点击启动
启动成功,注意看界面有没有出现fail
的,要留意下,我一开始安装CentOS的时候Starting extra/ssh一直都失败=。=
然后就可以用putty、xshell等ssh工具进行连接了。
至此linux系统安装成功
其他说明
如果想安装CentOS,架构记得选
aarch64
,现在手机一般都是64位了,一些老的机子可能会是armhfp
,我一开始安装CentOS的时候就选了armhfp
,结果安装完毕后一堆fail,而且也无法ssh,后来换了aarch64
就成功了。
默认源是
http://mirror.centos.org/altarch/
可以更换为国内清华源,快很多
http://chinanet.mirrors.ustc.edu.cn/centos-altarch/
如果配置的时候忘记选了本地化,会导致中文无法正常显示,可以根据下面的方式来配置
终端输入
dpkg-reconfigure locales
会出现一个表,按空格选中带zh_CN的,然后按TAB选ok,然后需要选一个作为默认,用UTF-8的就好了。因为我没有GUI,所以也没必要再装字体,这样设置中文就不会乱码了
3.如果需要安装JDK,可参考树莓派安装JDK的方式,根据自己需要选择32或者64位版本
https://blog.csdn.net/weixin_43909881/article/details/113743082
现在手机一般都是64位了,如果选错了32位的话java是运行不了的
4.如果需要在启动容器时运行程序,而不是每次都要ssh登录手动运行,那么就需要开启初始化,初始化设置中可以设置运行的路径,默认是会运行/etc/rc.local
因此我们需要编辑/etc/rc.local
,若没有此文件则需要创建并给权限chmod +777 /etc/rc.local
先编辑好要运行的脚本,如runxxx.sh
然后将下面的内容追加到/etc/rc.local
/bin/bash /xxx/runxxx.sh
这样每次启动容器后都会自动运行runxxx.sh
中的脚本
一些问题
关于Docker
结论:暂无没有解决办法
我花了大量时间在折腾Docker,没有Docker还是不太方便
尝试了在CentOS用yum安装,也尝试了Debian用apt-get安装,还有通过官方脚本安装,都无法启动docker
其中的原因是linux deploy安装的系统是运行在chroot下的,不支持一些命令,最重要的是无法使用systemctl
[root@localhost ~]# systemctl start docker
Running in chroot, ignoring request.
用service
也不行(行啊你又把球踢到了systemctl去了…)
[root@localhost ~]# service docker start
Redirecting to /bin/systemctl start docker.service
Running in chroot, ignoring request.
找了N多博客,来来去去都是那几篇而且还写得不明不白的=。=
后来找到了这个
https://www.cnblogs.com/sw-code/p/14998645.html
https://github.com/smaknsk/servicectl
有个大佬搞了个名为servicectl的来代替systemctl,试了下…
docker居然报错说docker不是用systemd来启动的,罢工…
没辙了…乖乖直接在linux上部署环境算了…不知道后面有没有办法可以解决
关于断网
结论:暂无没有解决办法
容器运行了一段时间(半天或者一天)后,会发现无法通过ssh访问了,然后点亮手机屏幕后又可以访问了,可能是因为手机的能耗策略,把网络关闭了,但是明明把所有能设置的都设置过了,如设置wifi永不断开,linux deploy设置手动管理等,还是无法解决此问题
看到过比较简单粗暴的做法就是,屏幕常亮,然后把屏幕颜色设置为黑色并调到亮度最低…(这…本强迫症表示不能忍…)
想试试写个脚本定时检测网络状况,断了就手动连上,然而本菜鸡还找不到相关命令,也不知道容器有没有权限去控制手机的wifi=。=
于是乎这个问题也只能暂时搁置了…
测试
可尝试使用此命令,将会关闭安卓应用层,同时手机会表现为像一块砖,手机未锁屏则界面卡死,手机锁屏则手机怎么按按钮都没有任何反应,但是其实此时我们安装的linux系统是可用的,随时可以用SSH登录
unchroot /system/bin/stop
如果想重新开启安卓,可执行下面的命令
unchroot /system/bin/start
或者长按手机电源键,但是这个时候其实是整个系统重启了,包括我们的Linux Deploy
因为等于没有屏幕了,所以可以用下面的命令查看电池信息
cat /sys/class/power_supply/Battery/capacity
/power_supply
后面的文件夹名不一定是/Battery
,根据自己手机实际情况修改
cat /sys/class/power_supply/Battery/status
可以查看手机是否为充电状态,/Battery
中有很多关于电池的参数可以查看
同样,网络收发数据也能在这里找到,/wlan0
根据自己实际情况修改
接收数据 cat /sys/class/net/wlan0/statistics/rx_bytes
发送数据 cat /sys/class/net/wlan0/statistics/tx_bytes
用Linux Deploy让安卓手机成为Linux服务器相关推荐
- Linux Deploy在安卓手机安装LINUX系统
准备工作 下载下列软件安装在手机上: Linux deploy https://github.com/meefik/linuxdeploy/releases Linux系统支撑软件 Busy Box ...
- 【linux deploy】安卓手机安装linux(ubuntu) 提供各种工具安装链接
网易开源镜像站:http://mirrors.163.com/ 清华大学 http://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ 中科大源 http://mi ...
- linux deploy ENV 目录,手机安装linux deploy 安装和配置
最近在淘了一款二手三星的sw-2014,正好最近正在研究智能家居.就想用它来搭建domoticz来管理,虽然手头也有一块吃灰的树莓派3b,但是觉得用树莓派搭建有点浪费,索性就用这款手机. [为什么不用 ...
- 在安卓手机安装Linux
利用Linux Deploy这个软件,我们可以在安卓手机上安装Linux系统,当嵌入式用 具体看Linux Deploy在安卓手机安装LINUX系统 手机需要root权限且 Linux deploy ...
- 手机安装linux Noroot,安卓手机安装linux,Linux Deploy 和 GNURoot Debian 的尝试
用闲置的安卓手机跑个小 Linux 服务器其实性能不一定很差,比较起内存和 cpu 核数,反而比几年前的笔记本更好(比如我已闲置的 Dell 1520). 方案主要有以下 2 种: Linux Dep ...
- 如何把你的安卓手机变成Linux?
如何把你的安卓手机变成Linux? 使用KBOX或者Limbo PC Emulator: http://www.linux-magazine.com/Online/Features/Conver ...
- 使用Linux Deploy在android手机上部署Ubuntu
使用Linux Deploy在android手机上部署Ubuntu 准备工作 一.安装BusyBox 二.使用Linux Deploy安装Ubuntu 1.修改设置 2.修改配置 3.分区安装(镜像安 ...
- Linux Deploy:在Android上部署Linux
2019独角兽企业重金招聘Python工程师标准>>> PS: 打算在家里的旧安卓手机上安装linux,之前一直尝试使用complex Linux Installer,在我的泛泰A8 ...
- 教程 | 用安卓手机搭建 web 服务器(二)—— Nginx 安装配置
上一步完成了必要的软件安装,接下来需要在 Linux 系统上安装 nginx. Nginx("engine x")是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能 ...
最新文章
- signature验证/salt验证/token验证的作用
- a different object with the same identifier value was already associated with the session:
- JavaScript 的DOM操作
- 【论文解读】CVPR 2021 妆容迁移 论文+ 代码 汇总,美得很美得很!
- 不裁员也好意思叫互联网公司?
- ANSYS入门——模态分析步骤与实例详解
- vscode的setting.json个人配置及个人常用插件
- 如何将gif动图分解成png格式?动图分解器如何使用?
- 微信小程序获取用户绑定手机号码完整版
- Alfresco文档管理系统 文档
- QQ-360大战影响恶劣
- 王欣复出后的第一款产品
- 快递业务商业计划书如何编写?
- render_template()
- 联想与戴尔台式计算机比较,戴尔台式机和联想台式机哪个好用
- Pr剪辑上分攻略 -- 文字效果
- 计算机按键会卡住,为什么电脑有时候会卡死,按键都不起作用,只能强制性关机...
- win10专业版激活(试试水)
- redisgo-ngrok实现内网穿透的管理
- 美国能限制linux内核,因故意引入漏洞,美国一所大学被禁止为 Linux 内核做贡献...
热门文章
- Minecraft 1.12.2模组开发(二十三) 霰弹枪!
- 华为鸿蒙推送更新,华为鸿蒙升级教程,快来看看你的手机可以升级吗?
- 大揭秘!“恐怖”的阿里一面,我究竟想问什么
- 在canvas上绘制3d图形
- 从200W超级闪充看iQOO 10 Pro的 “共情”能量
- Joint Learning of Deep Retrieval Model and Product Quantization based Embedding Index
- Python实现飞机大战游戏(后附完整代码文件和素材)
- 中文领域最详细的Python版CUDA入门教程
- 涉密信息系统安全保密建设探讨
- windows server 2012/2016 设置多用户远程桌面