用N1搭建家用NAS
久闻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详细请参照菜鸟教程
贴吧自动签到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,浏览器获取
''#接收签到信息邮箱
])
本文参考链接