打造最具性价比服务器 N1-armbian

建议搭配视频观看:Youtube bilibili

0、前言

之前折腾过把 N1 刷成 armbian 桌面版,斐讯 N1、P1 安装 armbian 变身电脑主机可以当一台小电脑使用。后来觉得我没这个需求,所以就没去用它了。

现在我想把 N1 刷成 armbian 服务器版,不需要桌面环境。因为我觉得,我用小钢炮最主要也是用 docker 和 smb 而已,那这个我用 armbian 也可以实现,而且刷成 armbian 我还可以用 WiFi ,N1 就不需要放在路由器旁边了。

1、写入 U 盘

将镜像【Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img】写入 U 盘,放入 dtb【meson-gxl-s905d-phicomm-n1-xiangsm.dtb】,修改 uEnv.ini,将第一行的dtb 名字改一下。U盘做好了。xiangsm 大佬在恩山上的帖子:https://www.right.com.cn/FORUM/thread-510423-1-1.html

相关文件放在网盘:http://veger.ys168.com/ 的【盒子】文件夹中

armbian和dtb分别是什么来头,我简单说明一下:

  • armbian:直接来源于armbian的官方,armbian其实就是debian发行版为arm架构适配后的版本。也就是说,恩山论坛是没有人去改动armbian系统代码的,是非常可靠的。

  • dtb:各种品牌的盒子千千万,每个盒子使用的网卡啊、cpu芯片啊的型号千千万,armbian内核为了能够和这些外设正常工作,就要求提供一种叫做dtb的描述文件,我理解就是针对各个硬件的驱动程序。

    • 为了让斐讯N1的各个硬件可以被armbian正常调度,所以需要给斐讯N1适配一套dtb文件。
    • dtb文件需要随着内核编译,所以不同armbian内核版本必须使用配套的dtb文件。
    • 目前斐讯N1的dtb文件已经被armbian收录到官方源码库里,但是使用的时候linux负载会显示的很高,所以热心网友为armbian5.77编译了一个fix过的dtb文件。

    来自:斐讯N1 – 完美刷机Armbian教程

1.5 首次开机需注意

第一次启动,用户名 root ,密码 1234 。

登录成功后,会要求你更改密码,但是,但是,但是,需要你先输入当前的密码

(current)UNIX password:

也就是输入 1234,之后才是设置新的密码,要输入两次。

这样改好密码之后,会要求你创建一个新的用户,这里我们可以不用创建的,按 ctrl + c 取消。然后需要再登录一次。

2、启动机器,修改源

N1刷入Armbian后换软件源、安装Docker并提速【这篇文章里的源是 debian 的】

斐讯N1折腾记 - Armbian 5.77 刷入与优化【这篇有 ubuntu 和 debian 】我上面用的镜像是 ubuntu 的。

vim /etc/apt/sources.list

进来后,按 dG 就可以把里面所有的内容删除,然后按 i 就可以进入输入模式,将下面的内容粘贴进去即可。

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

改 armbian 源

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

之后我视频中是安装了 zsh ,用这个 shell 会极大提高效率。有兴趣的看另外一篇文章去安装。

最强 shell 非 zsh 莫属

3、安装 docker 与改源

其实也可以用 armbian-config 里面的功能来安装。

这里我参考的是这篇教程:N1刷入Armbian后换软件源、安装Docker并提速

curl -fsSL https://get.docker.com -o get-docker.sh

sh get-docker.sh --mirror Aliyun

使用上述命令安装会调用阿里云的镜像,安装速度较快。

之后修改 docker 镜像源

vi /etc/docker/daemon.json

粘贴下面内容

{
"storage-driver": "overlay2",
"registry-mirrors": ["https://dockerhub.azk8s.cn"]
}

重启 docker

systemctl daemon-reload

systemctl restart docker

安装 portainer

docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart always portainer/portainer

这样我们就可以在浏览器输入 IP:9000 来管理 docker 了。

关于 docker 安装 qb 、filebrowser 之类,可以观看另外一篇文章,大概修改一下即可。

N1 小钢炮系统相关

4、开机自动挂载硬盘

之后折腾开机自动挂载硬盘,参考这篇文章:https://blog.csdn.net/buxiaoxindasuile/article/details/49612867

这里我重启后,硬盘的设备名,就从 sdb 变成 sda 了,所以就重新编辑一下 fstab ,之后就可以正常挂载了。

如果还是不行,就改用 uuid 吧。

blkid /dev/sdb1

这条命令可以显示硬盘信息,里面就有 uuid,然后修改 fstab 即可。例如我就是在 fstab 最后添加这行。

UUID=0000678400004823   /media/one      ntfs    defaults        0 0

5、samba 共享

修改 apt 源 和 armbian 源 之后,再输入 armbian-config 就可以安装 samba 了。

也可以用

apt-get install samba

来安装。

关于 samba 的配置,可以看这篇文章:https://wiki.jikexueyuan.com/project/linux/samba.html

这里不要在 armbian-config 里修改,退出后用 vim 编辑 /etc/samba/smb.conf

改完重启一下

/etc/init.d/smbd restart

6、安装我家云固件的导航

这时我又想,之前我家云上面的导航好像不错,而且它也是用 armbian 修改的,那我用 N1 应该也可以用这个导航吧。于是根据乘风大佬的这篇文章:https://blog.windtech.cf/index.php/archives/10/

由于大佬的博客有时访问不了,我把导航传了一份到百度网盘中。

https://pan.baidu.com/s/1J0UYKHbEVWvmAdze_1bNIw

提取码:6666

在 armbian 上装了个导航。

将导航下载后,改名,如 1.zip

然后传到 N1 里面,apt install zip ,装一个 zip ,然后就可以解压这个压缩包。不过最好先把这个压缩包,移动到 /opt 中。也可以一开始就传到 /opt 中。

cd /opt
unzip 1.zip #会解压出来两个文件
chmod +x install_navi.sh #赋予脚本执行权限
./install_navi.sh #执行里面的安装脚本

一分多钟就可以安装完,然后在浏览器输入 N1 的 ip 就可以看到导航了。导航网页的位置在:/opt/wwwroot/navi/ ,可以自己修改里面的 index.php 。像我就自己修改了一些内容。

修改后的导航

7、Nginx 开启 ipv6

之后我将机器的 ipv6 地址绑定域名后,发现无法访问导航页面。而其它的端口是可以访问的,那难道是 nginx 的问题?查了一下,果然是因为 Nginx 没有开启 ipv6 支持导致的。开启方法如下:

vim /opt/etc/nginx/vhost/navi.conf

listen 80;
改为 listen [::]:80;

之后再重启 Nginx 即可。

/opt/sbin/nginx -s reload

8、用 rsync 备份

因为我在 N1 上面搭建了一个 typecho 博客,文件都放在 /docker/typecho 中,为了安全,我想备份 typecho 文件夹到硬盘中,可以用这个命令

rsync -av /docker/typecho /media/one/lib

rsync 使用详细可见:https://blog.csdn.net/wangjunjun2008/article/details/38658539

当然这只是手动备份,我想设置它每天自动备份,于是用 crontab -e 进入计划任务编辑,在里面添加这一行

0 2 * * * rsync -av /docker/typecho /media/one/lib

这样每天的凌晨两点,就会自动备份一次。

而且用 rsync 是增量备份,不用担心占太多空间的问题。

9、修改时区

在 armbian-config 里面改就行。

10、写入 emmc

有些教程说,直接用 nand-sata-install 这个命令,就可以把固件写入 emmc ,这样就不需要把系统刷回安卓。于是我在机器 emmc 里装的是小钢炮系统的情况下,执行这条命令,最后显示写入 emmc 成功。但是我关机,拔掉 U盘再启动,发现并不能启动……

所以我还是用之前的方法,将机器刷回安卓,再用 adb 让机器从U盘启动。之后将 ./install.sh 将系统写入 emmc 。

这里有一个其他网友的评论

线刷回安卓,再用 u 盘重刷armbian,绝对是一个干净彻底,重装armbian的好方法。而且绝对不会出现,mac地址重启变化的问题。

这里我为什么等到最后才把系统写入 emmc 呢?其实是有这样的考虑的,我现在的系统是在 U盘 中的,它是我一步一步配置好的。如果我不介意的话,是可以一直U盘里的系统的。不过U盘当系统盘会加快U盘的损耗,还是不推荐。

那么它还有另外的作用,就是备份。我现在才把系统写入emmc,之后我就可以脱离U盘使用这个系统了。但是,之后如果因为我的误操作,或者其它的原因,导致系统坏了,或者有些功能不能用了。那么这时,我可以重新插入U盘,再一次将U盘中的系统写入emmc。

然后,可能有人会觉得,这样我的U盘岂不是,不能用来干其它事情了?因为里面存放着一个系统。那有没有什么办法,把里面的系统备份到电脑呢?

答案是有的。此时将U盘插入电脑,然后再打开【USB image tool】,但是这次我们不是把 img 写入U盘,而是用它,把U盘中的系统,导出为 img 文件。点击右下角的 backup 就可以备份,你的U盘有多大,备份出来的文件就有多大。

备份U盘中的系统

那么这样你就可以那U盘去干其它的事情了。而之后如果你有需要,就将刚才的备份的 img 文件,再次写入 U盘即可。

11、中文乱码问题

此时在终端中,无法显示和输入中文。解决方案来自 这篇文章

vi /etc/environment

将最后一行改为

LC_ALL="en_US.utf-8"

之后重新连接 ssh 应该就可以了。

12、关于终端中的代理

运行 Python 脚本需要依赖一些模块,那么就需要用到 pip

apt install python3-pip

然后就可以用 pip3 来安装模块了,比如

pip3 install requests

不过由于国内的网络环境,你不一定能成功装上。这时可能就需要用代理了,如果你的电脑有开小飞机的话,那么可以设置 N1 通过电脑来代理访问。

url=http://192.168.1.2:1080
export http_proxy=$url; export https_proxy=$url

假设电脑的 ip 是 192.168.1.2 ,通过执行这两行命令之后,http https 的访问就会通过电脑的代理。例如 pip 安装模块,不用代理我根本没法安装成功,有时候 github clone 也一样,唉~

不可详讲。。。


相关文件的下载链接放在网盘:http://veger.ys168.com/ 的【盒子】文件夹中。

可能看完又有人要问,哪里可以买 N1 ?那一般就论坛买二手,拼多多买全新。这里分享一下论坛网友买 N1 的心得。

N1精打细算购买法

总之想省钱就多上论坛逛逛吧。然后我看有些店,原系统和小钢炮系统居然相差20多块,确实有点坑。不过现在卖的 N1 很多都是黑色版的,不知道区别大不大,要买得先去了解一下。