0%

斐讯N1折腾记录(一)

之前一直有听说过斐讯N1这款硬件产品,但直到最近才入手了一台,今天折腾了一阵子,写下此文记录一下(′▽`〃)。

降级操作

如果机器的官方操作系统版本较高(版本号2.22以上)的话,需要先把boot、bootloader等关键分区降级到低版本,才能引导和启动非官方的操作系统;但因为我手上这台斐讯N1到手前被卖家刷入了OpenWrt,关键分区已经被降级到低版本,而一台机器只需进行一次降级操作,所以我就不需要再对其进行降级操作了。

刷入Armbian

Armbian是一款基于Ubuntu和Debian开发,可运行于ARM开发板上的操作系统。我选择这个操作系统是因为想把这台斐讯N1作为一台轻量级的ARM服务器来玩玩φ(≧ω≦*)♪。

我选用的镜像是Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.zip(提取码:518d),Armbian版本5.77,内核版本5.0.2,目前来说是较新但又相对省心的版本。

写入U盘 & 导入.dtb文件

镜像解压后,使用工具balenaEtcher写入U盘。因为这个镜像包含的操作系统原本是运行在一款与斐讯N1存在硬件差异的ARM开发板上的,如果直接由该操作系统驱动斐讯N1,会带来各种兼容问题;所以需要一个记录了斐讯N1的硬件信息(例如CPU、RAM等详细信息)的.dtb文件(.dtb文件需要随着内核编译,同一设备不同内核所对应的.dtb文件也不同,不能混用)向内核传递相关的硬件信息,内核根据这些信息对CPU、RAM等斐讯N1的硬件进行调度和管理,最终实现该操作系统相对完美地在斐讯N1上运行。

我把文件meson-gxl-s905d-phicomm-n1-xiangsm.dtb放入U盘的BOOT分区根目录下,随后使用文本编辑器打开文件uEnv.ini,修改dtb_name一项,使其指向meson-gxl-s905d-phicomm-n1-xiangsm.dtb,即修改为dtb_name=/meson-gxl-s905d-phicomm-n1-xiangsm.dtb。然后就能让斐讯N1从U盘启动操作系统了。

写入eMMC

将U盘插入靠近HDMI接口的USB接口,连接显示器,给斐讯N1通电,即可从U盘启动Armbian。Armbian启动后,登录默认的root用户(用户名:root,密码:1234);首次登录,需要先输入一次默认的密码,然后系统要求修改root用户的密码。

接着使用以下命令,即可把U盘中的Armbian写入斐讯N1的eMMC(原有的操作系统和数据将会被覆写),写入完成后,使用命令poweroff关机并拔出U盘。下一次给斐讯N1通电就能直接从eMMC启动Armbian。

nand-sata-install

更改软件源

Armbian的默认软件源位于境外,国内的访问速度实在是一言难尽╮(╯▽╰)╭,所以需要使用国内的软件源,通过国内的服务器来更新软件列表和升级软件包。我一般用的是清华大学开源软件镜像站。

使用文本编辑器vim打开/etc/apt/sources.list

vim /etc/apt/sources.list

写入以下的软件源信息,但多个软件源应该不能共存(具体我没尝试过),所以需要用#把原有的软件源信息注释(也可以删除,但如果软件源信息写入错误,那就没退路了|(*′口`)),原有的软件源信息中的注释内容可删除。

deb 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 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

更改后如下:

i键进入编辑模式,更改完后,按ESC键,接着输入:wq即为保存并退出。

另外,还需要更改/etc/apt/sources.list.d/armbian.list

vim /etc/apt/sources.list.d/armbian.list

内容如下:

deb http://mirrors.tuna.tsinghua.edu.cn/armbian/ bionic main bionic-utils bionic-desktop

中文显示和输入

使用SSH协议连接斐讯N1,在终端中无法显示和输入中文,需要修改/etc/environment中的内容LC_ALL="C",如下:

LC_ALL="en_US.utf-8"

然后关机再通电重启。

解决负载过高的问题

由于网卡驱动的问题,在启用有线网络的时候,系统负载较高,真正解决问题就需要修改.dtb文件。

进入目录/boot,首先需要把.dtb文件反编译为.dts文件并命名为n1.dts

dtc -I dtb -O dts -o n1.dts meson-gxl-s905d-phicomm-n1-xiangsm.dtb

使用vim编辑器打开n1.dts,找到interrupt-controller@9880一项,将其下的phandle一项使用#注释,如下:

interrupt-controller@9880 {
compatible = "amlogic,meson-gpio-intc", "amlogic,meson-gxl-gpio-intc";
reg = <0x0 0x9880 0x0 0x10>;
interrupt-controller;
#interrupt-cells = <0x2>;
amlogic,channel-interrupts = <0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47>;
status = "okay";
#phandle = <0x1e>;
};

修改完成后,把.dts文件编译为.dtb文件,并命名为n1.dtb

dtc -I dts -O dtb -o n1.dtb n1.dts

接着,修改文件uEnv.inidtb_name一项,指向n1.dtb

dtb_name=/n1.dtb

重新启动,即可使系统负载回复到正常水平。

reboot

参考文章

[T1] [2018-9-28]斐讯T1和N1降级恢复线刷功能, adb脚本工具

斐讯N1 – 完美刷机Armbian教程

[N1盒子] Armbian-5.77 on N1, so far so good

打造最具性价比服务器 N1-armbian

斐讯 N1 Armbian 低负载 dtb 编译

Ubuntu Ports 镜像使用帮助

资源出处

@powersee