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