闲置手机改造学习用linux服务器
前言
手头有好几个替换下来的手机,因为使用时候比较爱惜,替换下来时候都很好用,没有什么故障,拿去换脸盆也是心有不甘的,所以一直在抽屉中吃灰。目前想要学习python的爬虫和数据分析,想着初期找个练手的linux服务器。所以就开始打起了手机的主意,想着找个性能好的,就翻出来了一直珍藏的PH-1.
配置方面为 5.7 英寸 19:10 屏幕设计(屏幕更加狭长)
2560*1312 分辨率
搭载时下最强的高通骁龙 835 移动平台,加上 4GB 内存和 128GB 的 UFS 2.1 闪存
前置是 800 万像素,后置双 1300 万像素摄像头
电池为 3040 毫安时,支持快速充电,当然也是使用了 USB Type-C 接口,“跟紧潮流” 没有 3.5mm 耳机插口。
这个配置作为服务器应该是很可以了,毕竟linux服务器只要不开桌面,整体的系统占用都还是很少的。并且手上这个手机已经经过解锁和ROOT,调教起来还是很方便的。
开始
既然开始折腾,选择一个比较好用的安卓系统作为底层是个重要的事情,自此,坑就不断开始出现。
-
官改
首先想着是用官改,毕竟ASOP系统后台少,推送、广告都少。这里用的是紫妈的官改,安卓9,用了一段时间,发现会不断的提示有新更新,而且本地化也不是很好。应该是我这里不太会用,所以最后还是放弃了这个系统。。
-
MIUI
接着选择的是MIUI,毕竟有着“愿你刷机半生,归来仍是MIUI”的加持。事实上最后我确实归来仍是MIUI,这是后话了。首先选择的是紫妈的MIUI,安卓9,不过有好几个BUG,NFC不能用,屏幕亮码时候会闪烁多次。不过这都是个P。用了一段时间,嗯,很不错。但是不折腾怎么能行呢。
-
Flyme
看到群里有人再说bugme怎么怎么好,然后正好群里面有这个包,那还说什么,冲!刷完之后,完了,不会root了。尝试了好几次,无奈太笨拙了,所以只好忍痛放弃了。不过说实话,感觉Flyme整体上感觉会比MIUI好很多,可能是那种朴素的状态吧,屏幕显示看起来就很舒服。不过放弃了就不说了~~~~
-
魔趣
接着上场的就是魔趣了,也是一个ASOP系统,刷机也很方便,下载刷机包,网页上直接刷就好了,结果把我的TWRP都给刷没了,面具也刷不进去,root也不行。关键是长的还丑,那还能忍,直接就给舍弃了。
-
MIUI
过了一阵子,@菠萝君发布了了一个MIUI12.5,一下子就把我吸引过去了,淦,刷完之后把我丑哭了。2K屏分辨率就是高,但是一个人没额头,有个巨大无比的下巴,会怎么样,会奇丑无比。不过也没有什么了,反正我也不常看。NFC还是不能用,不过不闪屏了。凑活用吧,本地化很好。预装也不多,不过,我是想作为服务器的,启动的服务越少越好,比如查找手机、小爱同学、动态主题什么的。无法关闭启动,然后下载个冰箱把他冻住,结果发现一个冰箱占用的资源比三个自带的软件还大,然后我就放弃了。随缘吧。
环境搭建
主要是两种方式,一种是linuxdeploy,可以采用chroot的方式虚拟一个linux机器,不过也还是有很多的限制。配合busybox能实现很多,据说用起来挺稳定。还有一种是Termux,一种超级终端,可以直接运行linux命令,他的库里面也集成了很多常用的软件。用起来也是挺不错的。
- 首先还是尝试一下linuxdeploy吧,毕竟都已经root了。直接去github上去搜索,可以直接搜索到
- 接下来就是linuxdeploy,也是这个大神做得,可以直接跳转过去,也可以去github上搜索。
- APP都可以下载下来,看起来应该是没有什么问题了,不过我人品没有这么好,busybox装不上去,无论用哪个版本都装不上!!!!所以我就不装了,直接上linuxdeploy,也没什么问题,至于接下来怎么装,网上很多的教程,我也是那么装的,没啥好说的,然后呢,也就没有什么然后了。安装完成后应该如何去配置,当装不上某些东西的时候该如何去解决,我也是没有半点头绪,所以对我这种小白实在太不友好了,然后就直接劝退了。
使用Termux
Termux
Termux 是一款Android 终端模拟器和 Linux 环境应用程序,无需 root 或设置即可直接运行。自动安装最小的基本系统 - 使用 >APT 包管理器可以使用其他包。
安全的
使用来自 OpenSSH 的 ssh 客户端访问远程服务器。Termux 将标准包与准确的终端仿真结合在一个漂亮的开源解决方案中。
功能丰富
在 Bash、fish 或 Zsh 和 nano、Emacs 或 Vim 之间进行选择。Grep 通过您的 SMS 收件箱。使用 curl 访问 API 端点并使用 rsync 将联系人列表的备份存储在远程服务器上。
可定制
通过 Debian 和 Ubuntu GNU/Linux 已知的 APT 包管理系统安装您想要的。为什么不从安装 Git 和同步您的点文件开始呢?
可探索的
你有没有坐在公共汽车上想知道 tar 到底接受了哪些参数?Termux 中可用的软件包与 Mac 和 Linux 上的软件包相同 - 在您的手机上安装手册页并在一个会话中阅读它们,同时在另一个会话中进行试验。
包括电池
你能想象一个比 readline 驱动的 Python 控制台更强大、更优雅的袖珍计算器吗?Perl、Python、Ruby 和 Node.js 的最新版本均可用。
准备扩大规模
如果需要,连接蓝牙键盘并将您的设备连接到外部显示器 - Termux 支持键盘快捷键并具有完整的鼠标支持。
可修补
通过使用 Clang 编译 Go、Rust、Swift 或 C 文件进行开发,并使用 CMake 和 pkg-config 构建您自己的项目。如果遇到困难需要调试,lldb/GDB 和 strace 都可以使用。
安装过程
Termux安装过程可以参考国光大大的教程:Termux 高级终端安装使用配置教程,上面讲的是真详细啊,得重点推荐一下。
- 首先去下载安装包,建议从F-Droid下载,当然直接下载也不是不行,毕竟更新的频率也不会多高。
- 安装完成之后建议先换源,首先打开F-Droid,更新一下源,这步无法省略,更新不成功,就换手机网络多试几次吧。然后复制F-Droid的清华源
https://mirrors.tuna.tsinghua.edu.cn/fdroid/repo/?fingerprint=43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB
-
打开“设置->存储库”
-
选择“+”进行存储库的添加
-
打开后,会自动弹出添加清华源的库的提示,点击添加镜像
-
添加完成后将存储库中其他源给取消,仅保留清华源,后期更新就快的一匹。
-
如果点击后提示无法启动,就需要先使用默认的源更新一次,完成后就可以启用了,反正我这么做是成功了的。
-
安装完成后就在首页搜索Termux就好了。
-
安装这个
-
其他的都用来干嘛,国光大大说的很清楚了,可以回去看看
安装开发环境
- 首先更改Termux的源,仍旧使用清华源,不得不说,真香!!!
termux-change-repo
- 通过图形界面进行更换源,上下调整项目,空格进行选择,回车确定,选择完成后会自动换源,傻瓜式操作,不会出错!
- 然后更新系统软件
pkg update
- 安装常用软件,
pkg install vim curl wget git tree openssh -y
- 获取手机存储权限,手机会弹出提示,确定一下就好
termux-setup-storage
- 启动SSH服务,然后就可以到电脑上进行操作了,不用费劲的用手机敲了
sshd
- 添加SSH服务的开机自启,使用当前用户的.bashrc进行
echo sshd >> .bashrc
安装python环境
-
安装python3,这里有一个坑,新版本termux更新后会安装3.10版本的python,但是matplotlib没有配套的更新,此时就很尴尬,所以最好是手动安装3.9版本的 python。安装时会自动安装pip。
- 查询自己的cpu架构 <CPU_ARCH.>
uname -m
- 去下载自己cpu对应的3.9版本python,我这里是aarch64
wget https://cdn.jsdelivr.net/gh/Termux-pod/termux-pod@main/aarch64/python/python-3.9.7/python_3.9.7_aarch64.deb
- 手动进行安装
dpkg -i ./python_3.9.7_aarch64.deb
- 为了不让termux把3.9版本升级回去,这里还要禁止python自动升级
echo "python hold" | dpkg --set-selections
-
更新pip和setuptools
pip install --upgrade pip setuptools
- 获取超级管理员身份,因为我手机已经有root了,所以可以装两种。
- 模拟的root
pkg install proot -y
- root后的
pkg install tsu -y
安装numpy、matplotlib和jupyter notebook
- 安装numpy和scipy
pkg install numpy scipy
- 安装matplotlib的依赖
pkg install freetype clang libjpeg-turbo binutils libzmq fftw make libclang
- 安装Pillow等依赖
LDFLAGS="-L/system/lib64/" CFLAGS="-I/data/data/com.termux/files/usr/include/" pip install Pillow
- 安装matplotlib
pip install matplotlib
- 安装jupyter
pip install jupyter
安装数据库 MySQL
这里主要就是参考国光大大的安装说明,说的还是很详细的,按照操作来还是很顺畅的,没有什么坑。
-
使用termux封装好的
pkg install mariadb
-
检查版本
mysql --version
-
启动数据库,因为正常启动完成后,MySQL 这个会话就一直存活,类似与 Debug 调试一样,此时使用Ctrl + C -> 中止当前进程也无济于事,体验就一点都不优雅,所以这里使用Linux自带的nohup命令将其放到后台启动,并将记录定向到mysql.log文件中
nohup mysqld > mysql.log 2>&1 &
-
Termux 安装初始化数据库的时候包含两个高权限用户,一个是无法访问的 root 用户,另一个用户就是 Termux 的用户名,默认密码为空。这里使用默认用户来对root用户进行设置密码
- 登陆
mysql -u $(whoami)
- 修改密码
use mysql; set password for 'root'@'localhost' = password('你设置的密码');
- 刷新权限,并退出
flush privileges; quit;
- 完成后可以通过root账户进行登陆了
mysql -u root -p
-
手动开启数据库 root 用户的远程访问权限
- 登陆数据库
mysql -u root -p
- 修改配置
grant all on *.* to root@'%' identified by 'root密码' with grant option;
- 刷新权限,并退出
flush privileges; quit;
其他的设置
- 设置jupyter和mysql的启动快捷操作
vim start_jupyter.sh
nohup jupyter notebook >jupyter.log 2>&1 &vim start_mysql.sh
nohup mysqld > mysql.log 2>&1 &
- 使用时 bash start_jupyter.sh start_mysql.sh即可。
- 如果添加到.bashrc文件中会导致每次ssh登陆上去都开启一个,手机会吃不消。
- 关闭命令
kill -9 `pgrep jupyter`
kill -9 `pgrep mysql`
备份和恢复
按照国光大大的说明,直接cd到目录,然后就可以将home和usr文件进行打包备份了,但是我试了试,没有成功,后来我切换到tsu下,就没有问题了
- 切换到tsu
tsu
- cd到files目录
cd ..
- 打包home usr文件
tar -zcf /sdcard/termux-backup.tar.gz home usr
后面想要恢复的时候
- 首先切换到tsu
tsu
- 切换到Termux 根目录
cd ..
- 使用备份文件覆盖当前文件
tar -zxf /sdcard/termux-backup.tar.gz --recursive-unlink --preserve-permissions
到这里应该就已经恢复了,不过目前我没有测试过