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

一.降级并刷入Armbian

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

1.降级

[降级工具]: 链接: 链接:https://share.weiyun.com/IIm18hHd 密码:uvddrh

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

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

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

adb connect 斐讯IP

adb shell reboot update

2.刷入Armbian

 

写入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

贴吧自动签到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,浏览器获取
        ''#接收签到信息邮箱
    ])

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。