斐讯P1刷armbian变身linux小型服务器


前情提要

斐讯P1即之前的N1天天链矿机,N1翻车后不到一年的时间内被玩机圈硬生生搞成了SBC(单板电脑),玩出了电视盒子、Linux服务器、NAS、路由器等多种花样,连官方也受到启发把N1改头换面成P1电视盒子,线上销售清库存。以70~90的价格来看,这玩意的性价比远超树莓派,300元以性能内无敌手的称号可以说当之无愧。除了没有GPIO,也就是说不能玩嵌入式开发以外,其最大的缺点就是需要折腾,毕竟不是开源硬件,刷机之类的得需要上网多搜搜教程。好在已经有恩山论坛的各种大牛铺路,对于计算机背景的人来说,折腾起来也不算麻烦。在此过程中的一个感受是,不论软件还是硬件,拥抱开源才是正道。

准备

  • 双头USB线一根
  • 降级到2.19的分区固件
  • armbian for Amlogic S905固件
    • 开发者balbes150
    • 下载地址yadi.sk,建议选择5.77(Linux5.0.2内核)版本,5.88及5.89会有wifi无法识别的问题
  • 为N1适配优化的dtb文件(可选)
    • Linux 5.0.2适配版:meson-gxl-s905d-phicomm-n1-xiangsm.dtb,地址
  • adb调试工具
  • u盘及u盘刻录软件

降级

  • N1/P1盒子开机,进入android系统

    • 联网
    • 打开远程调试
  • 电脑端远程降级

    • 解压 adb调试工具
    • 将分区固件 bootloader.img 、boot.img 、 recovery.img 拷贝到 adb所在目录
    • 远程连接盒子,重启进入fastboot模式

      adb connect 192.168.10.127 #盒子ip
      adb shell reboot fastboot
    • 验证设备能够被正常识别

      fastboot devices
    • 刷入降级镜像

      fastboot flash bootloader bootloader.img
      fastboot flash boot boot.img
      fastboot flash recovery recovery.img
    • 重启盒子

      fastboot reboot

制作armbian启动盘

  • 将armbian for Amlogic S905固件烧入u盘

  • 打开u盘,替换dtb文件(可选,这一步可以在启动armbian之后再执行)

    • 将适配版dtb文件放入/boot/dtb

    • 修改/boot/uEnv.ini文件

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

u盘启动armbian

  • N1/P1盒子断电

  • 将启动盘插入N1/P1盒子靠近hdmi口的usb口

  • N1/P1盒子插入电源

  • 初次启动会仍然进入原android系统,这时候仍然采用adb方式远程连接并重启

    adb connect 192.168.1.184
    adb shell reboot update
  • 重启后进入armbian系统,初始登录用户名密码root/1234

armbian常用配置

  • armbian-config 可以用来配置网络、时区、语言、常用软件等内容

  • nmcli 查看/配置网络端口

  • uptime 系统使用状况,如运行时长、负载

  • armbianmonitor -m 实时查看系统负载

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

    • systemctl disable serial-getty@ttyS0
    • systemctl stop serial-getty@ttyS0
  • ddbr 备份/恢复emmc写入的系统

  • /etc/apt/sources.list 将debian的官方源修改为国内源(如mirror.tuna.tsinghua.edu.cn)

    • apt update && apt upgrade
  • 启用bbr

    • /etc/sysctl.conf末尾添加下面两行

      net.core.default_qdisc=fq
      net.ipv4.tcp_congestion_control=bbr
    • sudo sysctl -p

将系统刷入emmc

  • 执行lsblk命令查看能否正常识别mmcblk1分区,若不能识别则无法刷入emmc

  • 执行ddbr对emmc上原android系统进行备份,备份文件为/ddbr/BACKUP-s9xxx-emmc.img.gz (文件名可能会因固件版本而异)

  • 执行./root/install.sh命令将u盘中的armbian系统复制到emmc

    • 其中的install脚本可参考MY SCRIPT FOR INSTALLING ARMBIAN 5.67 INTO PHICOMM N1

    • 注意其中最后会将ddbr命令删除,介意者可以注释掉

      rm $DIR_INSTALL/usr/bin/ddbr
      rm $DIR_INSTALL/usr/bin/ddbr_backup_nand
      rm $DIR_INSTALL/usr/bin/ddbr_backup_nand_full
      rm $DIR_INSTALL/usr/bin/ddbr_restore_nand
  • 执行shutdown now关机断电,拔掉u盘后插电即可直接进入armbian

利用ddbr进行系统的备份和恢复

  • ddbr是一个利器,原理上不论是原厂android还是新刷入的armbian系统,只要有其emmc备份文件,就可以直接一键恢复:
    • 仍然通过u盘启动到armbian系统
    • 备份文件必须仍放到原路径下/ddbr/BACKUP-s9xxx-emmc.img.gz
    • ddbr恢复
  • 甚至基于ddbr来进行新盒子的系统刷入也是可行的

参考

扩展