一、开篇
- 斐讯N1盒子作为一款矿渣玩法众多,比较常见的玩法:给它刷入OpenWrt系统做旁路由,提供特殊服务;刷入电视盒子系统,搭配一个遥控器做电视盒子;刷入游戏系统,当作一台游戏机;跑PCDN等等
- 今天的教程是准备把Armbian系统刷入N1盒子,让它来扮演一个家庭服务器的角色。服务器需要一个运行稳定的系统,而armbian系统可以看做是运行在Arm架构机器上的Debian系统,最大的特点是其作为底层系统运行起来还是比较稳定的。
- 在armbian系统上,可以根据自己的需求部署相应的服务——简单举例——我们可以部署:私人笔记服务、轻NAS服务、相册服务、去广告服务、旁路由(特殊服务)、挂载各大网盘、家庭智能控制服务……
- 将N1盒子刷成电视盒子系统并开启优先从USB启动的步骤在这里就省略了,网上的教程比较多,这里直接进入刷写armbian系统的步骤。
二、准备工具
- 8G空间以上的U盘,用来写入并启动armbian系统
- 软件:Rufus或者BalenaEtcher
- 固件:armbian固件(以bullseye版本为例)
三、写入U盘,从U盘启动armbian系统
- 用写盘软件把armbian固件写入U盘(提前备份U盘资料)
- 写盘完成后,将U盘插入N1盒子USB口。
提醒一下,罗嗦几句:
比较常见的情况是,在我们给N1盒子激活从U盘启动时,此时N1盒子是电视盒子系统——AndroidTV系统,如果在电视盒子系统开机状态下已经把写完armbian系统U盘插入N1盒子,AndroidTV系统会对U盘目录、文件予以读取甚至权限更改。简单说,会影响armbian系统设置。
如果第一次激活N1盒子从U盘启动,为了避免以上情况。
我能想到的是三种途径:
(1)如果在插着U盘的情况下激活从U盘启动,等着从U盘成功启动armbian系统后,为了万无一失,再断电重刷一遍U盘,重新写入一遍armbian系统。
(2) 如果在插着U盘的情况下激活从U盘启动,准备两个刷好armbian系统的U盘,第一个启动成功后,断电换第二个U盘重启。
(3) 在激活N1盒子U盘启动时,不要插入U盘,等激活N1盒子命令行界面提示激活成功后,等1-2秒,马上插入刷好系统的U盘。
四、将系统写入EMMC&前期设置
N1盒子连接网线,开机。使用MobaXterm 连接登录armbian系统
1. 设置root密码、普通用户密码、语言时区设置等等
2. 写入EMMC
(1)输入命令进入写盘程序:armbian-install
(2)型号选择 N1
(3)等待刷写完成,输入poweroff
关机
(4)拔掉U盘,插入移动硬盘,重新插电重启N1,用MobaXterm重新连接登录armbian
3. 更换软件源
(1)输入 nano /etc/apt/sources.list
编辑,用#将旧源注释掉或者干脆用新源覆盖掉(以清华大学源为例)
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main contrib non-free
按Ctrl+X保存退出
(2)新源测试,退出后可用apt update
测试是否可以更新成功,如成功后可再执行apt upgrade -y
升级
4. 挂载移动硬盘
(1)格式化移动硬盘
注:armbian系统可直接挂载ntfs格式的硬盘,想挂载现有的移动硬盘可以不执行以下格式化的步骤
- 输入
lsblk
查看硬盘设备,比如设备识别为dev/sda
#格式化移动硬盘
mkfs.ext4 /dev/sda
# 创建挂载点 /mnt/usb1
mkdir /mnt/usb1
# 把移动硬盘挂载至挂载点/mnt/usb1
mount /dev/sda /mnt/usb1
- 完成后可输入
lsblk
检验一下
(2)设置开机启动自动挂载移动硬盘
sed -i '/exit 0/i\mount -v /dev/sda /mnt/usb1' /etc/rc.local
5. 安装、设置samba(为了方便在PC管理移动硬盘内容)
# 安装samba
apt install samba
# 编辑samba配置文件
nano /etc/samba/smb.conf
一拉到底,在最底部添加以下内容
[usb1]
是显示的共享名字,path = /mnt/usb1
是准备共享出来的目录
[usb1]
comment = myshare
path = /mnt/usb1
writable = yes
create mask = 0755
directory mask = 0755
设置完,Ctrl+X退出确认
创建samba的用户和密码:
touch /etc/samba/smbpasswd
smbpasswd -a root
重启服务
service smbd restart
五、安装docker、迁移docker根目录至外挂的硬盘
- N1盒子自身带的 8G ROM太小了,可能部署几个docker后就空间告紧了,所以把docker根目录迁移到外挂的硬盘。
1. 安装docker
通过输入armbian-software
命令安装docker,然后输入101,自动化安装。选择镜像源时,可先选择默认的官方源地址,无关紧要,因为后面也有改为国内源的步骤
2. 迁移docker至外挂的硬盘
(1)停止docker
service docker stop
(2)迁移docker数据
在外挂硬盘创建目录
mkdir /mnt/usb1/docker -p
(3)拷贝相关数据
cp /var/lib/docker/* /mnt/usb1/docker -rpvb
mv /var/lib/docker/ /var/lib/docker.bak
(4)创建软链接
ln -s /mnt/usb1/docker /var/lib
(5)启动
systemctl daemon-reload
service docker restart
(6)验证
docker info
在列出的信息界面中的后面看到以下有以下信息,即迁移成功
Docker Root Dir: /mnt/usb1/docker
3. 更换docker源
创建或修改nano /etc/docker/daemon.json文件
nano /etc/docker/daemon.json
替换为以下内容
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://cr.console.aliyun.com",
"https://mirror.ccs.tencentyun.com"
]
}
重启docker服务使配置生效:
systemctl daemon-reload
systemctl restart docker.service
4. 安装汉化版Portainer,方便管理docker项目
docker run -d \
--name=portainer-zh \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always \
6053537/portainer-ce
六、举例:部署部分docker服务
- alist--网盘神器(用
armbian-software
选择对应编号自动化安装) - kodbox--可道云(用
armbian-software
选择对应编号自动化安 - qinglong--青龙面板(用
armbian-software
选择对应编号自动化安 - wiznote--为知笔记(私人笔记服务器,需手动添加容器,但占用RAM比较大,不太推荐在N1盒子部署)
七、特殊服务&LXC OpenWrt
在这里提供两种方式,第一种比较简单但涉及敏感词,部署成功后,n1盒子也会扮演一个透明网关。第二种是部署LXC容器版的openwrt,作为单网口旁路由与物理机几乎没区别。
1. ShellCr**h(此处省略)
export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && bash /tmp/install.sh && source /etc/profile &> /dev/null
2. lxc openwrt
修改宿主机armbian系统网络配置
nano /etc/network/interfaces
替换为以下内容
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
dns-nameservers 223.5.5.5
auto vmbr0
iface vmbr0 inet static
address 10.10.10.66/24 # 根据自己的网络设定自行修改
gateway 10.10.10.1 # 根据自己的网络设定自行修改
bridge-ports eth0
bridge-stp off
bridge-fd 0
停用NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
重启网络服务
/etc/init.d/networking restart
注:完成这一步后,可以在命令行输入ip a
命令查看所有网卡信息,确保里面有一个名称为vmbr0
,即刚刚创建的虚拟桥接网卡的名字。如果没有,有可能是设置的ip与其他设备冲突了。当然有条件的在这一步可以粗暴地重启一下n1主机,再去查看一下。如果没有这个网卡,说明没有创建成功,后面启动lxc openwrt容器时也会报错。
安装lxc
apt install lxc
3. 上传LXC openwrt模板,修改LXC openwrt环境配置文件
- 在 /var/lib/lxc 路径下创建名为“openwrt”的目录(openwrt该名字可以自定义,后期将是lxc 容器的名字)
mkdir /var/lib/lxc/openwrt
- 接着在openwrt目录下创建名为rootfs的目录
mkdir /var/lib/lxc/openwrt/rootfs
4. 通过MobaXterm将下载好的lxc openwrt模板上传到 rootfs 目录下
- 解压模板
cd /var/lib/lxc/openwrt/rootfs
tar -zxvf rootfs.tar.gz
- 在
openwrt
目录下创建并修改config文件
nano /var/lib/lxc/openwrt/config
- 添加以下内容
# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.arch = aarch64
# Container specific configuration
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
lxc.rootfs.path = dir:/var/lib/lxc/openwrt/rootfs
lxc.uts.name = openwrt
# Network configuration eth0
lxc.net.0.type = veth
lxc.net.0.link = vmbr0
lxc.net.0.flags = up
# PPPoe 根据自身需求决定是否添加该项
lxc.cgroup2.devices.allow = c 108:0 rwm
lxc.mount.entry = /dev/ppp dev/ppp none bind,create=file
# TUN 根据自身需求决定是否添加该项
lxc.cgroup2.devices.allow = c 10:200 rwm
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file
Ctrl+X保存退出
5. 启动并完善LXC容器中的openwrt设置
- 启动lxc-openwrt:
lxc-start openwrt
- 进入openwrt命令界面:
lxc-attach openwrt
- 修改openwrt lan口ip:
nano /etc/config/network
- 重启openwrt网络服务:
/etc/init.d/network restart
修改好ip后,即可登录OpenWrt后台
6. 修改umount配置,防止关闭lxc openwrt后再次手动启动时报错
nano /etc/rc.d/K90umount # 该命令在LXC OpenWrt容器的命令行输入,非宿主机命令行
在编辑界面中去掉里面的 -r,保存退出
- 退出LXC openwrt容器的命令行界面:
exit
7. 为lxc openwrt配置自动启动
- 编辑配置文件:
nano /var/lib/lxc/openwrt/config
- 在配置文件中添加:
lxc.start.auto = 1
,保存退出
八、安装PVE
说在前面
- 安装PVE的优缺点:最大的的优点是有一个交互界面,方便创建、管理LXC项目;缺点是PVE自身占用的RAM空间有600MB-700MB,N1盒子安装完armbian系统后可用RAM为1.76G,如果再运行几个docker、LXC容器,RAM空间会吃紧。
个人观点:总体上不太建议在N1盒子上安装PVE。 - 当然也可根据自己实际情况进行斟酌
- 安装方法比较简单,通过系统内置的
armbian-soft
命令安装,选择308
安装过程中一般有两项需要确认:1.主机名称(保持默认即可);2.弹出一个窗口后,选第一个。
然后是比较漫长的安装过程。
默认登陆账户和密码即armbian系统的root账户及密码。
在此感谢网上各位大佬们无私放出的各类教程:
1.https://molezz.net/n1-debian-ubuntu-lxc-openwrt
2.https://github.com/cooip-jm/About-openwrt/wiki
3.https://www.right.com.cn/forum/thread-8253409-1-1.html
4.https://blog.8086k.cn/archives/88/