因为现在有一台旧手机放在学校,之前使用的软路由内存只有128M,不方便存一些小的数据.

手机的好处是可以一直开着,因此在手机上安装linux来替代树莓派做服务器是可行的(由于不需要对外,所以也不用购买服务器).

安装linux

首先安装busybox

1.对于busybox,进入左上角settings,设置install path为/system/xbin即可,随后点击右下角install安装

安装linux deploy

1.在你手机目录中,创建一个叫data和data/env的文件夹(其他亦可).

2.对于linux deploy,左上角设置path变量为/system/xbin

3.对于linux deploy,右下角设置 linux系统(这里我用ubuntu),安装路径为/sdcard/data/linux.img,镜像大小为16384 or 8192

4.对于linux deploy,设置挂载点,并挂载source:/sdcard/data/env,target:/mnt/env;设置启用ssh

6.点击右上角安装并等待出现 <<< deploy

7.点击左下角启动,开启linux系统

配置jupyterlab

安装python,pip以及编译环境

#安装python3和python的编译依赖

sudo apt-get install software-properties-common

sudo apt-get install python-pip python3-pip python-dev build-essential python-setuptools

sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

#换pip源为清华源

mkdir ~/.pip

cat > ~/.pip/pip.conf

[global]

index-url = https://pypi.tuna.tsinghua.edu.cn/simple

#最新的ubuntu版本pip指向的是pip3,如果你是其他系统,建议用pip3安装

pip install --user --upgrade pip

pip install jupyter jupyterlab

配置jupyterlab

#进入ipython,设置密码

ipython3

from notebook.auth import passwd

passwd()

Enter password:

Verify password:

Out[2]: argon2:.... #保存它,之后配置会用到

jupyter lab --generate-config

vim /root/.jupyter/jupyter_notebook_config.py #如果没装vim先装vim,自带的vi有点问题

#更改如下内容

c.NotebookApp.ip = '*'

c.NotebookApp.password = 'argon2:...'

c.NotebookApp.open_browser=False

c.NotebookApp.allow_root = True

c.NotebookApp.allow_remote_access = True

#启动jupyterlab

cd /mnt/env

nohup jupyter lab &

配置mysql

这里一开始会遇到一些问题,比如debian系会要求安装mariadb,ubuntu最新版会在安装时候卡住(cent不会,但是python有点问题)

sudo apt-get update

sudo apt-get install mysql-server

#安装时会报错,提示dkpg failed configure,加入这句话后重新运行

usermod -a -G aid_inet,aid_net_raw mysql

sudo apt-get install mysql-server

sudo service mysql start

mysql -u root -p #应该可以看见正常的mysql提示了

后记

这里主要出现的问题是以下几个:

我在哪里输入这些命令?

如果有juicessh就在手机上打;如果在同一个局域网下,通过terminal ssh@root 即可.

jupyter lab 也可以通过局域网ip进行访问.

df -h后,block太小导致有些程序安一半安不上去了.

这里我将镜像安装在存储里,因为有32G,所以给了16G用于安装,可以看到效果还是不错的.

内存不够

这里可以增加swap空间,我调小了mysql的内存,所以没有额外增加swap.