前言
一直以来,我都希望能充分利用家中的网络资源(比如从教育网 IPv6 隧道到家)。但随着带宽的提高,路由器羸弱的性能难以支撑多种服务稳定的运行,所以我迫切地需要一个小主机来对外提供 VPN 接入、文件共享等服务。在对比了香橙派、树莓派等 arm 开发板后,都觉得其配件组合太过麻烦,并且算上配件价格也并不便宜。相比之下,斐讯 N1 以其低廉的价格、强劲的性能、插电即用的方便和千兆网口、双频 wifi 等配置足以满足我的需求,并且可以刷入完整的 Linux 发行版使其作为一台真正的 Linux服务器。
Linux版本选择
目前,N1 可以刷入多种 Linux 发行版,比如 Arch Linux、Kail Linux、Armbian,你可以从以下网址获得最新的版本
Arch Linux、Kail Linux 等:https://github.com/yangxuan8282/phicomm-n1/wiki/OS
Armbian:https://yadi.sk/d/pHxaRAs-tZiei https://github.com/150balbes/Amlogic_s905
注意刷入不同版本内核的 Linux 系统时可能需要替换 dtd 设备树描述文件,否则会造成部分硬件异常或系统负载过高等问题。
经过查找资料和亲身实践,我最终选择 Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img.xz 系统,此版本基于 Ubuntu 18.04.2,各种软硬件功能均正常,运行稳定,同时支持 BBR 等模块,强烈推荐。注意版本必须配合 xiangsm 修改的 dtd 文件使用。
准备工作
所需硬件:
斐讯 N1 一台
USB 公对公数据线 一根(非必须) :用于降级刷入 boot.img 文件。正常操作可通过 adb 一键降级,若出错则需要手动进入 fastboot 降级。
U盘 一个:4G 就够用,用于安装系统。
所需软件:
Armbian镜像:Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img.xz
ADB工具和驱动: 可用 adb-setup-1.3.exe 一键安装
USB Image Tool :烧录镜像到U盘
所需要的文件可在此处下载:链接:https://share.weiyun.com/59YlVVg 密码:h16666
制作安装U盘
- 下载 Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img.xz,解压得到 Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img
- 下载并解压 USB Image Tool.zip,运行 USB Image Tool.exe
- (此操作会格式化U盘,注意备份文件!!!)插入U盘,在右侧选择U盘,点击 Restore 后选择刚刚解压的 img 镜像即可开始烧录。稍等片刻等烧录完成。
- 烧录完成待系统重新识别U盘,若提示格式化请务必不要格式化。此时U盘会分为两个分区,一个 FAT 格式的的 BOOT 分区,一个不能识别的 EXT 分区。
- 下载 meson-gxl-s905d-phicomm-n1-xiangsm.dtb 文件,打开 BOOT 分区,将其放入 dtd 文件夹中。
- 打开 BOOT 分区根目录的 uEnv.ini 文件(推荐使用 Notepad++ 以确保编码不会出问题),修改第一行 dtb_name 后 dtd 文件为 meson-gxl-s905d-phicomm-n1-xiangsm.dtb ,即修改成:
dtb_name=/dtb/meson-gxl-s905d-phicomm-n1-xiangsm.dtb
- 安装U盘制作完成。
斐讯 N1 系统降级
- 斐讯 N1 上电启动接上显示器插上鼠标连入网络(有线无线皆可,建议有线),观察首页版本号,若版本号大于 V2.22 的都需要降级 boot。
- 快速点击版本号4次,提示打开 adb 即可。
- 确保电脑和 N1 处在同一局域网下并正确安装 ADB 工具。打开 cmd,使用 adb connect 命令连接 N1:
adb connect IP地址:5555
提示:
connected to IP地址:5555
即表明连接成功。
- 下载 N1一键降级.zip ,解压后运行其中 run.bat,输入 1 根据提示操作即可。降级成功后会自动重启。
- 斐讯N1自动降级完成。
启动U盘 Armbian 系统并写入 emmc 分区
在本部分,你可以通过连接显示器、插上 USB 键盘的方式操作,也可以使用 SSH 通过局域网连接操作。若使用 SSH ,请用有线的方式将 N1 连接至局域网,并通过路由器管理后台或端口扫描等方式获取 N1 IP地址。
- 断电关闭 N1,插上U盘后上电启动,若连接显示器可看到 Linux 启动过程。
- (键盘)待启动完成后登录,用户名 root,初始密码 1234 。
- (SSH)以有线的方式将 N1 连接至网络,安装打开 Xshell,在上方的输入 N1IP地址:22 即可快速连接。登录用户名 root,密码 1234 。
- 首次登录会要求修改密码,依次输入原密码 1234,新密码,重复新密码即可。修改完成后要求建立新用户,这里为了方便就不建了,Ctrl + C 中断操作,用 root 用户和新密码重新登录即可。
- 执行以下命令将 Armbian 系统内写入 emmc 内置存储:
nand-sata-install
稍等片刻待提示 Complete 即写入完成。写入过程中不应报错,若有报错提示,请重新制作U盘系统、重新插拔电源启动并写入。
- 使用 shutdown 命令关闭系统:
shutdown now
关机后断电,拔下U盘。
启动系统并连接网络
- 拔下U盘后重新上电启动,即可进入 Armbian 5.77 系统。
- 连接有线网,使用 Xshell 通过 ssh 连接 H1 (也可以插上键盘直接使用),用户名 root,密码为你更改后的密码,登录。
- (可选,连接无线网)输入 nmtui 打开可视化网络管理器:选择 Activate a connection 回车进入:选择 Wi-Fi 下扫描到的 SSID,回车输入密码选择 OK:稍等片刻即可成功连接。若要断开点击,选择相应 SSID 后 → 选择 Deactivate :一路 BACK 回到 shell 使用 ifconfig 命令即可查看 IP 地址等信息:
一些微小的工作
Debian/Ubuntu的apt源默认服务器在欧洲,到国内速度很慢,需要替换成国内的源才能正常安装一些软件。
首先确认你的 Linux 发行版,本教程使用的 Armbian 是基于 Ubuntu 的,若你使用其他镜像,则可能是基于 Debian 的。在你登陆时的欢迎信息中会显示,比如本镜像登录欢迎信息中显示:
Welcome to ARMBIAN 5.77 user-built Ubuntu 18.04.2 LTS 5.0.2-aml-s905
使用 vim 打开 /etc/apt/sources.list 文件:
vim /etc/apt/sources.list
按 i 进入插入模式。
若是 Ubuntu ,将文件内容替换成以下内容:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse #deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
若是 Debian,将文件内容替换成以下内容:
deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch main contrib non-free #deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch main contrib non-free deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-updates main contrib non-free #deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-updates main contrib non-free deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-backports main contrib non-free #deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-backports main contrib non-free deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian-security/ stretch/updates main contrib non-free #deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security/ stretch/updates main contrib non-free #deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ sid main contrib non-free
编辑完成按 Esc 退出插入模式,按 :wq 保存退出。
注意:很多商业源如阿里等并没有收录 arm 架构,若使用其他软件源请确认其提供 arm 架构的软件包。
使用 apt-get 更新和升级软件包:
apt-get update apt-get upgrade
在实际操作过程中,可能由于某个软件包的更新导致文件系统变为只读状态,此时 reboot 重启后重新更新就可。
执行以下命令:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
执行 date -R 查看时间是否正确。
我希望N1能使用上级路由器提供的DNS。
执行以下命令:
rm /etc/resolvconf/resolv.conf.d/head && touch /etc/resolvconf/resolv.conf.d/head
在重启系统后,执行 cat /etc/resolv.conf ,查看返回结果是否为你路由器的 DNS,如果是,则表示删除成功,如果不是,则再执行一次删除命令。
linux-5.0.2 默认用 reno ,需要设置其启用 bbr 。执行以下命令:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p
通过以下命令检查 BBR 是否启动:
sysctl net.ipv4.tcp_available_congestion_control # 返回值应为 net.ipv4.tcp_available_congestion_control = reno cubic bbr sysctl net.ipv4.tcp_congestion_control # 返回值应为 net.ipv4.tcp_congestion_control = bbr sysctl net.core.default_qdisc # 返回值应为 net.core.default_qdisc = fq lsmod | grep bbr # 返回值应包含 tcp_bbr 模块
syslog 中每 10s 出现一次 ttyS0 服务启动失败的日志。不理它也没关系,但看着不舒服,所以:
systemctl disable serial-getty@ttyS0
参考资料
在操作过程中,我参考了以下文章:
文章评论