红米2刷PostmarketOS打造ARM服务器(完全篇)

2022-04-12 21:04:30 42点赞 228收藏 27评论

之前我关于PostmarketOS的内容是分几次完成的,其中有不少的错误和疏漏之处。为了便于感兴趣的朋友查找资料,我做了一次整理,删除了一些试错的内容。同时让内容变得更加完整,希望对于大家找资料有一定帮助。

手机安装原生Linux系统,目前最成熟的两个方案:1.Ubuntu Touch;2.PostmarketOS。

Ubuntu Touch我体验之后觉得系统做的稀烂,没有任何兴趣深入。

PostmarketOS基于Alpine Linux,支持的旧手机型号比较多。作为原生的完整Linux系统,可玩性很不错。国内最佳的刷机设备是红米2:功能支持全、没有BootLoader锁刷机简单、价格便宜刷坏不心疼。(要刷PostmarketOS,红米2必须是高通骁龙410的那款才兼容,1G+8G或2G+16G均可。不要小看这配置,论性能吊打现在溢价离谱的树莓派3B+没有任何问题)。

1.刷机

原生的安卓fastboot无法引导到Linux系统,所以刷机前手机需要刷一个ln2nd的“伪”fastboot,安装文件可以去GitHub上找。下载镜像后手机连接电脑进入fastboot模式,刷入ln2nd(关机后:音量减 + 关机键)

#fastboot flash:raw boot ln2nd.img

如果你买的是1+8G的红米,默认系统是安卓4.4,可能刷不进ln2nd。需要刷一次高配版的ROM(刷机后可以正常开机,安卓版本升级到了5.1)。

#安装必备软件
sudo apt install python3 git fastboot python3-pip
#安装pmbootstrap
pip3 install --user pmbootstrap

接下来是最重要的过程:配置pmbootstrap(建议看一下官方的文档,我这里做一个简单的配置过程介绍):

pmbootstrap init
#安装文件保存路径,默认即可
Work path
#postmarketOS发行版,默认是滚动更新版,可以选稳定版
Choose the postmarketOS release channel.
#选择手机品牌,全英文,可以在官方wiki查询红米属于xiaomi
Choose your target device vendor
#选择手机型号,官方wiki查询,红米2是wt88047
Available codenames
#是否安装驱动,默认选是
Enable this package?
#设置用户名
Username
#选择操作界面,如果是纯命令行选fbkeyboard,其余可以gnome、sxmo等
Available user interfaces
#后续的配置选择默认即可

配置完毕,输入下面的命令开始下载和打包:

pmbootstrap install

整个下载打包配置过程大概会用到1个小时左右。打包完成后手机进入ln2nd的伪fastboot模式开始准备安装(开机震动后按音量减)。

如果不通过这种方式打包,也可以直接在官网下载镜像刷机。

#查看是否正常连接
fastboot devices
#开始刷机
pmbootstrap flasher flash_rootfs
pmbootstrap flasher boot
#刷机完成
fastboot reboot

别看PostmarketOS界面简单,但比Ubuntu Touch好玩多了,SSH、Docker都可以跑起来,只是图形化界面不太流畅,但是玩Linux系统的人都知道SSH才最重要。

2.跑分

Alpine Linux下没想到Unixbench可以直接用apk包管理安装,跑分很简单:

sudo apk add unixbench
ubench whets dhry

我做了个简单的跑分,单核251(树莓派4B单核跑分也就290左右)。

红米2刷PostmarketOS打造ARM服务器(完全篇)


发现仅有单核成绩,后面查资料发现因为刷的lk2nd版本是0.9仅开启了单CPU,而刷了0.11版后的lk2nd后可以开启全核后。完整的跑分Unixbench单核233、多核926:

红米2刷PostmarketOS打造ARM服务器(完全篇)

PostmarketOS可以轻松地开启SSH,另外PostmarketOS自带USB网卡驱动,用数据线连接电脑可以直接共享电脑的网络(不需要路由器也能SSH你说放不方便),通过172.16.42.1就可以访问PostmarketOS。:

sudo rc-service sshd start
sudo rc-update add sshd

这样下来手机真的可以作为一台完全的ARM小服务器。接下来想装个zerotier组虚拟局域网,没想到官方源里直接有打包,所以说Alpine Linux真强:

#安装zerotier
apk add zerotier
#开启虚拟网卡
modprobe tun
#运行zerotier
zerotierzerotier-one -d
zerotier-cli join
#查看运行状态
zerotier-cli listnetworks
#如果运行出错,结束进程重新运行
killall -9 zerotier-one
zerotierzerotier-one -d
#让zerotier开机自启动
sudo rc-update add zerotier

部署了zerotier,这个ARM服务器就成了我诸多设备的一个node了。家庭服务器的玩法都可以如法炮制:

3.修改ash为bash

PostmarkOS默认为ash.ash我不太熟,所以改为bash顺手一点(主要是为了配置bashrc)。PostmarkOS默认已经安装了bash,如果没有的话先安装一下:

#安装bash
sudo apk add bash
#修改默认配置
sudo vim /etc/passwd

以root账户为例修改其默认sh

root:x:0:0:root:/root:/bin/ash
#把上面这行改为下面的
root:x:0:0:root:/root:/bin/bash

新建一个.bashrc文件用于配置别名,后面的例子会介绍.bashrc的用法

sudo vim .bashrc

4.局域网开机设备

Alpine Linux没有wakeonlan安装包,我下了个c语言的wakeonlan源码编译:

#解压后编译
gcc wakeonlan.c -o wol
#把编译好的文件复制到bin文件夹方便调用
cp wol /bin/wol

有wol mac地址的命令太长不好记,所以要设置别名方便远程操作,之前我已经介绍如何切换为bash且生成bashrc文件,接下来编辑它:

sudo vim /home/.bashrc
#由于我有三台主机所以添加3个别名
alias wolxzj='wol mac1'
alias wolzj='wol mac2'
alias wolbjb='wol mac3'

由于我已经安装了zerotier,所以我可以远程SSH手机,通过手机唤醒局域网内的其它设备:输入wolxzj就可以唤醒我的小主机,wolzj就可以唤醒我的主机,wolbjb就能唤醒笔记本,然后再可以分别操作这些设备。是不是很省电。

5.安装Docker

PostmarketOS可以安装docker:

sudo apk add docker
sudo service docker start
sudo rc-update add docker default

安装docker后会遇到一个问题,防火墙让docker的端口无法通过远程访问。虽然官方文档里介绍了可以通过防火墙规则允许docker通信,但我按照官方指引配置/etc/nftables.d后无效:

#!/usr/sbin/nft -f
table inet filter {
chain input {
iifname "docker*" accept comment "Allow incoming network traffic from Docker"
}

chain forward {
iifname "docker*" accept comment "Allow outgoing network traffic from Docker"
ct state {established, related} counter accept comment "accept established connections"
}
}

于是我直接关了防火墙(毕竟是个人用的也没有公网,所以关闭防火墙影响不大):

sudo service nftables stop
sudo rc-update del nftables

这下docker可以正常访问了。

由于手机CPU是ARM指令集,所以下载镜像时也要搜索ARM镜像。我安装了一个speedtest进行测速,在USB连接模式下红米2测速可以达到100兆,而在wifi连接下,测速则只有20兆:

红米2刷PostmarketOS打造ARM服务器(完全篇)

红米2的内存太小,带不起多个Docker。而且8G空间装不了几个镜像,可以考虑通过OTG拓展扩容。

6.OTG扩容

有朋友问OTG怎么解决充电问题?我还真找到一个完美解决方案。关键词“充电OTG线”,虽然介绍说仅支持平板电脑不支持安卓手机。但是事实上红米2刷PostmarketOS后可正常充电+OTG,3USB口+1个充电口的OTG线也就14元。将充电线插入OTG充电口,档位调到charge。然后插上500G硬盘和一个64GU盘,连接红米手机。

红米2刷PostmarketOS打造ARM服务器(完全篇)

红米2刷PostmarketOS打造ARM服务器(完全篇)

首先确认手机正在显示示充电,然后SSH连接红米2。由于postmarketOS不会自动挂载硬盘,所以一开始使用df -h命令看不到磁盘,需要用到lsblk命令:

红米2刷PostmarketOS打造ARM服务器(完全篇)

#查看所有硬盘用lsblk或fdisk -l
lsblk
#查看硬盘UUID
sudo blkid

可以看到500G的硬盘和64G的U盘正常识别,接下来需要挂载才能使用。记下硬盘名字,然后根据名字查看对应的UUID。创建一个目录用于挂载硬盘,然后把挂载命令写入/etc/fstab:

#创建挂载文件夹
sudo mkdir /media/twindows
#设置自动挂载
sudo vim /etc/fstab
UUID="00BC-614E" /home/sd ext4 defaults 0 0
#让挂载命令生效
sudo mount -a

注意分区格式一定要正确,如果你的硬盘是ntfs等Windows格式需要安装软件ntfs-3g。如果安装了ntfs-3g挂载命令如下:

UUID="00BC-614E" /home/sd ntfs-3g rw 0 0

挂载硬盘之后可以开启Samba共享也可以安装aria2做下载机,是不是有点像NAS了。不过红米2WIFI速度太慢所以实际表现一般。

7.aria2c下载机

有了扩容方案,这台红米2还可以作为下载机了,毕竟低功耗挂机神器。搭建下载机自然少不了aria2:

sudo apk add aria2

aria2的配置,我这个是简版:

# 保存目录
dir=/home/downloads
# 断点续传
continue=true
# 任务目录设置
input-file=/etc/aria2/aria2.session
save-session=/etc/aria2/aria2.session
# 定时保存任务
save-session-interval=60

# 启用RPC
enable-rpc=true
# 允许所有来源
rpc-allow-origin-all=true
# 允许外部访问
rpc-listen-all=true
# RPC端口,默认6800如果被占用可修改
# rpc-listen-port=6800
# 设置的RPC授权令牌
rpc-secret=password

带配置的启动aria2命令有点长,所以还是通过.bashrc设置别名解决:

sudo vim /home/.bashrc
alias runaria2='aria2c --conf-path=/etc/aria2/aria2.conf -D'

8.Samba共享

既然做下载机了肯定要开Samba共享:

sudo apk add samba
sudo rc-update add samba
sudo rc-service samba start

设置一下samba登陆用户和密码

sudo smbpasswd -a username

然后编辑samba的配置文件

sudo vim /etc/samba/smb.conf
#在share里增加想共享的路径
[share]
comment = share
path = /home
public = yes
writable = yes
printable = no
browsable = yes
valid user = username

9.安装Nginx

虽然红米2性能很弱,但这是在图形化界面的使用感受。如果是作为小服务器,其性能还是挺强的,至少搭建个人网站没问题。如果你有域名和云服务器,通过nginx部署,借用云服务上的nginx搭建反向代理功能,就可以让别人在公网访问你的网站了:

sudo apk add nginx
sudo rc-update nginx
sudo rc-service nginx start

看了这么些是不是觉得PostmarkOS麻雀虽小五脏俱全,玩法确实很多。但不得不说手机扩展性太弱是一个非常大的瓶颈,制约了更大的可能性。但也让几十块的二手手机发挥了最大的价值。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
27评论

  • 精彩
  • 最新
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 之前照着大佬的流程走了,使用过程中根目录一直满。尝试了各种拓展都不成功。有线网卡15m网络时好时坏很愁。大佬要是有解决方案可以再分享下

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 你是用来跑网心云啊? [傻笑] 我也想跑,,可是我不会弄

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 红米6pro行不行 有个闲置的虽然屏幕碎了 还能触摸

    校验提示文案

    提交
  • 有啥用,这种老设备那网速能干啥,要是支持wifi6还行

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 🐮🐝!这除了扩展差一些 其他都很棒

    校验提示文案

    提交
  • 这块硬盘看上去不错,500G在哪里买的

    校验提示文案

    提交
  • 出售ram服务器不?!

    校验提示文案

    提交
  • 字,我都认不全

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
  • 要一直插电不怕电池爆炸?

    校验提示文案

    提交
    很多手机拔电池插电也能直接用的

    校验提示文案

    提交
    收起所有回复
  • 如果能兼容树莓派的生态就好了

    校验提示文案

    提交
  • 一直想用旧手机搞个轻量nas。

    校验提示文案

    提交
  • 字我都认识,但是连在一起不知道你在说什么

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
228
扫一下,分享更方便,购买更轻松