4

斐讯 N1 运行 ArchLinuxARM

 2 years ago
source link: https://www.mivm.cn/phicomm-n1-archlinuxarm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

斐讯 N1 运行 ArchLinuxARM

2020-05-31 1198点热度 3人点赞 5条评论

小山之前教大家斐讯 N1 如何运行 Linux,当时用的发行版是 Armbian,由于它有镜像文件,操作起来也比较简单。

不过 Armbian 只有 Debian 和 Ubuntu 两个版本可以选择,虽然 Ubuntu 可以满足大多数人的需求,不过还是有些人喜欢像 ArchLinux 这样的滚动发行版。

让 N1 运行其他的 Linux 发行版并不是什么难事,支持 ARM 的发行版都能在 N1 运行。这篇文章就以 ArchLinuxARM 为基础,教大家如何让 N1 运行其他 Linux 发行版。

虽然我会使用一些 ArchLinux 独有的东西,比如 ArchLinux 的包管理器,不过只要理解了其中的原理,运行其他发行版并不是什么难事。

phicomm-n1-archlinuxarm.png

你的 N1 需要具备可以从 U 盘启动 Linux 的条件,简单的说就是降级启动分区,具体操作可参考:《斐讯N1折腾记:降级及刷入官改》。

你需要在 Linux 系统完成以下操作,虚拟机或物理机都可以,虚拟机需要可以直接访问你的 U 盘,不是共享文件的那种。

系统 CPU 架构需要是 x86_64 或 aarch64,可以使用uname -m命令查看系统 CPU 架构。

如果不是 ArchLinux 则需要有 Docker,因为要用到 ArchLinux(ARM) 辅助操作。

Linux 和 ArchLinux(ARM) 的基础知识 ,我并不会教你 ArchLinux(ARM) 怎么用,以及装好之后要做些什么。

U 盘分区和格式化

执行sudo fdisk -l查看 U 盘的设备路径,如果你的 U 盘是刚插入的,通常是最后一个设备。如下图示例:

fdisk

记得替换以下命令的${devPath}为U盘的设备路径。

清空U盘分区表:sudo dd if=/dev/zero of=${devPath} bs=1M count=8 && sudo sync

进入 fdisk 交互界面:sudo LANG=C fdisk ${devPath}

输入o创建 DOS 分区表

输入n创建新分区,提示Partition type按回车,提示Partition number按回车,提示First sector按回车,提示Last sector输入+256M并按回车。

输入t修改第一个分区类型,提示Hex code输入c并按回车。

输入n创建新分区,提示Partition type按回车,提示Partition number按回车,提示First sector按回车,提示Last sector按回车。

输入p查看分区表,如果输出类似下图,输入w保存分区表并退出。

执行sudo mkfs.fat -F 32 ${part1Path}格式化第一个分区为 FAT32,替换${part1Path}为第一个分区路径。示例:sudo mkfs.fat -F 32 /dev/sdd1

执行sudo mkfs.ext4 ${part2Path}格式化第二个分区为 ext4,替换${part2Path}为第二个分区路径。示例:sudo mkfs.ext4 /dev/sdd2

写入系统文件

下载 ArchLinuxARM 系统文件:curl -L -o "$HOME/ArchLinuxARM-aarch64-latest.tar.gz" https://opentuna.cn/archlinuxarm/os/ArchLinuxARM-aarch64-latest.tar.gz

下载 N1 引导文件:curl -L -o "$HOME/n1-boot.tar.gz" "https://cdn.mivm.cn/www.mivm.cn/archives/phicomm-n1-archlinuxarm/boot.tar.gz?ver=4"

创建根分区挂载点:sudo mkdir /tmp/archlinux-arm

创建启动分区挂载点:sudo mkdir /tmp/archlinux-arm/boot

挂载第二个分区:sudo mount ${part2Path} /tmp/archlinux-arm

挂载第一个分区:sudo mount -o umask=0077 ${part1Path} /tmp/archlinux-arm/boot

解压系统文件到根分区:sudo bsdtar -xpf "$HOME/ArchLinuxARM-aarch64-latest.tar.gz" -C /tmp/archlinux-arm

解压引导文件到启动分区:sudo bsdtar -xf "$HOME/n1-boot.tar.gz" -C /tmp/archlinux-arm/boot

编辑/tmp/archlinux-arm/etc/fstab文件,添加以下内容:

UUID=${part2UUID} / ext4 rw,relatime 0 1

UUID=${part1UUID} /boot vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2

分别替换${part1UUID}${part2UUID}为第一个分区和第二个分区的 UUID,可以使用sudo blkid查看所有分区的 UUID。

执行sudo sed -i 's/@{UUID}/${part2UUID}/' /tmp/archlinux-arm/boot/extlinux/extlinux.conf指定内核引导参数的根分区,将${part2UUID}替换为第二个分区的 UUID。

ArchLinuxARM 默认附带的内核不适用于 N1,所以要安装新的内核,安装操作可以手动完成,方便起见,推荐使用 ArchLinux(ARM) 辅助安装。

内核软件包下载地址:https://share.weiyun.com/9oPFDBtB,务必下载 linux-amlogic,而不是 linux-amlogic-headers,如果需要无线网络或蓝牙支持,可以下载 firmware 目录下的软件包并安装。

下载完成后将软件包复制到/tmp/archlinux-arm/

内核配置文件来自 AUR 的 linux-phicomm-n1 软件包,已修复 N1 负载异常。编译文件可在我的 Github 找到。

如果你当前的系统 CPU 架构与下面第一个括号内的架构匹配,再执行后面的命令

注册 QEMU 处理程序 (x86_64) :sudo docker run --rm --privileged multiarch/qemu-user-static -p yes --reset

运行 ArchLinux 容器 (x86_64)(如果你当前的系统是 ArchLinux 可省略):sudo docker run -i -t --rm --privileged -v /tmp/archlinux-arm:/tmp/archlinux-arm archlinux

运行 ArchLinuxARM 容器 (aarch64)(如果你当前的系统是 ArchLinux 可省略) :sudo docker run -i -t --rm --privileged -v /tmp/archlinux-arm:/tmp/archlinux-arm -w agners/archlinuxarm

以下命令均在容器内运行(如果你当前的系统是 ArchLinux 可直接执行)

安装 Arch 安装脚本:pacman -Sy --noconfirm arch-install-scripts

切换到U盘的系统:arch-chroot /tmp/archlinux-arm

初始化 pacman 密钥:pacman-key --init && pacman-key --populate archlinuxarm

更新软件包数据库:pacman -Sy

删除默认内核软件包:pacman -Rns linux-aarch64

安装 N1 内核软件包:pacman -U /linux-amlogic-*.pkg.tar.zst

清理软件包:rm -f /linux-amlogic-*.pkg.tar.zst

退出U盘的系统环境:exit

退出容器环境(如果你没有使用 ArchLinux 容器可省略):exit


现在可以卸载分区并移除U盘,插入 N1 开机测试是否可以成功启动。

root 用户的默认密码是root

还有个名为 alarm 的普通用户,默认密码是alarm

SSH 默认启用

默认使用 systemd-netword 管理网络并启用 DHCP


如果你有任何问题或不懂的地方,欢迎加入 QQ 群与我交流。

微信公众号二维码

微信扫描二维码关注我们

如果觉得文章有帮助到你,可以点击下方的打赏按钮赞助下服务器费用。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK