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

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 点了,所以我打算先去睡个觉,晚(早)安各位。

—— 完 ——

11633 次点击
所在节点    程序员
62 条回复
mostkia
2019-02-01 10:35:41 +08:00
@jookr 国内机房普遍都有白名单机制,会过滤进入 80 端口的所有流量,如果不在白名单的话,拦截的拦截(直接报错),跳转的跳转(强制转到备案提示页面),流量不会到达你的 nginx 或者 apache 服务器上,所以你自己服务器上的跳转规则是不生效的,但好在主机商一般不会拦截 443 端口(人家也是要恰饭的,一般都睁一只眼闭一只眼),所以直接访问 443 端口是可行的,但回到主题,如果想要从 80 直接跳转到 443,那是做不到的(因为刚刚说了,请求没有到你的服务器就被处分掉了,所以你的规则不生效)。除非上 HSTS 在浏览器阶段就自动跳转,那是可行的。
liyunbo
2019-02-01 13:39:06 +08:00
哇 大佬,我用电脑搭建网站还有点费劲,大佬已经在手机上搭建成功,另外我在家的电脑上搭建网站,只能用端口映射,比如 www.baidu.com:8814

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

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

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

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

© 2021 V2EX