最近pdd上入手了一台斐讯n1,八九十左右的样子。刷成linux做开发、学习使用,简单记录刷机过程。

安装过程主要 拷贝 参考自: https://www.edevops.top/posts/21a18ac.html

开启ADB

  1. N1通电开机,HDMI链接显示器,连接网络(wifi/有线),鼠标点击四次版本号的位置打开远程调试ADB(有提示)
  2. 电脑通过adb连接设备
  3. 刷入降级镜像并重启
# 连接N1
adb connect 192.168.1.184
# 双公头USB数据线插入盒子靠近HDMI的USB口和电脑的原生 USB2.0 接口并启动盒子到fastboot
adb shell reboot fastboot

# N1重启黑屏后查询是否识别设备
fastboot devices
# 显示一行设备信息,说明 USB 连接正常

# 刷入降级镜像
fastboot flash bootloader bootloader.img
fastboot flash boot boot.img
fastboot flash recovery recovery.img
# 刷入成功后重启
fastboot reboot

重启后系统版本显示依然是2.28。此降级并非降级系统,而是降级引导等关键分区,所以系统版本哪里不会变的。

制作系统盘

window:

window上推荐使用rufus工具,简单无脑

macos:(笔者没有通过命令行刷入成功,改用在window系统上输入,有时间再做测试)

#访达内 右键解压 Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img.xz 
#命令行 查询U盘
diskutil list
sudo diskutil unmountDisk /dev/disk4 #卸载U盘
sudo dd bs=4m if=/Users/evan/Downloads/Armbian_5.77_Aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img of=/dev/disk4
diskutil eject /dev/disk4   #推出U盘

U盘启动 armbian-ubuntu

adb connect 192.168.1.184
adb shell reboot update
#U盘制作好后千万别插在正在运行的Android系统下,否则会被更改权限,导致armbian出现问题。
#所以执行上述步骤后N1断电再插入armbian启动盘,通电启动到armbian

进入 Armbian 以后用 root:1234 登录(**自备键盘插入另一USB口**),会被要求修改密码和创建普通用户,不想创建用户可以Ctrl+C跳过。
Ctrl+C跳过后需要再次输入root及修改的新密码进入bash

armbian默认使用的是kdahas-vim开发板的dtb,所以不完全适配n1,一些设备不工作,我们只需修改/boot/uEnv.ini指向n1的dtb即可。

- 修改前的uEnv.ini:      dtb_name=/dtb/meson-gxl-s905x-khadas-vim.dtb
- 修改后的uEnv.ini:      dtb_name=/dtb/meson-gxl-s905d-phicomm-n1.dtb

使用 meson-gxl-s905d-phicomm-n1.dtb 系统负载初始始终保持 2.0 左右,偏高不正常。

#笔者没有进行以下操作
#解决高负载问题,关键:修改随镜像文件自带的dtb文件中的一项与中断处理有关的设置: 
## 反编译原始n1 dtb文件为n1.dts
#$ dtc -I dtb -O dts -o n1.dts /boot/dtb/meson-gxl-s905d-phicomm-n1.dtb
## 用vi 或 nano打开n1.dts,将第183行注释掉。修改前:phandle = <0x1e>;  修改后: #phandle = <0x1e>;
#$ vi n1.dts

## 编译新的n1.dtb
#$ dtc -I dts -O dtb -o n1.dtb n1.dts
## 复制n1.dtb到/boot/dtb中并修改相应uEnv.ini文件
#$ sudo cp -av n1.dtb /boot/dtb/meson-gxl-s905d-phicomm-n1-xiangsm.dtb
#$ sudo sed -i -e 's/-n1/-n1-xiangsm/' /boot/uEnv.ini   # 或用vi/nano可视化编辑


# 好了,可以重启系统了,重启后,系统负载终于正常,并且各项硬件应该依然都能正常工作。
$ sudo reboot

备份原系统

强烈建议armbian刷入emmc前备份原系统文件。执行 ddbr 命令后 选 b 然后按指示操作 并等待备份完(大概需要15分钟左右),备份路径为 /ddbr/BACKUP-s9xxx-emmc.img.gz,请仔细检查是否备份成功。 若报错,很有可能是识别 emmc 失败, 这时千万不要把armbian刷入emmc,百分百变砖。

执行 lsblk
$ lsblk 
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda            8:0    1  14.6G  0 disk 
|-sda1         8:1    1   128M  0 part /boot
`-sda2         8:2    1  14.3G  0 part /
mmcblk1      179:0    0   7.3G  0 disk 
mmcblk1boot0 179:32   0     4M  1 disk 
mmcblk1boot1 179:64   0     4M  1 disk 
zram0        253:0    0    50M  0 disk /var/log
zram1        253:1    0 919.2M  0 disk [SWAP]

看到 mmcblk1 分区的才能刷入emmc

cd /root/
./install.sh
安装完成后关机
halt -p 或 showdown (关机)
拔掉电源及U盘,通电重启

登录刷入emmc的armbian系统

syslog中每10s出现一次ttyS0服务启动失败的日志。解决办法:

systemctl disable serial-getty@ttyS0
systemctl disable syslog.service
systemctl stop serial-getty@ttyS0
systemctl stop syslog.service

查看负载armbianmonitor -m(或者装一个htop更好)

监控
$ armbianmonitor -m
Stop monitoring using [ctrl]-[c]
Time        CPU    load %cpu %sys %usr %nice %io %irq   CPU

18:27:06: 1512MHz  0.00   0%   0%   0%   0%   0%   0% 43.0°C
18:27:11:  500MHz  0.00   0%   0%   0%   0%   0%   0% 42.0°C
18:27:16:  500MHz  0.00   0%   0%   0%   0%   0%   0% 42.0°C

U盘或移动硬盘分区、挂载

#ARMBIAN 5.77 Ubuntu 18.04.2 LTS 5.0.2-aml-s905
#默认即可挂载NTFS分区,但权限为777且修改无效。
#建议还是格式化为 ext4 分区再挂载

fdisk -l
fdisk /dev/sda
#p打印现有分区 d删除分区 n新建一个主分区 w保存写入分区 q退出

mkfs.ext4 /dev/sda1
mount /dev/sda1 /home/

#查看分区UUID
ls -l /dev/disk/by-uuid/
blkid /dev/sda1

vim /etc/fstab #(开机自动挂载)

UUID=46899d7f-489e-4a6d-ac7a-857a4ac2cb5b   /home     ext4    defaults    0 0

apt换源

#开机后插入网线 eth0 会自动获取ip
#通过 nmtui 图形化编辑激活WiFi
#armbian-config 也可编辑网络,修改时区,修改默认语言,修改主机名,安装软件等

#更改国内源
cp /etc/apt/sources.list /etc/apt/sources.list.Ori

sed -i "s#http://ports.ubuntu.com/#https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/#g" /etc/apt/sources.list

#更新
apt update && apt upgrade

安装docker

root@aml:~# curl -fsSL https://get.docker.com -o get-docker.sh
root@aml:~# ls
get-docker.sh 
root@aml:~# sh get-docker.sh --mirror Aliyun

#随后即进行自动安装
# Executing docker install script, commit: 2f4ae48
+ sh -c apt-get update -qq >/dev/null
+ sh -c apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c curl -fsSL "https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sh -c echo "deb [arch=arm64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ [ -n  ]
+ sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
+ sh -c docker version
Client:
 Version:           18.09.5
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        e8ff056
 Built:             Thu Apr 11 04:48:27 2019
 OS/Arch:           linux/arm64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.5
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       e8ff056
  Built:            Thu Apr 11 04:11:17 2019
  OS/Arch:          linux/arm64
  Experimental:     false
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.

修改docker镜像

修改docker镜像,改为国内镜像:

当前系统 RMBIAN 5.77 user-built Ubuntu 18.04.2 LTS 5.0.2-aml-s905

/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

之后重新启动服务。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

检查加速器是否生效

命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。

Registry Mirrors:
 https://registry.docker-cn.com/

Portainer:docker图形管理工具

恩山论坛有人安装了Portainer作为docker管理面板。尝试了下,体验还差不错。

docker volume create portainer_data

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer:linux-arm64