老 Android 手机装 Ubunt

发布时间:2019-10-15 09:04:18编辑:auto阅读(2006)

    老 Android 手机装 Ubuntu 用做 低功耗服务器

    作 zuō

    最近寻思着弄一台低功耗 linux 服务器用,只运行一些小程序,例如 Python 写的爬虫或者定时任务。网上看了一圈,什么树莓派呀啥的,一套下来要两三百了,有点不划算。突然想到我还有一个小米3触控不灵,闲置着。看了一下它的配置,ac 的 wifi + 2.3GHz 的 cpu,很强啦!(比树莓派强)

    装个 Ubuntu core

    本安装方法基于开源项目 Linux on Android,该项目让你能够在安卓手机上运行很多 Linux 发行版。

    当然了本篇文章只讲解如何安装 Ubuntu 13.10 core,也就是只有命令行的版本(作为服务器,不需要图形界面,最大化性能)

    注:此方法理应适用于 android 版本大于4.3的手机,并且必须要 ROOT

    注2: 如果你这手机只用作服务器的话,在条件允许的情况下,建议你再把手机系统刷成AOSP(安卓官方开源项目,无任何捆绑、后台软件,最大限度释放你老手机的性能),

    注3?: (没想到吧,还特么有注3。。)如果你只是轻度折腾一族,强烈建议不要刷AOSP,不然中途放弃了,就不能看下面的教程了

    准备

    我们需要下载的文件有这么几个:

    文件名 作用 下载地址
    ubuntu.img Ubuntu 镜像 core 种子文件
    ubuntu.sh 安装 Ubuntu 的脚本文件 百度云 密码: td75
    androidterm.apk 能在安卓上敲命令行的应用 百度云 密码: crzy
    busybox.apk 增加更多命令行命令 百度云 密码:tizn

    当然这些我也都放在了百度盘里面,你可以打包下载 密码:tiut

    下载好后,把 androidterm.apkbusybox.apk 安装到手机上,然后在手机存储(非外置内存卡)根目录下新建一个文件夹 ubuntu ,把 ubuntu.imgubuntu.sh 都复制进去。

    安装

    准备工作都已经完成,开始安装吧!

    1. Busybox
      先打开 busybox 弹出的第一个窗口点叉关掉,然后在主界面中选择安装版本:1.26.2 或更高,安装位置选择为:/system/bin ,最后点击左下角的 Install (期间会弹出请求 ROOT 授权,请选择允许)等待安装完成即可;
    2. Androidterm
      等 Busybox 安装好后,我们就打开 Terminal(也叫 终端) 这个 App,出现在我们眼前的是命令行界面,我们键入 cd /sdcard/ubuntu 点击键盘上的回车按钮(或者是 确认),他将会切换目录到我们之前存放 ubuntu.imgubuntu.sh 的文件目录下。然后输入 su 并确定,将会切换为 ROOT 用户,接着键入 sh ./ubuntu.sh 即可开始安装 Ubuntu 了。

    安装的时候会让你输入新建的 ubuntu root 用户密码,并再次输入以确认,然后会问你是否开启 VNC 服务,我没有图形界面,则输入 n 并确定,接着他又会问你,是否开启 ssh 服务,这个必须要啊!! 输入 y 并确定,最后会问你是否将刚才的输入保存为默认,输入 y 点确定即可。

    等命令行开头的部分变成:root@localhost 时,就说明安装并启动完成啦!

    使用

    在使用前,要确保你的手机是连接了 WiFi 网络的(不然有啥用呢),然后在手机的命令行中,输入 ifconfig ,看里面能看到你手机的 IP 地址,你在其他设备上,用 root 用户 ssh 连接这个 IP 就行了!

    注意

    作为服务器,是不允许机器自动挂掉的,所以,你需要将 terminal 这个程序锁住,不让系统自动关闭它,并保持着为手机充电的状态,这样,一个自带 ups 的低功耗服务器就搭建成功了。

    后记

    长期更新,后记则是用作后期优化以及问题解决方案提供的一个板块

    - 改 ARM 专用源

    Ubuntu改源怎么操作不用这里说明了吧,下面列出两个比较快的源:

    中科大源

    deb http://mirrors.ustc.edu.cn/ubuntu-ports trusty main universe restricted multiverse 
    deb http://mirrors.ustc.edu.cn/ubuntu-ports trusty-security main universe restricted multiverse 
    deb http://mirrors.ustc.edu.cn/ubuntu-ports trusty-updates main universe restricted multiverse 
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports trusty main universe restricted multiverse 
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports trusty-security main universe restricted multiverse 
    deb-src http://mirrors.ustc.edu.cn/ubuntu-ports trusty-updates main universe restricted multiverse

    清华源

    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ trusty main universe restricted multiverse 
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ trusty-security main universe restricted multiverse 
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ trusty-updates main universe restricted multiverse 
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ trusty main universe restricted multiverse 
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ trusty-security main universe restricted multiverse 
    deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ trusty-updates main universe restricted multiverse

    - Python3 安装

    有了 Python 这服务器才像样,哈哈。

    我这里选择的是安装 Python3, 以下方式进行安装:

    # 安装 python3
    sudo apt-get install python3 
    
    # 安装 python3 对应的 pip
    sudo apt-get install python3-pip

    - crontab 任务

    应用场景:每天自动签到的爬虫程序。

    经过反复测试,好像这个版本中的crontab(通过 sudo apt-get install cron 安装)无法正常执行任务,在进程列表(ps -e | grep cron)中也看不到其踪影。所以放弃之,用 python 来解决(如果你有其他解决方法,请不惜赐教):

    下面例子是每秒打印一次 hello world 到标准输出

    hello.py

    # -*- coding: UTF-8 -*-
    import threading
    
    # 任务执行间隔时间,下面是 1s 也就每秒执行一次
    INTERVAL_TIME = 1
    
    def task():
        # 在这里写下你要执行的命令,例如打印 HelloWorld
        print('Hello World!\n')
    
    def cron():
        task()
        threading.Timer(INTERVAL_TIME, cron).start()
    
    # 调用 cron 函数,即开始任务
    cron()

    执行的话就这样:

    # 使用系统默认 python2.7 执行
    python hello.py
    
    # 使用新装的 python3 执行
    python hello.py

    我们就能看见控制台每秒都打印出字符了。

    进阶:让脚本在后台执行,_即使我们关闭当前 shell,它也执行_

    # 当然这句执行后,除了返回一个 pID 啥都没有的,如果你以后的脚本要输出信息,
    # 就只需要将信息写入指定的 log 文件中即可
    nohup python ./hello.py &

    以上命令执行后会返回一个 pID,如果你想结束这个后台程序,只需要这样

    kill 对应的pID

    如果 pID 记不得了,下面方法能帮助你:

    # 如果是用 python 执行的后台程序,就输入以下命令
    ps -e|grep python

    就能获得对应的列表,列表第一列就是 pID, kill 掉你想关的后台程序即可

    - 中文乱码

    应用场景:是个中国人就可能碰到。。。

    嗯,这个问题我现在用的方式是:不用中文?。

    理由是:

    1. 对中文输出要求不那么强烈
    2. 正则匹配中可以略过中文,牺牲一丁点性能算不了啥事儿
    3. 支持中文的话要装一大堆包,秉承能不装则不装的心态。

关键字