成功用手机搭建了一个博客,分享一下辛酸曲折的安装过程

2019-01-31 03:55:11 +08:00
 KasuganoSoras

昨天发了个帖子: https://www.v2ex.com/t/531762 尝试了一下在华为畅享 8 上安装 Linux Deploy 运行 CentOS 7 ARM,然后安装 LNMP。用了几个小时的时间终于是装好了,现在正常运行中。

博客地址: https://blog.tcotp.cn/ 是一个 Hexo 的静态博客。

使用 Sakura Frp 做了内网穿透,因为是国内服务器,没有备案,请用 https 访问。

下面介绍一下安装经过,篇幅较长,慢慢看

一、刷机

之前这部手机是装电信宽带送的,送了我两部,另一部比较小拿来听歌用,这一部比较大用来备用(我平时用的是华为 Mate8 和另一部 iPhone 6s)。去年这部畅享 8 就拿到手了,当时在百度和 Google 都没有 Root 的方案,但是我花了 10 块钱上淘宝搞了个解锁码,成功把手机解锁了。

前天晚上 12 点多,无意中在华为的花粉俱乐部发现有人发了个带 Root 的 ROM,感觉不错就下载下来试着刷了一下,刷完正常开机,感觉还是 OK 的,但是很快我就发现没这么简单!主屏翻了一页以后,看到了一大堆预装软件,并且是删不掉的!这就很蛋疼了。于是我尝试用幸运破解器删除,结果发现没有作用。再次尝试使用 RE 文件管理器手动进入 /system/app/priv-app/ 删除应用,删除成功。

刚想着终于除掉了这些预装应用,可以开始玩耍了,打算重启插个手机卡。卡插上去,开机,发现卡在第一屏了,一动不动,强制重启,按住电源键 + 音量上,进入 Recovery,恢复出厂设置,格式化 Cache 分区,再开机,依然进不去。无奈只能重新刷一次机,刷完之后按照上面的步骤再次尝试删除预装应用,结果还是发生了无法开机的情况!一脸懵逼,于是我再尝试直接修改 system.img ,删除掉预装应用再刷机,结果刷完直接开不了机……服了。

再回到花粉俱乐部,寻找相关解决方案,再次发现了这个作者发的另一个刷机包,和之前那个不同的是,这个是基于 215 版本制作的,而我之前刷的是 211,抱着试一试的态度我又尝试下载了这个刷机包。刷完了以后,又准备开始卸载预装,这回我没有用手动删除文件的方法,因为我突然想起来一个好方法:adb。

连上数据线,打开 USB 调试模式,adb devices 列出设备,然后 adb shell 连接终端。这时候需要打开 SuperSU,因为不启动它的话权限申请提示框不会弹出来。回到 Shell,输入 su 提升到 root 权限,接着用幸运破解器查看想要卸载的软件包名,例如预装了个 360 安全卫士,包名是 com.qihoo360.mobilesafe,使用命令 pm uninstall -k --user 0 com.qihoo360.mobilesafe 强制卸载它,OK,卸载成功。

很快,所有预装的垃圾软件都卸载了,尝试一下重启手机,正常启动,正常进入系统。

二、安装 Linux Deploy

装完机,安装谷歌三件套,然后在 Google Play 下载 Linux Deploy。下载完后,配置容器环境,储存模式为目录,然后开始执行容器安装,安装只用了几分钟,然后点击启动,出现了几个 fail,然后尝试连接 SSH,失败。

一开始以为是架构选错了,但是查了一下畅享 8 的高通骁龙 430 是支持 Aarch64 的啊……于是换成了 armfs 再尝试安装了一次,还是失败。最后想了一下,是不是储存模式不能是目录?于是换成了镜像模式再试一次,这回成功安装和运行,全部显示 done。

三、安装 LNMP

一开始打算用 OneinStack 的,但是发现安装到一半就报错,看起来是不支持 ARM 设备。

于是打算用 yum 安装,结果发现软件版本都太老了…… PHP 版本居然还是 5.2,Nginx 还是 1.12 ,只好自己来编译了。从官网下载 PHP 源码开始编译,下载的版本是 7.3.1,首先 configure 用了两分钟,然后提示缺少 libxxxx,用 yum 命令安装,然后再执行 configure... 又提示缺少 libxxxxx... 一共执行了十几次 configure,耗时接近 40 分钟。

接着是编译 PHP,make 第一次用了二十多分钟,最后编译失败,换了个参数再次编译,用了半个多小时,编译成功。然后安装 Composer,结果发现执行 require 的时候提示要 php_zip 扩展,于是我又得去编译个 php_zip 扩展,结果编译的时候提示我需要 libzip,只能用 yum install libzip,安装完再编译又提示版本太低!!!又得去官网下载最新版的 libzip,编译的时候又提示需要 cmake !!!又去下载编译了一个 cmake ……前前后后总共用了两三个小时!

终于把 cmake 装好了,开始编译 libzip,编译成功了!接着开始编译 php_zip 扩展,结果编译失败!仔细看了看报错,再复制到 Google 搜了一下,并没有什么结果,于是看了看源码报错的地方,注释掉了两行代码,再次编译成功了(但是不知道这样会不会出什么问题)

好……我忍着终于把 Composer 装好了,然后安装 Mariadb 和 Redis,因为官方提供的二进制版本没有 ARM,只能自己编译,下载了几十 MB 的源码开始编译,耗时 1 小时 35 分钟编译完成。

配置 LNMP

由于是运行在容器里,当执行 systemctl 或者 service 类的命令时,都会提示 Running in chroot, ignore request. 这个问题是没法解决的,只能在前台运行。

于是使用 screen 将 mariadb 和 redis 放在后台运行,接着是各种蛋疼的配置,使用了 php-fpm 运行,我找了我另一台机子的 php.ini 复制过来,改一改配置就可以了。

Mariadb 我是第一次用源码编译安装,所以装的时候一脸懵逼,上 Google 找了很多安装教程,用了二十多分钟搞定了。

小插曲

我为了能够读取手机本身的文件,设置了将 / 挂载到容器的 /mnt/rootfs,结果我在容器里手贱执行了一下 chmod -R 771 /mnt/rootfs/data/*

然后……然后我发现我手机几乎所有的应用都打不开了……我慌的一批

好在系统设置还能打开,进入设置启用 adb,然后电脑链接,定位到 /data 下,执行 chmod -R 777 ./ 成功挽救。

搭建网站

一开始装了个翼龙面板,这是一个游戏管理面板,装来没啥意义,只是截图给群里那些人看看,装逼用 2333

然后就没有然后了,装完面板就是第二天的中午 12 点了,我通宵了 12 个小时!一觉醒来就到下午 6 点了,起来随便吃了点东西继续研究,然后想着搭个博客玩玩,于是装了个 Hexo,很轻松,几分钟就搭建好了。

总体而言,安卓机 Root 了以后可玩性还是很高的,特别像我这种喜欢捣鼓各种设备的人来说是最好的。各位有兴趣的话也可以试试,利用自己闲置的手机来搭个小网站之类的还是可以的。

写完这篇帖子,又快 4 点了,所以我打算先去睡个觉,晚(早)安各位。

—— 完 ——

11367 次点击
所在节点    程序员
62 条回复
dajj
2019-01-31 09:22:07 +08:00
termux 了解一下 ,简直轻松,不用 root
rus4db
2019-01-31 09:35:26 +08:00
很酷

在我看来,手机实际上就是一个带电池和蜂窝网络的树莓派
wxl1380610
2019-01-31 09:37:05 +08:00
生命在于折腾
chickplilita
2019-01-31 09:42:45 +08:00
10 块钱上淘宝搞了个解锁码
这个有没有关键词,随便搜索一家都行么
aLazarus
2019-01-31 09:42:58 +08:00
不知道三星的 Linux on dex 怎么样
imaple
2019-01-31 09:46:56 +08:00
厉害啊
fyibmsd
2019-01-31 09:49:29 +08:00
装个 termux 几分钟的事
whypool
2019-01-31 09:51:47 +08:00
linux deploy 装 debian 跑了快 1 年了,各种爬虫还有那啥图

手机是 5 年前的酷派,安卓 4.4,刷了精简版的原生 rom
RangerWolf
2019-01-31 09:54:21 +08:00
没折腾过, 问一个很弱的问题: 请问输入命令, 你是如何输入的?
RangerWolf
2019-01-31 09:54:54 +08:00
刚不小心直接发出去了, 是直接在手机屏幕上输入? 还是可以通过外接键盘输入?
CRUD
2019-01-31 09:55:50 +08:00
@RangerWolf #29 adb 电脑连接手机
Variazioni
2019-01-31 09:57:53 +08:00
666。。看到了我年轻时候的样子。。现在年纪大了。熬不动了。。
OMGZui
2019-01-31 10:02:54 +08:00
老哥,很 6,其实 docker 可以省很多事
jookr
2019-01-31 10:09:59 +08:00
1、请问你是怎么实现访问 http 跳转到 https 的呢
我见你 http 打开跳转
http://183.136.132.126/renwal.html
在源码里没有跳转的代码是怎么跳转的呢?
2、手机的 IP 是固定的?域名怎么做解析的?
Techzero
2019-01-31 10:45:26 +08:00
@jookr
1. nginx rewrite
2. ngrok 或 frp 等
yomuse
2019-01-31 10:49:48 +08:00
想起以前用小米 2 搭了个博客😁
29EtwXn6t5wgM3fD
2019-01-31 10:52:44 +08:00
arm 的还编译......二进制包性能不知道高到哪里去了
a22271001
2019-01-31 10:53:43 +08:00
这个 app 了解一下…… https://www.coolapk.com/apk/xiaoqidun.anmpp
KasuganoSoras
2019-01-31 11:26:31 +08:00
@xuanbg @hly9469 @OMGZui 因为 Linux Deploy 本身就是个容器,而容器里是无法再运行容器的……所以 Docker 不能用。
@Kazuhira #17 我用的阿里云的源,还可以吧
@chickplilita #24 直接搜索 华为解锁 就行了
@RangerWolf #29 用 JuiceSSH 软件
@jookr #34 跳转不了,所以我才说要用 https 访问,因为 http 访问会被机房拦截(不过如果你说的是 301 怎么跳转,可以用 Nginx rewrite 实现),然后外部访问是通过 Frp 内网穿透实现的。
@MKDJOJO #19 ksweb 我有,而且买了专业版,但是感觉自由度还是不够高,而且运行不了 Frp 客户端。
@shengyu #37 Mariadb 官方没有提供 ARM 的二进制包,所以只能自己编译了……
MaxSecurity
2019-01-31 11:34:31 +08:00
老哥牛逼!!这耐心杠杠的。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/532019

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX