0. 前言

由于新冠病毒,在家闲得慌,又想起自己想要有个服务器。正好手上有两把旧手机,一把 Mi 3,一把 Mi 4,正好可以让我来试试能不能改造成服务器。

Mi 3 和 Mi 4 的驱动是差不多的,所以找到的 Mi3 的刷机包可以给 Mi4 用,反之也可以

刚好想起来,之前有看过把手机刷成 Ubuntu 系统的视频,我就打算去找找。很巧的是,刚好被我找到了。

PS:联动、电信版可以互刷,移动版不行,移动版的用户,看到这里就可以退出去了

1. 刷入 Twrp Recovery

下载 Twrp Recovery

我这里找到了一个一键为 Mi 3/4(电信/联通) 刷入 Twrp Recovery 的工具。

百毒盘链接: https://pan.baidu.com/s/1qM9wL1EgGxGYLQuEtZbuFw 提取码: tzpt

0.1.4 版本 Google driver 链接:https://drive.google.com/file/d/1iv5q2q6Ob4PJqp5yEi_RCuC3-yd4nQEK/edit

刷入 Twrp Recovery

关闭手机,同时按住 音量下键 和 电源键,直至出现 Fastboot 的界面,连接电脑,打开工具,跟着提示刷入即可

2. 卡刷系统包

下载 Ubuntu Touch 的卡刷包

链接: https://pan.baidu.com/s/1hV1SPuZ-E69k_i55DGJBRw 提取码: sghy

建议下载 Alpha-0.1.3 的版本,因为 0.1.4 的版本,我不知道密码(笑哭)

可以下载 Alpha-0.1.4 的版本,0.1.3 的版本有时候会莫名其妙自动重启,默认密码:0000

刷入 Ubuntu Touch

先三清手机,注意这里要把 system、data 分区都清除,可以用 U盘拷贝卡刷包,手机插上 U盘来卡刷。

刷机完成后,Twrp 可能会提示「没有安装系统,确定重启?」,无需理会,直接重启

3. 基本设置

开机后,根据提示慢慢来,WiFi 我推荐链接 5Ghz 的,带宽高、延迟低。记得设置密码。

完成设置后,系统会引导你如何使用 Ubuntu Touch,记得学习,不然下面的三个按键是用不了的

PS:以下操作建议使用蓝牙鼠标、键盘

先输入这个命令,开启系统可写模式

mount -o remount,rw /

修改软件源

默认的软件源的速度十分感人,我这里将软件源修改为阿里源

打开手机 终端,输入你设置的密码,之后再输入以下命令

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 要让备份成为一种好习惯
sudo nano /etc/apt/sources.list
# 为什么不用 vim,因为系统没有。。。

然后复制以下内容,粘贴即可

# 阿里源
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial main restricted
deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial main restricted
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main restricted
deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main restricted
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial universe
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-updates universe
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-security main restricted
deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-security main restricted
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe
deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-security universe

键入“Ctrl+o”,回车保存

安装 ssh

Ubuntu Touch 的系统好像自带 ssh,但是并没有开启,我们这里手动开启一下

sudo setprop persist.service.ssh true
# 开启 ssh 自启动
mkdir -pm700 ~/.ssh
# 建立存放公钥的文件夹

然后使用 ip addr 查看一下手机的 ip 地址,也可以进入路由器界面查看。我的 Mi4 的内网 ip 地址是192.168.3.26

在输入以下命令

nc -l 1234 > ~/.ssh/authorized_keys

这时候我们回到计算机上面,建议使用 Linux 或者 MacOS 系统

打开终端,输入

ssh-keygen

一路回车,直到输入私钥密码的那里,输入自己想要设置的密码

然后输入

nc <你手机的局域网IP地址> 1234 < ~/.ssh/id_rsa.pub

比如我的命令就是这样的

nc 192.168.3.26 1234 < ~/.ssh/id_rsa.pub

回到手机,键入

sudo nano /etc/ssh/sshd_config

修改一下一些设置,去掉这一项前的 #

# AuthorizedKeysFile      %h/.ssh/authorized_keys

接下来的设置是可选的,可以一定程度上提升 ssh 的连接速度

将这几项

# GSSAPIAuthentication no
# GSSAPICleanupCredentials yes

修改为

GSSAPIAuthentication no
GSSAPICleanupCredentials no

然后在配置文件的底部添加

UseDNS no

键入“Ctrl+o”,按照提示回车保存

设置 apt

不知什么原因,使用 apt-get update 会提示 系统上的沙箱用户'_apt'不存在 ,历经千辛万苦地 Google,终于找到了解决办法,输入以下命令即可

sudo su
adduser --force-badname --system --home /nonexistent  --no-create-home --quiet _apt || true

设置 DNS(可选)

自带的 DNS 确实有点。。。所以我打算换一下 DNS,又因为 Ubuntu16.04 之后的系统不能直接修改 DNS,要用以下命令

sudo vim /etc/resolvconf/resolv.conf.d/base

添加以下内容

nameserver 119.29.29.29
nameserver 114.114.114.114
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 8.8.8.8
nameserver 8.8.4.4

增加系统分区大小

默认的系统分区大小只有 2GB,完全不够我们使用,这里我们使用这个命令来增加分区大小

sudo su
cd /home
wget https://github.com/KDE/plasma-phone-dev-setup/raw/cce4f0dfe403b871a204bf8277501d15da53cec0/usr/bin/resize-root-partition -O resize.sh
chmod +x resize.sh
./resize.sh

等待运行完毕,分区扩容就完成了

完成

Mi3/4 的 Ubuntu Touch 系统安装到这里差不多就结束了。我们可以通过 ssh 连接,在上面运行一些程序,比如:Minecraft服务器、网站……但是由于系统内核版本过低,运行不了 Docker。

至于你们要怎么用,那就由你们决定啦

参考资料

手机变PC的第二步:给Ubuntu Touch安装桌面软件:https://www.ithome.com/html/android/346068.htm

什么是我系统上的沙箱用户’_apt’:http://www.kbase101.com/question/4888.html

Set DNS settings Ubuntu Touch:https://askubuntu.com/questions/603465/set-dns-settings-ubuntu-touch

How to get a larger root partition on Touch:https://askubuntu.com/questions/514913/how-to-get-a-larger-root-partition-on-touch

Github – resize-root-partition脚本:https://github.com/KDE/plasma-phone-dev-setup/blob/cce4f0dfe403b871a204bf8277501d15da53cec0/usr/bin/resize-root-partition