前言
有台旧手机屏幕漏液了,闲置没啥用,改造下安装为linux系统做学习机使用。
个人记录
相关信息
- 设备 Redmi K40 PRO
- Linux Deploy
- Unbuntu 18.04 arm64
手机获取root权限
解BL锁
- 最近的MI系手机解BL锁都需要进开发者模式、使用小米账号插卡绑定设备等待7天解锁。
- 使用天玑处理器的部分手机或发布手机较久的手机可以使用UnLockTool碰碰运气,需要后缀带有Unlock BootLoader字样的才能暴力破解。
- 使用其他品牌手机的小伙伴可以去自行搜索教程。(建议酷安APP的教程区自取)。
- redmi k40 pro不可暴力破解,直接老实等7天。
- 下载小米官方解BL锁工具,链接USB线就可以解除BL锁了。
解锁后状态如下
刷入Magisk
这一步也是直接跟网上教程来的
参考教程 magisk中文网
大致流程如下
以下内容复制自 magisk中文网
-
小米解锁 Bootloader:Xiaomi-unlock
如果你的手机不能解锁BL,推荐 光速虚拟机(不用解锁BL也可以体验ROOT) -
下载系统包:rom(一定要下载和手机系统版本一致的系统包)
-
提取 boot.img :payload-dumper-go-boot(如果系统包有 boot.img,可以跳过此步骤)
-
手机插电脑,文件传输模式,复制 boot.img 到手机 Download 目录
-
手机下载 Magisk APP 安装:Magisk-download
-
打开Magisk,①:安装 – ②:选择 boot.img – ③:开始修补文件 – ④:修补完成(修补生成 magisk_patched-xxx.img 文件在 Download 目录)
-
电脑下载 adb-fastboot:蓝奏盘(解压出来)
-
手机插电脑,打开 文件传输 模式,打开 Download 目录,把 magisk.img 复制到电脑 adb-fastboot 目录
-
手机进入 Bootloader 模式,再插入电脑。(手机关机,电源键+音量下键,两个键长按)
-
打开“打开CMD命令行.bat”,输入下面的命令
magisk.img每次修补的名字都不一样,使用的时候请输入生成的名字。fastboot flash boot 面具文件
-
显示下面这三行代码,就是成功刷入了。再使用指令
fastboot reboot
重启手机。Sending 'boot' (131072 KB) OKAY [ 3.105s] Writing 'boot' OKAY [ 0.404s] Finished. Total time: 3.556s
-
重启手机(开机有震动基本没问题了)耐心等手机开机。(显示Magisk的版本,就是刷好了的)
刷入成功后显示
安装软件并部署系统
Linux Deploy APP安装
linux deploy 通过chroot的方式来执行linux系统,类似于Docker,所以在使用之前请确保你拥有了手机的ROOT权限
软件下载链接
- 推荐 github release
- google play商店直接搜索下载
- 其他教程的链接
下载完成后正常安装就行
安装Ubuntu系统
流程
- 点击软件左上角设置
- 开启锁定WIFI (防止断网)
- 开启CPU唤醒 (防止停机)
- 开启调试模式 (展示日志)
- 回到软件主页,右下角设置配置
- 主页右上角,点击安装,耐心等待系统安装
- 安装成功后底部点击三角启动即可
镜像源
官网下载的地址通常由于网络问题下载较慢,推荐使用阿里镜像源
镜像地址,手机都是arm64(arrch 64)架构,注意不要下错,否则无法启动
- Ubuntu安装源(ubuntu-releases):https://mirrors.aliyun.com/ubuntu-releases/
- Ubuntu ARM源(ubuntu-ports): https://mirrors.aliyun.com/ubuntu-ports/
其他配置
- 安装类型: 一般选镜像文件即可,有特殊需求可以选目录
- 安装路径: 默认或选择自己熟悉的位置
- 镜像大小: 20G够用, 也可以一步到位分配50G
- 本地化: 选择中文zh_CN.UTF-8 或者选择英文(影响命令展示语言,选中文其实也没多大用)
- 初始化系统: 勾选启用、 run-parts 和 sysv都行,推荐sysv
- 挂载: 需要虚拟机访问系统外部的资源,建议开启用于共享文件
- SSH: 开启,这东西不开还玩啥
我的配置如下
开始远程连接
获取手机的IP地址
-
确保手机和电脑在同一局域网下连接
-
登录路由器背面的管理地址
-
获取对应的IP地址
-
固定IP链接
-
我选择了mac与局域网绑定,测试了一周很稳定
-
选择你喜欢的终端连接软件
直接SSH链接
可能遇到的问题
- 无法正常输入命令,没有代码补全
sh指令不对导致,修改文件即可
akon@localhost:~$ su root
root@localhost:/home/akon# vim /etc/passwd
#修改用户名哪一行为 /bin/bash即可
akon:x:60000:60000::/home/akon:/bin/bash
安装java
jdk17 下载地址
vim /etc/profile
# 修改环境变量,设置以下值,注意替换为对应地址
# Set JAVA_HOME
export JAVA_HOME=/work/pkg/jdk-17.0.12
# Set CLASSPATH
export CLASSPATH=.:$JAVA_HOME/lib/
# Add Java to PATH
export PATH=$PATH:$JAVA_HOME/bin
# 刷新配置
source /etc/profile
# 查看是否安装成功
akon@localhost:~$ java -version
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)
安装Docker 不可行
由于linux deploy已经在chroot环境中运行了,无法套娃运行chroot,所以Docker在linux deploy中不可用,除非修改系统内核 😄
配置内网穿透
目前国内主流的内网穿透软件多用花生壳,由于没有找到花生壳arm架构的包,在这里介绍另一款内网穿透的工具
Ngork是一个全球分布的反向代理工具,它能够将本地服务器暴露到公共互联网,方便开发者进行测试和分享。ngrok通过在本地机器上建立一个隧道,将请求转发到本地服务,并将响应返回给外部用户,从而解决了传统内网穿透方式的复杂性和安全性问题。
注意 不能使用QQ邮箱注册
#下载完成后解压对应的文件
sudo tar -xvzf ~/Downloads/ngrok-v3-stable-linux-arm64.tgz -C /usr/local/bin
#输入指令查看是否安装成功
akon@localhost:~$ ngrok -v
ngrok version 3.18.4
#在ngrok官网上注册账号并获取token
#token地址 https://dashboard.ngrok.com/get-started/your-authtoken
#配置你自己的token
ngrok config add-authtoken $YOUR_AUTHTOKEN
如果你只需要用到HTTP端口的内网穿透,此时已经可以使用了。
使用TCP服务
使用TCP服务需要绑定付款方式,不过不用担心,免费额度包含一个TCP的链接
绑定完账户就可以开启远程服务了
#常用指令如下
#暴露http 80端口
ngrok http 80 # secure public URL for port 80 web server
#暴露端口并绑定域名 需要付费
ngrok http --url baz.ngrok.dev 8080 # port 8080 available at baz.ngrok.dev
#暴露22端口
ngrok tcp 22 # tunnel arbitrary TCP traffic to port 22
#暴露端口并鉴权访问
ngrok http 80 --oauth=google --oauth-allow-email=foo@foo.com # secure your app with oauth
#展示结果
akon@localhost:~$ ngrok tcp 22
成功启动后会出现以下界面
此时已经可以通过提供的地址tcp://0.tcp.ap.ngrok.io:13490
在公网上进行连接了
由于是外部服务,延迟大概在200ms左右。所以建议在本地使用即可