FriendlyArmsR2S
我真不应该买这种 Arm 小板子的,便宜不到哪去,配置起来还麻烦,远不如 x64 小盒子方便。然而我买了两个:P,只能折腾了。
1. OpenWrt
官方级别支持:https://openwrt.org/toh/friendlyarm/nanopi_r2s
开箱就用。但是我很不习惯 Openwrt,调通了一次 IPv6,重装一次然后再也通不了了,其它配置也不太会。
2. Armbian
社区级别支持:https://www.armbian.com/nanopi-r2s/
有点担心 `armbian-config` 会不会让这个系统的管理和原生 debian 不太一样。我猜不会,但是我有不好的预感,所以先跳过。
3. Archlinux Arm
3.1. 其它参考
按前人经验,这个板子可以复用 https://archlinuxarm.org/platforms/armv8/rockchip/rock64 的 dtb,但是不能复用它的 uboot。
3.2. 清理 SD 卡分区
DEV=/dev/sdX MOUNTPOINT=mountpoint
sudo dd if=/dev/zero of=$DEV bs=1M count=32 sudo parted -s $DEV 'mklabel msdos' sudo parted -s $DEV 'mkpart primary ext4 32768s 100%' sudo mkfs.ext4 ${DEV}1
3.3. 解压 Armbian 并安装其 uboot 到 SD 卡
xz -dk ~/Downloads/Armbian_community_25.11.0-trunk.302_Nanopi-r2s_trixie_current_6.12.51_minimal.img.xz sudo dd if=~/Downloads/Armbian_community_25.11.0-trunk.302_Nanopi-r2s_trixie_current_6.12.51_minimal.img of=$DEV skip=31 seek=31 bs=512 count=32736
3.4. 解压 Archlinux Arm 镜像到 SD 卡
sudo bsdtar -xpf ~/Downloads/ArchLinuxARM-aarch64-latest.tar.gz -C $MOUNTPOINT
3.5. 安装内核
3.5.1. Armbian 内核
sudo mount -o offset=$((32768*512)) ~/Downloads/Armbian_community_25.11.0-trunk.302_Nanopi-r2s_trixie_current_6.12.51_minimal.img /mnt sudo mv $MOUNTPOINT/boot{,.orig} sudo cp -r /mnt/boot $MOUNTPOINT/ # 备份一个省得后面改坏 sudo cp -r $MOUNTPOINT/boot{,.armbian} sudo umount /mnt
3.5.2. 切换到 ArchlinuxArm 内核
等配置完 pacman 后再操作。其实 pacman 更新系统的时候已经替换掉了 Armbian 的内核。
估计是 dtb 哪里有问题,或者内核哪里配置不对,lan 口的网卡灯一直不亮。
sudo chroot $MOUNTPOINT rm -rf /boot/{config*,dtb,dtb-*,initrd*,System.map*,uInitrd*,vmlinuz*} # 这步 sudo pacman -Syu 里面包含了。 # sudo chroot $MOUNTPOINT pacman -S linux-aarch64 sudo chroot $MOUNTPOINT ln -sf /boot/dtbs /boot/dtb sudo chroot $MOUNTPOINT sed -i 's@^\(fdtfile=\).*$@\1rockchip/rk3328-rock64.dtb@' /boot/armbianEnv.txt sudo chroot $MOUNTPOINT pacman -S uboot-tools sudo chroot $MOUNTPOINT mkimage -A arm64 -T ramdisk -n uInitrd -d /boot/initramfs-linux.img /boot/uInitrd-initramfs-linux.img sudo chroot $MOUNTPOINT ln -sf /boot/uInitrd-initramfs-linux.img /boot/uInitrd
3.6. Bootloader/fstab 配置
eval $(sudo blkid -o export ${DEV}1) sudo sed -i 's@^\(rootdev=UUID=\).*$@\1'$UUID@ $MOUNTPOINT/boot/armbianEnv.txt cat <<EOF | sudo tee $MOUNTPOINT/etc/fstab UUID=$UUID / ext4 defaults,relatime 0 1 tmpfs /tmp tmpfs nodev,nosuid 0 0 EOF
3.7. 第一次启动
# ~/pylon/bootstrap/desktop-environments/local/bin/prepare_chroot.sh prepare_chroot.sh $MOUNTPOINT # Would be fixed after bootup anyway. sudo rm $MOUNTPOINT/etc/resolv.conf sudo cp /etc/resolv.conf $MOUNTPOINT/etc/resolv.conf cat <<'EOF' | sudo tee $MOUNTPOINT/etc/pacman.d/mirrorlist Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/$arch/$repo Server = https://mirrors.ustc.edu.cn/archlinuxarm/$arch/$repo Server = https://mirrors.bfsu.edu.cn/archlinuxarm/$arch/$repo EOF sudo chroot $MOUNTPOINT pacman-key --init sudo chroot $MOUNTPOINT pacman-key --populate archlinuxarm sudo chroot $MOUNTPOINT pacman -Syu sudo chroot $MOUNTPOINT pacman -S dhcpcd netctl openresolv ppp python sudo vim sudo chroot $MOUNTPOINT systemctl disable systemd-networkd sudo chroot $MOUNTPOINT systemctl disable systemd-networkd.socket sudo chroot $MOUNTPOINT systemctl disable systemd-resolved sudo chroot $MOUNTPOINT visudo sudo chroot $MOUNTPOINT passwd -l root # Copy network configs