本来笔者想买一个Armbian的斐讯N1盒子来运行一些docker容器,但是突然想到有一部闲置的红米2,于是乎便寻找方法看看能否将其刷入Linux解锁更多玩法。
红米2增强版拥有2G RAM和 16G ROM 和晓龙410处理器,作为手机早已过时,但是作为一台ARM服务器则绰绰有余。
关机情况下,电源键+音量减进入fastboot模式,因为红米2 发行的年代尚且不流行BL锁,所以无需考虑解锁问题。
固件下载地址:https://www.androidfilehost.com/?w=files&flid=303434
红米2有增强&标配区分,小米给红米2挺多个设备名
标配(官方4.4) 2014811、2014812…(太多不列出来了,一般201481x对于刷第三方来说没特殊区分)
增强(官方5.1) wt86047(移动)、wt88047(联通&电信)
对于标准版 下载连接中对应的wt88047的文件,
增强版下载wt86047
不知道的话,打开设置,导航到“手机信息”,并记下“型号”标题下方的型号
下载固件文件后,在miui里通过adb sideload 安装
在设备中,选择“高级”,“ADB Sideload”,然后滑动开始sideload
在电脑命令行输入如下指令
adb sideload firmware.zip
虽然小米已经给我们提供了一个默认的bootloader,但是还需要安装自定义的bootloader 来给运行linux环境提供更多硬件支持,因此需要安装lk2nd
Github项目地址:lk2nd,请在github的release页面里下载lk2nd-msm8916.img
文件(k2nd-msm8916.img)
建议安装最新版lk2nd,因为0.9版本只开放了单CPU,而0.11版之后才能开启全部四核心。
刷入lk2nd指令如下:
fastboot flash boot lk2nd-msm8916.img
fastboot reboot
没问题的话,重启后手机会显示如下的画面:
lk2nd的主界面
固件下载地址:https://images.postmarketos.org/bpo/v22.06/xiaomi-wt88047/
这里有三个ROM 随便选一个下载即可,反正最后也使用终端和手机进行交互,GUI不是很重要。
Phosh_mt88047.img
Phosh_mt88047_boot.img
重启后手机显示lk2nd界面,重新连接到电脑的fastboot,在电脑的命令行中执行如下的fastboot指令刷入ROM
fastboot flash boot phosh-18-xiaomi-wt88047-boot.img
fastboot flash userdata phosh-18-xiaomi-wt88047.img
fastboot erase system
fastboot reboot
PS1:lk2nd 0.10.0 版本之后,不需要再刷入传统的*-boot.img
文件,所以可以考虑跳过刷入该文件。
刷机完成后,重启手机,进入系统!
postmarketOS提供的默认用户名:user
密码 147147
PIN 147147
,使用该密码解锁手机即可进入系统
postmarketOS 默认不开启sshd,因此我们需要手动开启,在手机上的终端机软件中输入如下的指令:
sudo service sshd start #开启SSH Server 服务
sudo rc-update add sshd # 开机启动SSHD 服务
再说一遍sudo密码 147147
开启后手机连接到局域网就可以ssh连接到终端了
ssh user@IP地址
有需要的话可以编辑 sshd_config 文件,postmarketOS 没有预置nano vim等编辑器,所以使用vi编辑
sudo vi /etc/ssh/sshd_config
postmarketOS使用apk作为包管理
换源前首先看一下PostmarketOS的Alpine Linux版本(cat /etc/alpine-release
),目前的PostmarkOS的内核版本应该是3.16:
然后编辑源配置文件
sudo vi /etc/apk/repositories
增加源地址
http://mirrors.aliyun.com/alpine/v3.16/main
http://mirrors.aliyun.com/alpine/v3.16/community
替换源地址后,更新一下
sudo apk update
sudo apk upgrade -a
PostmarkOS默认的Bash为ash,为了更好的使用选择更熟悉的Bash作为默认终端
sudo apk add bash #安装bash
sudo vi /etc/passwd #修改默认配置
以root和user账户为例修改其默认终端
root:x:0:0:root:/root:/bin/ash
↓
root:x:0:0:root:/root:/bin/bash
user:x:10000:10000:Linux User,,,:/home/user:/bin/ash
↓
user:x:10000:10000:Linux User,,,:/home/user:/bin/bash
还有一种方式就是直接用chsh
指令
例如:
chsh -s /bin/bash
相比于vi,nano更适合新手使用,用下面的指令可以一键安装
sudo apk add nano
便可以使用nano来编辑一些系统文件
给旧手机安装linux,主要目的就是利用docker来运行各种容器。
sudo apk add docker #安装docker
sudo service docker start #启动docker服务
sudo rc-update add docker default #设置docker为自启动
根据网上的教程, postmarketOS中的docker可能会因为防火墙的原因导致docker的端口无法通过外部访问。
正确解决这个问题的手段是通过配置防火墙规则允许docker通信,但是省事的方法是鉴于手机服务器的用途,直接停用防火墙。
sudo service nftables stop
sudo rc-update del nftables
然后安装可视化图形工具Portainer看看是否能正常使用,同时作为日常管理容器的工具,
docker pull portainer/portainer
docker run -d -p 9000:9000 --restart=always --name portainer -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
sudo rc-update add crond default
停用GUI可以节省大量内存,用更多的资源来运行我们的容器等服务。
根据官网wiki上的介绍https://wiki.postmarketos.org/wiki/Phosh#Starting_Phosh
对于我们之前安装的 phosh 镜像,其GNOME图形界面的维持是靠tinydm这个图形界面管理器实现的,因此停用GUI只需要禁用该服务便能停用GUI。
sudo rc-update del tinydm
然后reboot
重启即可,大约可以节约出500MB以上的内存空间
这样开机就不会进入图形界面,卡在loading界面,过一段时间后便自动息屏。
需要恢复只需要运行
sudo rc-update add tinydm default
ModemManager用来控制移动宽带(2G/3G/4G)设备和连接,提供统一的高层API接口,类似于NetworkManager进行网络连接的移动宽带设备/连接,说白了就是可以用来管理手机卡,如果不需要插入上网卡做热点机的话,可以考虑将其停用。
sudo rc-update del modemmanager
需要恢复只需要运行下面的指令:
sudo rc-update add modemmanager default