久闻N1大名,去年冬天入手了一台用来做电视盒子表现很不错。最近有想写博客的想法,就想再来一台用以做博客的服务器。但当N1到手后发觉没有公网IP,盒子也就只能工作在局域网,无法通过公网访问博客。所以转换思路用hexo写博客挂在GitHub Pages上也是不错的。那N1呢?没有公网IP索性就刷成Armbian,在Arm Linux上搭建家用NAS吧(顺带Linux也可以跑一些python脚本)。

一.降级并刷入Armbian

Armbian是适用与Arm平台的嵌入式Debian,是一个Arm Linux常见的硬件载体有各种pi(比如树莓派、香橙派)

1.降级

[工具原作者]: 链接: https://www.right.com.cn/forum/thread-340279-1-1.html

[降级工具]: 链接: https://pan.baidu.com/s/1sxMs5Gut4472g9vI_KGppQ 提取码: 2vgk

N1连接网络,在盒子上用鼠标连续点击版本号开启ADB,开启后打开降级工具选在2-N1降级按照提示输入相应IP,降级成功后就先不用管。如果失败就多试几次。

补充:如果没有USB双公头线,那么将无法通过webpad降级工具的功能3)触发U盘启动。

替代方法是下载adb工具,然后执行如下2个命令,即可确保支持U盘启动:

adb connect 斐讯IP

adb shell reboot update

2.刷入Armbian

[Armbian系统]: 链接: https://pan.baidu.com/s/13ogx4QHFu_V4nYdhBuIoPA 提取码: bwy4

写入U盘

降级成功后拔掉盒子电源,往U盘中写入Armbian系统,用烧录工具进行写入。写入后将

meson-gxl-s905d-phicomm-n1-xiangsm.dtb

放进U盘中dtb目录下,在dtb同级目录下修改uEnv.ini为

dtb_name=/dtb/meson-gxl-s905d-phicomm-n1-xiangsm.dtb

其余配置不用改。dtb为引导文件,引导不同的硬件配置以不同的方式启动Armbian,此处修改为N1的dtb是为了引导N1启动系统。

dtb文件作用的描述是,使用dtb可以减少linux内核版本的数量。同一份linux 内核代码可以在多个板卡上运行,每个板卡可以使用自己的dtb文件

百度dtb解释

启动并配置

然后插入U盘接通N1电源(不要在N1开机状态下插入U盘,安卓系统会往U盘里写一些东西,后会出现一些异常)插上网线,然后在windows用xshell或其它终端用ssh登陆N1的Armbian系统,登陆格式为

ssh root@ip(N1在网络下的ip,可以去路由器查看) -p 22(端口,如果不行请用ScanPort扫描出端口)

密码为1234,进去系统后会询问一次密码再次输入即可。输入后,会提示修改密码,修改即可,按照提示创建新用户照着提示做就行。

armbian-config命令进入配置

选择Personal

  • 修改时区为Asia/Chongqing或Shanghai
  • 修改Mirror为清华源,hostname可以根据自己喜好修改主机名
连接WiFi

输入nmtui配置WiFi(非必须步骤,可选),选择第二项Activate a connection进入后连接WiFi即可,若出现扫描不出WiFi可能是U盘内容出错,重新写U盘从头再做一遍。

apt换源

默认apt官方源因为一些原因速度较慢,所以换源采用清华源。输入vim /etc/apt/sources.list,更换里面内容为

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

修改apt源,输入vim /etc/apt/sources.list.d/armbian.list,修改内容为

deb https://mirrors.tuna.tsinghua.edu.cn/armbian bionic main bionic-utils bionic-desktop

之后执行

apt update
apt upgrade
写入emmc(可选)

如果不写入emmc系统会一直处于U盘中,写入的话可以脱离U盘。

nand–sata-install

命令写入U盘,完成后输入halt关机,再次开机拔掉U盘就可以正常进入系统。

其余配置

建议更换sh为zsh,apt install zsh再去下载oh-my-zsh,vim ~/.zshrc修改主题为ys

二.安装OMV并配置SMB

1.安装OMV

OMV全称OpenMediaVault,一款开源NAS系统。

SMB换句话说,就是一个围绕局域网共享存储文件或文件夹的一个服务。

SMB概念:

SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统

一条命令安装OMV5
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

安装成功后可以浏览器进入盒子IP,账户默认admin,密码默认为openmediavault。此处安装的OMV开机自动启动。

2.配置SMB

挂载U盘

共享文件夹

选择刚才挂载的U盘,填入名称自动生成文件夹,按照需求配置权限。

SMB添加共享文件夹

如图操作,选择刚才生成的共享文件夹按照需求配置权限。

至此,SMB成功。

成功后即可在局域网内管理文件。

三.配置一些定时脚本

有了SMB功能后,得益于 Linux的强大,我们可以用python写一些脚本定时执行。

若用python3执行脚本,应使用pip3安装某些可能用的包,apt下应该这样安装

sudo apt install python3-pip

pip安装成功后就可以安装一些python的包了

pip3 install numpy(包名)

crontab是Linux的定时任务,输入crontab -e即可编辑定时任务

参数列表:

  • -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
  • -r : 删除目前的时程表
  • -l : 列出目前的时程表

从左到右定时任务格式为

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

比如说我要在每天的00:00执行某个python脚本可以

crontab -e

crontab详细请参照菜鸟教程

https://www.runoob.com/linux/linux-comm-crontab.html

贴吧自动签到python脚本,签到成功发送邮件

import smtplib
import requests
import re
from email import encoders
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from datetime import date


class AutoSign:

    def __init__(self, d=[]):
        #d[0]存放cookie
        #d[1]要发送的邮箱
        m = self.signin(d[0])
        if len(d) == 2:
            mail = d[1]
            self.send2mail([
                \'\',#发送邮件的发送邮箱
                \'\',#发送邮箱的授权码
                mail
            ], m)

    def send2mail(self, s=[], m=\'\'):
        receivers = []
        sender = s[0]
        passWord = s[1]
        receivers.append(s[2])

        msg = MIMEMultipart()
        today = str(date.today())
        msg[\'Subject\'] = today+\'贴吧自动签到\'
        msg[\'From\'] = \'贴吧自动签到\'
        msg_content = m
        msg.attach(MIMEText(msg_content, \'plain\', \'utf-8\'))
        try:
            #QQsmtp服务器的端口号为465或587
            s = smtplib.SMTP_SSL("smtp.qq.com", 465)
            s.set_debuglevel(1)
            s.login(sender, passWord)
            #给receivers列表中的联系人逐个发送邮件
            for item in receivers:
                msg[\'To\'] = to = item
                s.sendmail(sender, to, msg.as_string())
                print(\'Success!\')
            s.quit()
            print("All emails have been sent over!")
        except smtplib.SMTPException as e:
            print("Falied,%s", e)

    def signin(self, cookie):
        s = \'\'
        print(\'*\' * 30 + \'百度贴吧签到小助手\' + \'*\' * 30)
        # 例如 cookie = \'xxxxxxxxxxx\'
        url = \'https://tieba.baidu.com/\'
        headers = {
            \'Cookie\': cookie,
            \'User-Agent\': \'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36\'
        }
        html = requests.get(url, headers=headers).text
        tieba = re.findall(r\'forum_name":"(.*?)"\', html)
        tieba = tieba[:int(len(tieba) / 2)]
        print(\'正在进行贴吧签到...\')
        num = 0
        k = 0
        for i in tieba:
            i = i.replace(\'\\\\\', \'\\\').encode(
                \'latin-1\').decode(\'unicode_escape\')
            url = \'http://tieba.baidu.com/sign/add\'
            form = {\'ie\': \'utf-8\',
                    \'kw\': i,  # 要签到的贴吧名
                    \'tbs\': \'9da208cc747e7b5b1519730458\'}
            html = requests.post(url, data=form, headers=headers).json()
            if html[\'no\'] == 1101:
                k += 1
                print(\'[\' + i + \'吧]:\' + \'亲,此贴吧您之前已经签过了哦!\')
                t = str(int(k/10))+str(k % 10)+\' . [ \'+i+\' 吧] : \'
                s += "{}已签,无须再签".format(t.ljust(30))
                s += \'\n\'
            if html[\'error\'] == \'\' or html[\'no\'] == 0:
                k += 1
                print(\'[\' + i + \'吧]:\' + \'签到成功!\')
                t = str(k)+\' . \t[ \'+i+\' 吧] :\t\'
                s += ("{}: 签到成功".format(t.ljust(30)))
                s += \'\n\'
                num += 1
        print(\'\n\')
        r = \'本次签到情况: \'+str(num)+" / "+str(k)
        s = r+"\n\n"+s
        # print(s)
        return s


if __name__ == \'__main__\':

    user = AutoSign([
        \'\',#贴吧账户cookie,浏览器获取
        \'\'#接收签到信息邮箱
    ])

本文参考链接

Armbian安装

Armbian配置

版权声明:本文为golem原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/golem/p/14170392.html