DragonCave

一个没有黄段子的无聊小站

斐讯N1折腾记 - Armbian 5.77 刷入与优化

最后更新日期:2019.7.17

前言

一直以来,我都希望能充分利用家中的网络资源(比如从教育网 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盘

  1. 下载 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
  2. 下载并解压 USB Image Tool.zip,运行 USB Image Tool.exe
  3. 此操作会格式化U盘,注意备份文件!!!)插入U盘,在右侧选择U盘,点击 Restore 后选择刚刚解压的 img 镜像即可开始烧录。稍等片刻等烧录完成。《斐讯N1折腾记 - Armbian 5.77 刷入与优化》
  4. 烧录完成待系统重新识别U盘,若提示格式化请务必不要格式化。此时U盘会分为两个分区,一个 FAT 格式的的 BOOT 分区,一个不能识别的 EXT 分区。
  5. 下载 meson-gxl-s905d-phicomm-n1-xiangsm.dtb 文件,打开 BOOT 分区,将其放入 dtd 文件夹中。
  6. 打开 BOOT 分区根目录的 uEnv.ini 文件(推荐使用 Notepad++ 以确保编码不会出问题),修改第一行 dtb_name 后 dtd 文件为 meson-gxl-s905d-phicomm-n1-xiangsm.dtb ,即修改成:
    dtb_name=/dtb/meson-gxl-s905d-phicomm-n1-xiangsm.dtb

    《斐讯N1折腾记 - Armbian 5.77 刷入与优化》

  7. 安装U盘制作完成。

斐讯 N1 系统降级

  1. 斐讯 N1 上电启动接上显示器插上鼠标连入网络(有线无线皆可,建议有线),观察首页版本号,若版本号大于 V2.22 的都需要降级 boot。《斐讯N1折腾记 - Armbian 5.77 刷入与优化》
  2. 快速点击版本号4次,提示打开 adb 即可。《斐讯N1折腾记 - Armbian 5.77 刷入与优化》
  3. 确保电脑和 N1 处在同一局域网下并正确安装 ADB 工具。打开 cmd,使用 adb connect 命令连接 N1:
    adb connect IP地址:5555

    提示:

    connected to IP地址:5555

    即表明连接成功。《斐讯N1折腾记 - Armbian 5.77 刷入与优化》

  4. 下载 N1一键降级.zip ,解压后运行其中 run.bat,输入 1 根据提示操作即可。降级成功后会自动重启。《斐讯N1折腾记 - Armbian 5.77 刷入与优化》
  5. 斐讯N1自动降级完成。

启动U盘 Armbian 系统并写入 emmc 分区

在本部分,你可以通过连接显示器、插上 USB 键盘的方式操作,也可以使用 SSH 通过局域网连接操作。若使用 SSH ,请用有线的方式将 N1 连接至局域网,并通过路由器管理后台或端口扫描等方式获取 N1 IP地址。

  1. 断电关闭 N1,插上U盘后上电启动,若连接显示器可看到 Linux 启动过程。
  2. (键盘)待启动完成后登录,用户名 root,初始密码 1234 。
  3. (SSH)以有线的方式将 N1 连接至网络,安装打开 Xshell,在上方的输入 N1IP地址:22 即可快速连接。登录用户名 root,密码 1234  。
  4. 首次登录会要求修改密码,依次输入原密码 1234,新密码,重复新密码即可。修改完成后要求建立新用户,这里为了方便就不建了,Ctrl + C 中断操作,用 root 用户和新密码重新登录即可。《斐讯N1折腾记 - Armbian 5.77 刷入与优化》
  5. 执行以下命令将 Armbian 系统内写入 emmc 内置存储:
    nand-sata-install

    稍等片刻待提示 Complete 即写入完成。写入过程中不应报错,若有报错提示,请重新制作U盘系统、重新插拔电源启动并写入。《斐讯N1折腾记 - Armbian 5.77 刷入与优化》

  6. 使用 shutdown 命令关闭系统:
    shutdown now

    关机后断电,拔下U盘。

注意:务必不要在 N1 Android 系统运行时将U盘插入,否则U盘的 ext4 分区内的文件权限和所有者会被 Android 系统篡改,引起各种异常。

启动系统并连接网络

  1. 拔下U盘后重新上电启动,即可进入 Armbian 5.77 系统。
  2. 连接有线网,使用 Xshell 通过 ssh 连接 H1 (也可以插上键盘直接使用),用户名 root,密码为你更改后的密码,登录。
  3. (可选,连接无线网)输入 nmtui 打开可视化网络管理器:《斐讯N1折腾记 - Armbian 5.77 刷入与优化》选择 Activate a connection 回车进入:《斐讯N1折腾记 - Armbian 5.77 刷入与优化》选择 Wi-Fi 下扫描到的 SSID,回车输入密码选择 OK:《斐讯N1折腾记 - Armbian 5.77 刷入与优化》稍等片刻即可成功连接。若要断开点击,选择相应 SSID 后 选择 Deactivate  :《斐讯N1折腾记 - Armbian 5.77 刷入与优化》一路 BACK 回到 shell 使用 ifconfig 命令即可查看 IP 地址等信息:《斐讯N1折腾记 - Armbian 5.77 刷入与优化》

一些微小的工作

修改apt软件源为国内源

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 查看时间是否正确。

删除默认 DNS

我希望N1能使用上级路由器提供的DNS。

执行以下命令:

rm /etc/resolvconf/resolv.conf.d/head && touch /etc/resolvconf/resolv.conf.d/head

在重启系统后,执行 cat /etc/resolv.conf ,查看返回结果是否为你路由器的 DNS,如果是,则表示删除成功,如果不是,则再执行一次删除命令。

开启 BBR

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 模块

关闭 [email protected] 服务

syslog 中每 10s 出现一次 ttyS0 服务启动失败的日志。不理它也没关系,但看着不舒服,所以:

systemctl disable [email protected]

参考资料

在操作过程中,我参考了以下文章:

Armbian-5.77 on N1, so far so good

手把手教你刷Armbian 安装博纳云,从降级开始V1.1

斐讯N1折腾记:运行 Linux 及优化

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据