本文将分为两个部分:
- 解读 app 设置项。
- 常见问题及解决方案。
最新版下载地址: Github 。
设置项
软件主界面分为以下几个部分:
软件主界面:用于显示回馈信息。
菜单(左上角):设置及配置文件。
菜单(右上角):快捷操作。
启动按钮:启动 chroot 及服务。
停止按钮:停止 chroot 及服务。
右下角安装选项:设置安装参数。
以下内容以 Ubuntu 为例。
发行版GNU/linux
此处选择 Ubuntu,
Centos 等 REDHAT 系发行版对 arm 架构支持差,
以及 chroot 容器内无法使用 systemctl 等命令,
建议使用 Debian 系发行版。
架构
按照本机实际情况选择架构,
主界面右上角快捷操作内的”状态”查看本机架构。
市面上主流手机 CPU 都是 arm64(armv8) 架构。
Architecture: aarch64
发行版GNU/Linux版本
选择 bionic。
源地址
使用清华等国内镜像站,
注意此处不能填写 https 协议网址。
http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/
安装类型
- 目录
推荐选择此安装方式。
/data/linux/ubuntu
将 GNU/linux 安装在一个 ext4 或 f2fs 分区的一个目录里。
安装到 linuxdeploy 的应用数据目录时卸载 app 则删除所有数据。
安装到 /data/linux 等目录时,如需删除则要停止挂载使用终端删除。
注意:安装目录请勿使用 fat32 分区的目录,以及 /sdcard/ 内部共享存储目录, 它们不支持 linux 日志文件系统。
- 镜像文件
除非 /data 剩余存储空间过小,
否则不建议选择该选项,
部分版本的 busybox 生成镜像及挂载镜像有问题。
将 GNU/linux 安装到一个镜像文件(虚拟磁盘)中。
如果你将 GNU/linux 安装到 fat32 的sd卡中请使用该选项。
安装路径为镜像文件的绝对路径默认为 /sdcard/linux.img。
镜像大小为镜像文件的大小默认为自动。
注意:镜像路径设置在 fat32 内存卡的目录下镜像大小应不大于 4096MB (fat32 文件系统文件大小限制)。
文件系统为镜像文件内要使用的分区的文件系统默认为 ext4。
镜像大小可以通过 resize2fs 指令调整。
- 分区
格式化一个分区并将 GNU/Linux 安装到里面。
安装路径为一个块设备分区文件的绝对路径默认为 /dev/block/mmcblkXpY。
如果要安装到内存卡的第一个分区请写: /dev/block/mmcblk1p1
如果要安装到otg u盘的第一个分区请写: /dev/block/sda1
文件系统格式化分区所指定的文件系统 默认为ext4。
- RAM
创建一个 ramdisk 并将 linux 安装到里面。
安装路径为 ramdisk 的挂载路径默认为 /data/local/ram。
镜像大小为 ramdisk 的大小。
ramdisk 会在关机后清除
用户名
要创建的普通账户的用户名。
用户密码
要创建的普通账户的密码。
特权用户
不要修改(会导致 app 闪退)。
DNS
指定 GNU/Linux 要使用的DNS地址:
114.114.114.114
自动在切换网络时可能遭遇障碍。
本地化
设置 GNU/Linux 要使用的本地化设置(语言设置)。
默认为 POSIX 标准英语,中文设置为:
zh_CN.UTF-8
初始化
启动 linux 时开启的服务,此处选 sysv。
-
sysv
Ubuntu 支持,
服务用update-rc.d
管理。
初始化级别为默认为 3。
初始用户默认为 root。 -
run-parts
旧版本 Centos 支持,
在启动 linux 时执行指定的脚本。
初始化路径:要执行的脚本的路径。
初始用户:要执行脚本的用户。
挂载
挂载外部目录,状态中可查看可挂载节点。
/sdcard
SSH
启用 SSH 连接方式。
端口默认22。
图形界面
此处不建议使用。
开始安装
主界面 -> 操作菜单 -> 安装
开始安装并等待安装。
安装结束后会在最后几行输出:
<<<deploy
。
先点击”停止”卸载容器,
然后点击”启动”重新挂载容器并初始化系统。
连接ssh服务
常用安卓 ssh 客户端:
- Termux
- Juicessh
填写本机 ip 或局域网 ip ,端口 22。
推荐修改为密钥连接并禁用密码连接。
备份及恢复
-
备份
主界面停止,快捷操作内导出压缩包。 -
恢复
发行版选择 rootfs,源地址填写压缩包位置,点击安装。
CLI调试
新版本中移除了 CLI 选项,
但是依然可以使用 CLI 进行调试。
设置中打开 TELNETD 服务,
JuiceSSH 快速连接中选择 Telnet 类型,
输入:127.0.0.1:5023,
连接后依次输入:
切换 root 用户
su
增加 PATH
export PATH=/data/user/0/ru.meefik.linuxdeploy/files/bin:$PATH
查看 CLI 使用说明
linuxdeploy
使用 root 身份进入 shell
linuxdeploy shell -u root
充电策略控制
将手机用作服务器后,
无用的安卓服务占据大量内存,
可停止安卓服务并使用 crontab 定时任务控制充电。
停止安卓服务:
unchroot /system/bin/stop
恢复安卓服务
unchroot /system/bin/start
创建 crontab 定时任务:
crontab -e
*/5 * * * * /usr/chargec.sh
创建脚本文件:
touch /usr/chargec.sh
chmod a+x /usr/chargec.sh
编辑充电控制脚本:
#!/bin/sh
# Android chroot charge limit controller
# author: zixijian
# website: zixijian.github.io
# co-author: Ethereal
# useage: crontab -e
# */5 * * * * /usr/chargec.sh
# define
charge=`cat /sys/class/power_supply/battery/status`
capacity=`cat /sys/class/power_supply/battery/capacity`
echo Now battery is: $charge.
echo Now battery level is: $capacity.
# set max charge current
# parameter: 800mA=800000
chmod 644 /sys/class/power_supply/battery/constant_charge_current_max
echo 800000 > /sys/class/power_supply/battery/constant_charge_current_max
# check max limit
if [ $capacity -ge 85 ]; then
# stop
echo 1 > /sys/class/power_supply/battery/input_suspend
fi
# check min limit
if [ $capacity -le 35 ]; then
# start
echo 0 > /sys/class/power_supply/battery/input_suspend
fi
红米note4x mido 充电控制文件为:
/sys/class/power_supply/battery/charging_enabled
禁止充电值为 0,开启充电值为 1。
# check max limit
if [ $capacity -ge 85 ]; then
# stop
echo 0 > /sys/class/power_supply/battery/charging_enabled
fi
# check min limit
if [ $capacity -le 35 ]; then
# start
echo 1 > /sys/class/power_supply/battery/charging_enabled
fi
常见问题
-
CLI 启动失败,无法操作内存卡(内部存储)
从外部修改 sshd 配置:
UsePAM no
修改 /root/.profile 最后一行为:
tty -s && mesg n || true
将用户加入aid_everybody
分组:
usermod -aG aid_everybody username
-
SSH 服务启动失败
常见网络问题,
可尝试更换网络环境重新安装系统,
使用 rootfs 包安装系统。
使用 CLI 调试。 -
容器挂载失败
检查 SElinux 状态,
更换 busybox 版本,
更换安装方式为目录安装。 -
MYSQL、ping 等不能使用
将用户加入aid_inet
用户组:
usermod -aG aid_inet mysql
usermod -aG aid_inet root
-
按 TAB 不能自动补全路径
修改默认 shell:
chsh
输入/bin/bash
。 -
不小心隐藏了应用图标
使用 am 调出软件主界面取消勾选。
容器内:
unchroot am start -n ru.meefik.linuxdeploy/.activity.MainActivity
容器外 shell:
su
am start -n ru.meefik.linuxdeploy/.activity.MainActivity
- 保持 cpu 唤醒不起作用
表现为操作卡顿、联网卡顿,
使用 wakelock 锁,shell 中输入:
获取 su 权限
su
保持 cpu 唤醒:
echo lock_me > /sys/power/wake_lock
解除 wakelock 锁:
echo lock_me > /sys/power/wake_unlock
注:容器内使用时命令前面加 unchroot,
对 /sys 分区操作时不需要(容器挂载了 /sys 分区)。
- Wi-Fi 进入节能模式
表现为不能全速传输,延时高。
查询节能状态
unchroot iw dev wlan0 get power_save
关闭节能模式
unchroot iw wlan0 set power_save off
END
本作品采用“CC BY-SA 4.0”进行许可。
如果你觉得本文对你有帮助,请我喝杯咖啡吧。