侧边栏壁纸
博主头像
小新笔记坊

笔耕学思悟,细绘生活卷。

  • 累计撰写 52 篇文章
  • 累计创建 23 个标签
  • 累计收到 49 条评论

目 录CONTENT

文章目录

变废为宝:将废弃安卓手机安装Linux,打造个人局域网服务器

小新笔记坊
2024-11-10 / 0 评论 / 0 点赞 / 53 阅读 / 0 字 / 正在检测是否收录...

设备信息

手机:小米6

操作系统:Android 9/MIUI 9.9.3

操作步骤

1.安装Magisk进行ROOT。

2.在软件主界面查看 Ramdisk 结果并记录。记录系统版本。

if Ramdisk 查询结果为“是”,从刷机包中提取boot.img文件
if Ramdisk 查询结果为“否”,从刷机包中提取recovery.img文件
{
if 是卡刷包,从解压的payload.bin文件里提取
if 是线刷宝,直接提取
}

3.安装刷机软件toolbox

if Ramdisk 查询结果为“是”,进入toolbox选择“基本刷入——>修补boot——>上传boot.img文件后toolbox会自动生成文件进行修补”
if Ramdisk 查询结果为“否”,进入toolbox选择“基本刷入——>修补boot——>勾选安装recovery——>上传recovery.img文件后toolbox会自动生成文件刷入”

注:可通过“toolbox——>主页”判断电脑是否成功连接fastboot,如未连接成功,重启并重新插拔数据线。

4.重启进入Magisk确认ROOT完成。

注:如提示需要修复环境,进入Magisk后选择安装,取消勾选“保留AVB 2.0/dm-verity",勾选直接安装,重启即可。

5.安装syslock验证是否成功解锁System分区。

6.安装busyboxlinuxdeploy

7.打开busybox,进入后选择install,记录busybox安装路径,一般为system/xbin

8.打开linuxdeploy,进入后选择配置,选择系统,修改源地址为国内源。

https://mirrors.aliyun.com/centos-altarch/

注:架构根据自己手机CPU架构选择,本人选择armhfp;dns本人为114.114.114.114;镜像大小代表服务器磁盘空间,一定要设置足够,本人设置45000M。

10.设置安装路径为${EXTERNAL_STORAGE}/centos/linux.img

注:如果选镜像安装,则镜像会下载在手机根目录的centos目录下。

9.启用”允许挂载Android上的资源“。今后可以通过cd /mnt/sdcard/访问手机存储文件。

sdcard
/mnt/sdcard/

10.启用ssh,电脑ssh连接手机必须将电脑和手机连接在同一局域网内。

11.选择linuxdeploy设置,PATH变量编辑为busybox的安装路径system/xbin,选择更新操作环境。

12.选择linuxdeploy右上角安装按钮,出现以下提示即为安装成功,之后选择停止卸载容器。

<<<deploy

注:如果提示retrieving package list ... fail则表示源有问题连接失败,需要换源。

13.选择启动,出现以下提示即为启动成功,电脑即可通过ssh连接。

<<<start

14.由于作为服务器长期通电开机会损伤电池,故可安卓acca充电控制软件,将充电方式改为电源适配器直流供电。

问题处理

SSH连接失败

#报错如下
starting extra/ssh fail

1.选择linuxdeploy设置,启用telnet(不勾选仅允许本地主机连接),启用HTTP,访问限制设置如下

A:192.168.2.105 D:*

注:192.168.2.105为要远程连接服务器的电脑的IP。

2.重新启动服务器后,电脑访问http://192.168.2.103:5080/

3.输入su后会进入以下路径

/data/data/ru.meefik.linuxdeploy/files

4.进入root

./bin/linuxdeploy shell -u root

5.下载国内软件仓库并启用

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-altarch-7.repo

6.清空源缓存并重新生成

sudo yum clean all
sudo yum makecache

7.如果报错提示解析不到$releasever则执行以下命令

a.手动编辑CentOS-Base.repo文件,将$releasever替换为7

#例
[base]
name=CentOS-7 - Base
baseurl=http://mirrors.aliyun.com/centos-altarch/7/os/aarch64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-altarch/7/os/aarch64/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-7 - Updates
baseurl=http://mirrors.aliyun.com/centos-altarch/7/updates/aarch64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-altarch/7/updates/aarch64/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-7 - Extras
baseurl=http://mirrors.aliyun.com/centos-altarch/7/extras/aarch64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-altarch/7/extras/aarch64/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-7 - Plus
baseurl=http://mirrors.aliyun.com/centos-altarch/7/centosplus/aarch64/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos-altarch/7/centosplus/aarch64/RPM-GPG-KEY-CentOS-7

b.清空源缓存并重新生成

sudo yum clean all
sudo yum makecache

8.安装OpenSSH服务器和客户端

sudo yum install -y openssh-server openssh-clients

9.打开sshd_config文件

sudo vi /etc/ssh/sshd_config

10.核对配置是否正确,如被#注释,请取消注释

PasswordAuthentication yes
PermitRootLogin yes
PubkeyAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes

注:esc——>输入:wq退出并保存。

11.查看ssh服务状态,并kill掉且重启ssh

ps aux | grep sshd
sudo pkill sshd
sudo /usr/sbin/sshd

12.重置root密码

echo "root:新密码" | sudo chpasswd

13.重新回到linuxdeploy,停止系统设置,关闭telnet,关闭HTTP。

14.启用SSH,重新启动系统,完成!

附CentOS-ARM架构软件下载仓库地址:https://mirrors.aliyun.com/centos-altarch/7.9.2009/os/aarch64/Packages/

注:折腾死我了,真是到处是坑,从前一天18点弄到23点,第2天中午没午休还搞了2小时Z..Z。

chroot下无法使用systemctl

1.下载servicectl-1.0.tar.gz

2.上传至任意目录,解压至/usr/local/lib/

tar -xf servicectl-1.0.tar.gz -C /usr/local/lib/
ln -s /usr/local/lib/servicectl-1.0/servicectl /usr/bin/servicectl
ln -s /usr/local/lib/servicectl-1.0/serviced /usr/bin/serviced

3.由于servicectl-1.0.tar.gz只执行/usr/lib/systemd/system/目录下的文件,故需将原/etc/systemd/system路径下的.service服务copy至/usr/lib/systemd/system/

4.执行

servicectl start 服务名

设置开机自启动

1.进入linuxdeploy设置里勾选初始化设置。

2.进入centos,编辑/etc/rc.local文件并保存,模板如下。

#!/bin/bash
touch /var/lock/subsys/local
. /etc/profile
# 以下为开机自启动后需执行的指令
servicectl start jfdk
servicectl start nginx
servicectl start music
exit 0

3.授权可执行。

chmod +x /etc/rc.d/rc.local

注:同时启动多个监听端口的服务时,linuxdeploy启动时和停止时分别要重复操作2次才行(第1次启动时会卡住)。

无权执行ping命令

#报错如下
socket: Permission denied

问题原因:这是因为Android将不同硬件的使用权限归类到了不同的用户组,而3003是关于网络权限的组,故需将CentOSROOT用户添加至3003网络权限组。

1.查找3003组在CentOS中是否存在。

getent group 3003

2.如不存在则创建该组。

groupadd -g 3003 mygroup

3.ROOT用户添加至3003组。

usermod -a -G mygroup root

4.验证是否成功添加。

groups root

5.重启服务器即可。

备份及扩充镜像空间

#报错如下
/dev/block/loop0      3.9G  3.9G     0 100% /

注:不建议使用“dd if=/dev/zero bs=1048576 count=4000 >> linux.img”或“e2fsck -f -y linux.img”等指令无损调整img镜像空间大小,容易出错导致镜像损坏或启动服务器出问题,本人亲测,血的教训。

备份

1.linuxdeploy停止服务器运行。

2.linuxdeploy选择右上角菜单选项,选择导出,会自动将备份文件导出为linux-roots.tar.gz文件。

还原

1.linuxdeploy进入右下角设置,设置信息如下:

安装类型:镜像文件

源地址:${EXTERNAL_STORAGE}/linux-roots.tar.gz

安装路径:${EXTERNAL_STORAGE}/linux.img

镜像大小:45000M

注:“${EXTERNAL_STORAGE}/linux-roots.tar.gz”指根目录下的“linux-roots.tar.gz”文件。

2.linuxdeploy选择右上角菜单选项,选择安装,linuxdeploy会自动读取源地址的备份文件并创建45000M的img镜像文件。

3.启动服务器。

扩容

思路:通过备份后重新还原时重新设置镜像大小的方式进行扩容。

安装MYSQL数据库

1.查看mariadb是否安装。

rpm -qa | grep mariadb

2.卸载mariadb

rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

注:mariadb-libs-5.5.56-2.el7.x86_64为输出的mariadb包名。

3.查看libaio是否安装。

rpm -qa | grep libaio

4.如未安装,安装libaio

yum install libaio

5.下载MYSQL

6.上传下载的MYSQL包。

7.解压MYSQL包。

tar -xvf mysql包名.el7.aarch64.rpm-bundle.tar

8.解压完成后进入MYSQL包目录。

#安装common
rpm -ivh mysql-community-common-8.0.40-1.el7.aarch64.rpm --nodeps --force
#安装libs
rpm -ivh mysql-community-libs-8.0.40-1.el7.aarch64.rpm --nodeps --force
#安装client
rpm -ivh mysql-community-client-8.0.40-1.el7.aarch64.rpm --nodeps --force
#安装server
rpm -ivh mysql-community-server-8.0.40-1.el7.aarch64.rpm --nodeps --force

注:mysql-community-common-8.0.40-1.el7.aarch64.rpm为输出的解压后的文件名,根据实际情况填写。

9.验证MYSQL是否安装成功。

rpm -qa | grep mysql

10.初始化MYSQL

mysqld --initialize;
chown root:root /var/lib/mysql -R;

12.搜索MYSQL启动服务文件。

find / -name "*mysqld.service*"

13.设置MYSQL开机自启动。将mysqld.service拷入/usr/lib/systemd/system/目录下。

14.由于是chroot模式,故需强制MYSQLroot方式启动。编辑/etc/my.cnf/usr/lib/systemd/system/mysqld.service文件,修改或添加以下代码。

User=root

15.启动MYSQL

servicectl start mysqld

16.设置MYSQL开机自启动。编辑/etc/rc.local文件并保存,模板如下。

#!/bin/bash
touch /var/lock/subsys/local
. /etc/profile
# 以下为开机自启动后需执行的指令
servicectl start mysqld

17.查看MYSQL密码。

cat /var/log/mysqld.log | grep password

18.登录验证。

mysql -uroot -p

19.进入数据库后修改密码

ALTER USER '数据库账户名'@'localhost' IDENTIFIED BY '要修改为的密码';

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin

评论区