归档 紫溪涧 关于
Linux Deploy 指南 返回首页

序号: /2020/09/01/007

本文将分为两个部分:

最新版下载地址: 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。

创建一个 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。

挂载

挂载外部目录,状态中可查看可挂载节点。

/sdcard

SSH

启用 SSH 连接方式。

端口默认22。

图形界面

此处不建议使用。

开始安装

主界面 -> 操作菜单 -> 安装

开始安装并等待安装。

安装结束后会在最后几行输出: <<<deploy

先点击”停止”卸载容器,
然后点击”启动”重新挂载容器并初始化系统。

连接ssh服务

常用安卓 ssh 客户端:

填写本机 ip 或局域网 ip ,端口 22。
推荐修改为密钥连接并禁用密码连接。

备份及恢复

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

常见问题

容器内:
unchroot am start -n ru.meefik.linuxdeploy/.activity.MainActivity

容器外 shell:
su
am start -n ru.meefik.linuxdeploy/.activity.MainActivity
获取 su 权限
su

保持 cpu 唤醒:
echo lock_me > /sys/power/wake_lock

解除 wakelock 锁:
echo lock_me > /sys/power/wake_unlock

注:容器内使用时命令前面加 unchroot,
对 /sys 分区操作时不需要(容器挂载了 /sys 分区)。
查询节能状态
unchroot iw dev wlan0 get power_save
关闭节能模式
unchroot iw wlan0 set power_save off 

END


本作品采用“CC BY-SA 4.0”进行许可。


如果你觉得本文对你有帮助,请我喝杯咖啡吧。