斐讯N1

PDD上N1盒子带电源110。

电源:

盒子配的电源是12v2A。接口是5525dc线。
5525是5.5*2.5mm的意思
还有5521规格的头。内孔小一些,无法插入N1。

N1可以做如下事情。

参考

https://powersee.github.io/2020/03/n1-armbian-server/

电视盒

刷YYF ROM可以当电视盒用。必须内置刷入emmc。
http://www.yyfrom.com/cms/
http://www.yyfrom.com/cms/yyfrom/product/2021-7-3/166.html

游戏机

用U盘做个EmuELEC系统,引导N1可以变成游戏机。

Kodi

用U盘做个coreELEC系统,可以用Kodi看本地视频。

NAS

内置刷入小钢炮系统,samba文件共享,内置还有docker,可以实现下载等功能。没试。

路由器

刷openwrt系统做路由器。没试。

Armbian

用U盘刷Armbian系统,可以做Linux服务器。
Armbian是一个Arm64的debian Linux系统。

我用的是2020.11.22更新的5.9.0系统

https://www.right.com.cn/forum/thread-4053939-1-1.html

下载链接
链接:https://pan.baidu.com/s/1ZEwroqDhMjT1_g_DnFY9oQ
密码: pv4o

U盘写镜像文件用的是balenaEtcher Linux版(balenaEtcher-1.5.122-x64.AppImage)

https://www.balena.io/etcher/

这个镜像默认安装了samba和docker。

SAMBA

我平时操作用的是普通用户abc而不是root,所以需要给abc一些设置。

给用户abc加samba组sambashare

root:

1
#usermod -a -G sambashare abc

abc重新登录才可以用groups命令看到新加的组sambashare

在samba中增加用户abc
root:

1
2
3
4
5
6
7
8
add: (abc必须是Linux系统已经存在的系统用户)
#smbpasswd -a abc
enable:
#smbpasswd -e abc
reload:
#smbd reload
(systemctl restart smbd)
(/etc/init.d/smbd restart)

usershare
看已经share了哪些目录

1
$net usershare list

增加一个共享目录

1
$net usershare add abc_share /home/abc/share "abc share in home" everyone:R,abc:F guest_ok=y

看共享目录的详细信息

1
$net usershare info abc_share

root级别的共享。
除了usershare,还可以在/etc/samba/smb.conf加入以下内容

1
2
3
4
5
6
7
8
9
10
[data1]
comment = N1 data1
path = /media/data1
public = yes
browsable = yes
guest ok = yes
read only = yes
write list = abc
create mask = 0755

然后重启smbd

创建一个名字为data1的smb共享目录。指向/media/data1目录。用户abc可读写。guest只读。

Docker图形界面

portainer

https://www.portainer.io/

安装Linux版

1
2
3
4
5
6
#docker volume create portainer_data
#docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest

访问
https://N1 Armbian IP:9443
第一次登录创建用户名和密码

挂移动硬盘

移动硬盘不要用fat32的,最好是ntfs或者ext4。我用的ntfs。

root:

1
2
3
4
5
6
7
8
9
10
#fdisk -l

#blkid /dev/sda1
/dev/sda1: LABEL="DATA" UUID="580FFC0D627417F0" TYPE="ntfs" PTTYPE="dos" PARTUUID="a4263551-01"

#cat /etc/fstab
LABEL=ROOTFS / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1
LABEL=BOOT /boot vfat defaults 0 2
tmpfs /tmp tmpfs defaults,nosuid 0 0
UUID=580FFC0D627417F0 /media/data1 ntfs defaults 0 0

安装Docker版file browser

https://hub.docker.com/r/80x86/filebrowser

获得image

1
#docker pull 80x86/filebrowser

运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IMAGE_NAME=80x86/filebrowser

WEB_PORT=8082
FB_AUTH_SERVER_ADDR="127.0.0.1"

docker run -d --name fb \
--restart=unless-stopped \
-e PUID=$UID \
-e PGID=$GID \
-e WEB_PORT=$WEB_PORT \
-e FB_AUTH_SERVER_ADDR=$FB_AUTH_SERVER_ADDR \
-p $WEB_PORT:$WEB_PORT \
-v /media/data1:/myfiles \
--mount type=tmpfs,destination=/tmp \
${IMAGE_NAME}

访问http://N1 Armbian IP:8082
用户名密码admin/admin

安装Docker版qbittorrent

用普通账户abc操作docker

1
usermod -a -G docker abc

https://hub.docker.com/r/superng6/qbittorrent

获得image

1
#docker pull superng6/qbittorrent

运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
docker run -d \
--name=qbittorrent \
-e WEBUIPORT=8080 \
-e HOME=/home/abc \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-p 6881:6881 \
-p 6881:6881/udp \
-p 8080:8080 \
-v /media/data1/qb/config:/config \
-v /media/data1/qb/downloads:/downloads \
--restart unless-stopped \
superng6/qbittorrent:latest

访问http://N1 Armbian IP:8080
用户名密码admin/adminadmin

安装Docker版transmission

https://hub.docker.com/r/linuxserver/transmission

创建transmission目录和3个子目录config, downloads, watch

创建如下yml文件
docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: "2.1"
services:
transmission:
image: lscr.io/linuxserver/transmission
container_name: transmission
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- TRANSMISSION_WEB_HOME=/combustion-release/ #optional
- USER=abc #optional
- PASS=password #optional
volumes:
- /media/data1/transmission/config:/config
- /media/data1/transmission/downloads:/downloads
- /media/data1/transmission/watch:/watch
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped

在这个文件所在目录下运行

1
docker-compose pull

下载image

运行

1
docker-compose up -d

启动容器

安装Docker版openwrt

https://hub.docker.com/r/unifreq/openwrt-aarch64

https://www.right.com.cn/forum/thread-958173-1-1.html

获得image

1
docker pull unifreq/openwrt-aarch64

创建macvlan macnet (我的路由是192.168.1.1,网络是192.168.1.0/24)
docker network create -d macvlan –subnet=192.168.1.0/24 –gateway=192.168.1.1 -o parent=eth0 macnet

运行
准备分配给openwrt的IP是192.168.1.31

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
IP="192.168.1.31"
MACADDR="FC:7C:02:01:02:03"
IMG_TAG=latest
KERNEL_VERSION=$(uname -r)

# 停止旧版本容器(如果存在的话)
# docker stop openwrt-${IMG_TAG}
# 删除旧版本容器(如果存在的话)
# docker rm openwrt-${IMG_TAG}

docker run \
--name openwrt-${IMG_TAG} \
--restart always \
--network macnet \
--mac-address ${MACADDR} \
--ip ${IP} \
-d \
--privileged=true \
--ulimit nofile=16384:65536 \
-v /lib/modules/${KERNEL_VERSION}:/lib/modules/${KERNEL_VERSION} \
unifreq/openwrt-aarch64:$IMG_TAG

# 第一次运行,需要修改ip地址
docker exec openwrt-${IMG_TAG} sed -e "s/192.168.1.1/${IP}/" -i /etc/config/network
#重启容器生效
docker restart openwrt-${IMG_TAG}

默认用户名密码root/password
访问http://192.168.1.31
或者ssh root@192.168.1.31

禁用DHCP

https://openwrt.org/docs/guide-user/network/wifi/dumbap

Disable DHCP Server
If you still need dnsmasq running for something else (e.g. TFTP server) you can do:

1
2
3
uci set dhcp.lan.ignore=1
uci commit dhcp
/etc/init.d/dnsmasq restart

我用的是这个方法。

If not disable dnsmasq service:

1
2
/etc/init.d/dnsmasq disable
/etc/init.d/dnsmasq stop

这个方法尽管可以不启动dnsmasq服务。但是其他服务会用到dnsmasq,会在系统启动的时候自动把dnsmasq起来。

混杂模式

默认host的eth0是不开混杂模式的。不开的话host和openwrt之间不能互相访问。如果需要互相访问,可以参考下面开启。

https://leeyr.com/326.html

NFS

设置NFS共享

https://www.dummies.com/computers/operating-systems/linux/how-to-share-files-with-nfs-on-linux-systems/
https://unix.stackexchange.com/questions/176673/how-can-i-determine-if-an-nfs-remote-is-exporting-a-directory

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ls -l /etc/init.d/nfs-kernel-server

cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#

/media/data1 192.168.1.0/24(ro,insecure)

exportfs -a

Linux客户端

1
2
3
4
5
#showmount -e 192.168.1.22
Export list for 192.168.1.22:
/media/data1 192.168.1.0/24

#mount -t nfs 192.168.1.22:/media/data1 /mnt/nfs1

系统挂了

2023.2.7. 今天对系统盘做fsck和用gpart对磁盘进行修复的时候,导致系统起不来了。症状是重启N1没有进入armbian而是进入安卓系统。
可能是做以上操作时修改了分区表。

修复方法是找个新U盘,重新写镜像并确定能正常启动N1。然后把老的和新的U盘都插到Linux下,复制老U盘的内容到新U盘

1
2
sudo cp -R /media/user/BOOT/* /media/user/BOOT1/
sudo cp -R /media/user/ROOTFS/* /media/user/ROOTFS1/

然后用新U盘重启N1即可。

系统起来之后由于文件权限问题。导致nginx的反向代理不好用。执行以下操作修复权限。

1
2
3
4
5
6
7
8
9
# 检查nginx的运行id
$ ps aux | grep "nginx: worker process"
www-data 1658 0.0 0.3 61264 6296 ? S 13:17 0:00 nginx: worker process
www-data 1659 0.0 0.3 61200 5652 ? S 13:17 0:00 nginx: worker process
www-data 1660 0.0 0.3 61132 5380 ? S 13:17 0:00 nginx: worker process
www-data 1661 0.0 0.3 61176 5616 ? S 13:17 0:00 nginx: worker process
# 把权限改为www-data
$ cd /var/lib/nginx/
$ sudo chown -R www-data:root *

U盘备份

U盘插入Linux自动mount到/media/user/BOOT和/media/user/ROOTFS下

用zip命令备份。-y参数是备份符号链接为链接而不拷贝指向的文件或目录。

1
2
3
cd /media/user
zip -y -r ~/tmp/BOOT.zip BOOT
zip -y -r ~/tmp/ROOTFS.zip ROOTFS