Phicomm N1安装ArchLinuxARM

前言

Phicomm N1是非常热门的盒子,该盒子的OpenWrtArmbian系统资源非常丰富。之前我的N1盒子一直运行OpenWrt,但OpenWrt内核无法运行dae(至少我没能打包出支持bpf的内核),sing-box的前端luci-app-homeproxy我不太喜欢,且自己又不会开发,因此有了更换系统的想法。

整体思路

因为s905的分区比较复杂,我不敢直接操作,因此想先在emmc上安装Armbian,保留启动文件,删除其他文件,再将ArchLinuxARM的文件解压到相应位置,完成安装。

制作U盘

可以在ophub上下载Armbian镜像,比如:Armbian_24.2.0_amlogic_s905d_jammy_6.6.11_server_2024.01.13.img.gz,解压后DD到U盘

1
2
gzip -d Armbian_24.2.0_amlogic_s905d_jammy_6.6.11_server_2024.01.13.img.gz
sudo dd if=Armbian_24.2.0_amlogic_s905d_jammy_6.6.11_server_2024.01.13.img of=/dev/sda status=progress

写入EMMC

插入U盘后通电,盒子会正常启动并进入系统,默认用户名:root,默认密码:1234,然后通过Armbian自带的命令写入EMMC

1
armbian-install

保留必要文件

写入完成后,挂载EMMC

1
2
mount /dev/mmcblk1p2 /mnt
mount /dev/mmcblk1p1 /mnt/boot

保留/mnt/etc/fstab/mnt/boot/uEnv.txt文件,其余文件全部删除

解压ArchLinuxARM压缩包

下载ArchLinuxARM-aarch64-latest.tar.gz并解压到挂载位置

1
tar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt

并用保留的/mnt/etc/fstab替换当前的,文件内容大概如下所示:

1
2
3
UUID=8128419f-7683-4714-bf23-5c08482da669    /        btrfs    defaults,noatime,compress=zstd:6      0 1
LABEL=BOOT_EMMC        /boot    vfat                   defaults                   0 2
tmpfs                  /tmp     tmpfs                  defaults,nosuid            0 0

下载new-uboot-for-N1的启动文件,实测需要emmc_autoscriptboot,放到/mnt/boot目录,并创建/mnt/boot/extlinux/extlinux.conf文件,内容大概如下所示,主要是APPEND字段内容要参考/mnt/boot/uEnv.txt文件。

1
2
3
4
5
LABEL Arch Linux ARM
LINUX /Image.gz
INITRD /initramfs-linux.img
FDT /dtbs/amlogic/meson-gxl-s905d-phicomm-n1.dtb
APPEND root=UUID=8128419f-7683-4714-bf23-5c08482da669 rootflags=compress=zstd:6 rw rootfstype=btrfs console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 loglevel=1

启动新系统

关机后断电,然后拔出U盘后通电,盒子会启动进入ArchLinuxARM系统。 系统截图

遇到的坑

1、进入ArchLinuxARM系统后没有网络,需要连接键盘,对系统进行初始化

1
2
pacman-key --init
pacman-key --populate archlinuxarm

之后才能联网,通过ssh连接。

2、Armbian系统/boot分区仅保留dtbemmc_autoscriptextlinuxu-boot.emmcuInitrdzImag是可以正常启动的,但使用Armbianemmc_autoscriptu-boot.emmc无法启动ArchLinuxARM,而使用new-uboot-for-N1emmc_autoscriptboot就能正常启动,原因未知。

下一步计划

ArchLinux是我很久之前使用的系统,现在我已经转为使用NixOS,所以希望N1盒子也能运行NixOS,目前还在摸索中。

使用 Hugo 构建
主题 StackJimmy 设计