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 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/fstabLABEL=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 
 
在这个文件所在目录下运行
 
下载image
运行
 
启动容器
安装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). # #  /srv/homes       hostname1(rw,sync ,no_subtree_check) hostname2(ro,sync ,no_subtree_check) # #  /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