N1 备份 + 刷机 + 安装 Armbian

云水 智能电视盒子 2020-02-21 20:17:35 9431 0 N1

Armbian

大部分细节内容被精简,描述不会太详细,仅为内容记录。

一、准备

  • 网线

  • PC + N1

  • 键盘(备用)

  • 双公头 USB 线

  • HDMI 线 + 显示器

二、注意事项

  • 任何情况都不要把做好的 Armbian 系统 U 盘插入盒子自带的 Android 系统,否则该 U 盘镜像权限会被更改。

  • 联网后路由器后台查看盒子 lan 和 wlan 的 MAC 地址,后期会被恢复系统等操作更改,以防不测。

三、降级

  1. 连接盒子。
    ① 插电、网线、双公头线 USB + HDMI(显示器)
    ② adb 连接 N1(IP 地址会在 HDMI 屏幕显示)

    adb connect 192.168.0.92:5555
    
    * daemon not running; starting now at tcp:5037
    * daemon started successfully
    connected to 192.168.0.92:5555
  2. 切换到线刷模式

    adb reboot fastboot
  3. 确认设备状态

    fastboot devices
    # 输入后显示一串序列号。如无法识别,win10 在设备管理器,右键该设备自动更新安装即可。
  4. 刷入各降级分区(2.19 版本提取)

    fastboot flash bootloader bootloader.img
    fastboot flash boot boot.img
    fastboot flash recovery recovery.img
  5. 重启设备,正常开机一次

    fastboot reboot
  6. kill 掉 adb 服务(可选)

    adb kill-server

四、准备 Armbian

先备份原系统,再把 Armbian 刷入 eMMC 分区脱离 U 盘引导。

  1. 制作 U 盘 Armbian 镜像

    1.当前选择 Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0。
    2.rufus 刻录 U 盘,完成后电脑会显示 boot 分区。
    3.修改 uEnv.ini 为 meson-gxl-s905d-phicomm-n1.dtb 这是针对 N1 的启动钥匙(类似驱动和硬件引导信息)。
    4.某版本开始内置斐讯 dtb,负载数值显示 2.0,需反编译打包修改才正常(仅是显示问题,不影响使用)。
  2. 进入 U 盘系统(两种方法)
    方法 1:执行命令,立刻把 U 盘插入 USB 口

    adb shell reboot update

    方法 2:关机状态插好 U 盘,上电开机自动引导,也可能会失败,如果失败马上拔掉 U 盘。

  3. 接下来在 U 盘系统操作

    1.进入 Armbian 后,屏幕 SSH 界面可能不显示 IP。
    2.用户 root,密码 1234
    3.重复当前密码
    4.新密码
    5.重复新密码
    6.按下 Ctrl+C 跳过新建用户
    7.使用 root 登陆
    
    # 检查 U 盘目录情况,全部都是 root 权限才正常。如多个 Android 文件夹,必须重做 U 盘。
    ls -l /
  4. 备份原系统(重要

    1.开始备份,输入命令顺序
    ddbr -> b -> y -> y
    =====================
    DO YOU WANT TO BACKUP OR RESTORE ?
    BACKUP=(b) RESTORE=(r) b
    AVAILABLE DEVICES: mmcblk1 sda1 sda2
    YOU ARE RUNNING buster FROM sda2
    INTERNAL EMMC IS: mmcblk1 SIZE:        7634944
    ROOT (sda2) FREE SPACE IS:             13179140
    DO YOU WANT COMPRESSION ?
    YES=(y) NO=(n) y
    SAVING AND COMPRESSING mmcblk1 TO /ddbr/BACKUP-s9xxx-emmc.img.gz...
    3.01GiB 0:09:08 [7.21MiB/s] [============>                     ] 40% ETA 0:12:59
    
    2.确认备份
    cd /ddbr && ls -lht
    -rw-r--r-- 1 root root 613M Jul 10 15:26 BACKUP-s9xxx-emmc.img.gz
    
    # 提取备份(在 U 盘系统 /ddbr 目录里)。
    # 可以通过 FlashFXP 或 WinSCP 下载到本地。
    
    3.恢复备份(测试通过),重新进入 U 盘系统执行
    ddbr -> r -> y -> y

SSH 操作须有 IP 地址,如何获取盒子 IP?

SSH 直接输入:`ifconfig eth0 | grep -w inet | awk '{print $2}'`
路由器后台
ip ad
ifconfig
nslookup aml 或 nslookup amlogic (win 命令)
拿不到 IP 检查网口,网线
拿到 IP 但无法联网,手动给盒子设置 DNS。
  1. 安装 Armbian
    注意:刷入 eMMC 内置分区,需了解利弊再操作!当然,前面备份好 eMMC 分区系统想怎么折腾都行。

    lsblk                        # 查看是否有 mmcblk1 才能安装,看不到 emmc 分区会安装失败。
    
    cd ~ && ls。
    ./install.sh                 # 安装命令,2019 老版本
    ./install-aml.sh             # 安装命令,2020 新版本
    poweroff                     # 刷完执行,避免拔电丢失配置

上面 5 个步骤操作完,断电、拔 U 盘,上电引导 eMMC 分区 Armbian 系统。

五、优化处理

可以在进 U 盘系统时优化好,装到 eMMC 分区就是优化过的系统。

  1. syslog 中每 10s 出现一次 ttyS0 服务启动失败的日志:

    systemctl disable serial-getty@ttyS0
    systemctl stop serial-getty@ttyS0
    #systemctl disable syslog.service
    #systemctl stop syslog.service
  2. MAC 地址随机变动解决办法:

    # 修改 /etc/network/interfaces,添加:
    [二选一]
    hwaddress ether FC:xx:xx:xx:xx:xx
    pre-up ifconfig eth0 hw ether FC:xx:xx:xx:xx:xx
    
    # 或直接修改 uEnv.ini 添加:
    ethaddr=FC:xx:xx:xx:xx:xx
  3. 禁用无线网卡 ipv6(可选):

    echo 'net.ipv6.conf.wlan0.disable_ipv6 = 1' >> /etc/sysctl.conf
  4. SSH 无法显示和输入中文(可选):

    nano /etc/environment
    ARCH=arm64
    LC_ALL=″en_US.utf-8″
    
    # 生效
    source /etc/environment
  5. 设置时区 x2:

    [二选一]
    1.armbian-config => personal => Timezone => Asia =>  Shanghai
    2.rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && Asia/Shanghai" > /etc/timezone
  6. 删除默认 DNS(可选):

    rm /etc/resolvconf/resolv.conf.d/head && touch /etc/resolvconf/resolv.conf.d/head
    reboot
    
    # 查看当前 DNS
    cat /etc/resolv.conf
  7. 国内 apt 源,修改 2 个位置

    1.执行 armbian-config,选择 personal,选择 Mirror China。
    # 等同于修改 /etc/apt/sources.list.d/armbian.list
    # mirrors.tuna.tsinghua.edu.cn/armbian
    
    2.快速修改:
    mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
    tee /etc/apt/sources.list <<-'EOF'
    # Debian 10-Buster
    deb https://mirrors.ustc.edu.cn/debian/ buster main contrib non-free
    deb https://mirrors.ustc.edu.cn/debian/ buster-updates main contrib non-free
    deb https://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free
    #deb-src https://mirrors.ustc.edu.cn/debian/ buster main contrib non-free
    #deb-src https://mirrors.ustc.edu.cn/debian/ buster-updates main contrib non-free
    #deb-src https://mirrors.ustc.edu.cn/debian-security/ buster/updates main contrib non-free
    EOF
    
    tee /etc/apt/sources.list <<-'EOF'
    # Debian 9-Stretch
    deb http://mirrors.aliyun.com/debian stretch main contrib non-free
    deb http://mirrors.aliyun.com/debian stretch-updates main contrib non-free
    deb http://mirrors.aliyun.com/debian-security stretch/updates main contrib non-free
    #deb-src http://mirrors.aliyun.com/debian stretch main contrib non-free
    #deb-src http://mirrors.aliyun.com/debian stretch-updates main contrib non-free
    #deb-src http://mirrors.aliyun.com/debian-security stretch/updates main contrib non-free
    EOF
    
    # 执行 apt update && apt upgrade -y
    # 最后 reboot 重启。
    # 更多国内源:https://leeyr.com/105.html
  8. 连接 WiFi:
    部分 2.4GHz 信号无法显示,只能找到 5GHz,原因未知(突然又能显示原因未知,信号差,断流)。

    # 执行
    armbian-config(或 nmtui)
    # 选择
    network -> wlan0
    选择 wifi 输入密码
  9. 当 Activate a connection 没有 WiFi 选项,开启模块:

    modprobe dhd && echo dhd >> /etc/modules
    modprobe wifi_dummy && echo wifi_dummy >> /etc/modules
  10. 关闭 / 打开 / 扫描 WiFi:

     nmcli radio wifi off
     nmcli radio wifi on
     iwlist wlan0 scan
  11. 系统负载监测:

     armbianmonitor -m
    
     # 不显示温度修复(未测试):ln -s /sys/devices/virtual/thermal/thermal_zone0/temp /etc/armbianmonitor/datasources/soctemp
  12. 挂载 NTFS:

     apt-get install ntfs-3g
     mkdir /mnt/Disk
     mount -t ntfs-3g /dev/sda1 /mnt/Disk
     # 编辑 fstab
     #/dev/sda1 /mnt/Disk ntfs defaults 0 0
     #/dev/sda1 /mnt/Disk ext4 defaults 0 0
     # 执行 mount -a
  13. 挂载 U 盘:

     fdisk -l                    # 查看磁盘情况
     mkfs.ext4 /dev/sdb          # u 盘是 sdb,执行格式化 sdb
     mkdir /mnt/USB              # 创建目录供挂载使用
     mount -v /dev/sdb /mnt/USB  # 挂载 U 盘
     df -h                       # 查看挂载状态
     umount -v /dev/sdb          # 解除挂载
    
     # 备用方法
     parted /dev/sda
     mklabel gpt
     yes
     mkpart logical 0 -1
     ignore
     print
     quit
     mkfs.ext4 -F /dev/sda2
  14. 安装 samba:

     apt-get update
     apt-get install samba -y
     # 提示 Modify smb.conf to use WINS settings from DHCP?
     # 选择 YES
     # https://www.linuxquestions.org/questions/linux-software-2/samba-profiles-and-wins-608694/
    
     cp -pf /etc/samba/smb.conf /etc/samba/smb.conf.bak
    
     nano /etc/samba/smb.conf
     ##########################
     [N1]
     comment = N1 共享
     available = yes
     browseable = yes
     create mode = 0664
     directory mmode = 0775
     force create mode = 0775
     force directory mode = 0775
     path = /media/C/SMB
     public = yes
     read only = no
     writable = yes
     # 高级玩法 https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
    
     # 授权
     chmod 777 -R /mnt/Disk
     service smbd restart
    
     # 此时可读可写,完成安装。
     # https://www.techrepublic.com/article/how-to-set-up-quick-and-easy-file-sharing-with-samba/
  15. 禁用红外(可选,部分固件默认未安装):

     systemctl stop lircd.service lircd-setup.service lircd.socket lircd-uinput.service lircmd.service
     apt autoremove -y lirc && apt autoremove lirc -y
  16. 禁用 NFS 服务(可选):

     systemctl disable nfs-server
  17. Armbian 允许 PING(可选):

     echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
     sysctl -p /etc/sysctl.conf
  18. Read only filesystem 解决方法(未测试):

     # 运行
     e2fsck /dev/mmcblk1p2
    
     # 修改
     install.sh
     parted -s "${DEV_EMMC}" mkpart primary fat32 700M 828M
     parted -s "${DEV_EMMC}" mkpart primary ext4 829M 100%
    
     # 改成
     parted -s "${DEV_EMMC}" mkpart primary fat32 1024M 1152M
     parted -s "${DEV_EMMC}" mkpart primary ext4 1153M 100%
    
     # 验证方式
     sync
     echo s >/proc/sysrq-trigger
     echo u >/proc/sysrq-trigger
     fsck.ext4 -fvy /dev/mmcblk1p2
  19. 系统自带状态面板,交互式实时查看温度,CPU 使用率,任务详情,Kill 进程。命令:

     htop

    htop

  20. 查看 CPU 支持的指令集

     cat /proc/cpuinfo
  21. 修复无法获取 IP
    原因:两边网卡的工作状态不统一,网络不通,自动协商不生效。

     Padavan => 内部网络 (LAN) => LAN x =>  以太网交换机 => 速度和双工模式:选择 <100 Mbps, Half Duplex: [AN]>
    
     提示:
     设置完 N1 马上就能拿到 IP。
     最后,检查所有局域网设备是否正常上网,有些设备自动协商可能会出现兼容问题。
    1. 和 DTB 无关。

    2. 使用 Padavan 新版本并且 LAN 口为百兆,问题可能会存在。

    3. 和 Armbian 系统版本有关,原始系统可能会发生。第三方编译固件可能会被修复。

    4. 解决办法

  22. 修复连接千兆路由,但 N1 只显示百兆,了解参数后谨慎操作。

     # 查看修改前信息
     ethtool eth0
    
     # 快速修改
     ethtool -s eth0 speed 1000 duplex full autoneg off
     -eth0       网卡
     -speed      速率
     -duplex     双工模式:full-全双工,half-半双工
     -autoneg    自动协商
    
     # 查看修改后信息
     ethtool eth0
     ------------
  23. 修复无线网卡 mac 地址。脚本 FixWlanMAC.sh:

     #!/bin/bash
    
     #update:2019-11-11
     #author:alon2000
    
     #LAN_MAC=`ifconfig eth0 | grep -w ether | awk '{print $2}'`
     LAN_MAC=`cat /sys/class/net/eth0/address`
     MAC_HEAD=`echo $LAN_MAC|cut -c1-15`
     MAC_TAIL=`echo $LAN_MAC|cut -c16-17`
     MAC_TAILn=$((16#${MAC_TAIL}-1))
    
     WLAN_MAC="$(printf '%s%02x
    ' $MAC_HEAD $[MAC_TAILn])"
    
     if [[ -f "/lib/firmware/brcm/brcmfmac43455-sdio.phicomm,n1.txt" ]] ; then
       sed -i -e "s/^macaddr=b8:27:eb:74:f2:6c$/macaddr=$WLAN_MAC/" 
         "/lib/firmware/brcm/brcmfmac43455-sdio.phicomm,n1.txt"
     fi
    
     if [[ -f "/lib/firmware/brcm/brcmfmac43455-sdio.txt" ]] ; then
       sed -i -e "s/^macaddr=b8:27:eb:74:f2:6c$/macaddr=$WLAN_MAC/" 
         "/lib/firmware/brcm/brcmfmac43455-sdio.txt"
     fi
    
     WiFi MAC address modified successfully! reboot..."
     reboot

六、编译 dtb

说明:
dtb => 设备树二进制 Device Tree Binary(Blob?)
dts => 设备树源码 Device Tree Source

  • 先安装

    apt install device-tree-compiler
  1. 反编译 dtb => n1.dts

    # 旧版本(5.98 之前)
    cd /boot/
    dtc -I dtb -O dts -o n1.dts meson-gxl-s905d-phicomm-n1.dtb
    
    # 新版本(5.98 之后)
    cd /boot/dtb/amlogic/
    dtc -I dtb -O dts -o n1.dts meson-gxl-s905d-phicomm-n1.dtb
  2. 编辑 n1.dts 代码

    # 编辑 *.dts
    nano n1.dts
    
     bus@c1100000 {
         compatible = "simple-bus";
         reg = < 0x00 0xc1100000 0x00 0x100000 >;
         #address-cells = < 0x02 >;
         #size-cells = < 0x02 >;
         ranges = < 0x00 0x00 0x00 0xc1100000 0x00 0x100000 >;
    
         interrupt-controller@9880 {
             compatible = "amlogic,meson-gpio-intcamlogic,meson-gxl-gpio-intc";
             reg = < 0x00 0x9880 0x00 0x10 >;
             interrupt-controller;
             #interrupt-cells = < 0x02 >;
             amlogic,channel-interrupts = < 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 >;
             status = "okay";
             #phandle = < 0x1e >; // 旧版本(5.98 之前)
             #phandle = < 0x21 >; // 新版本(5.98 之后)
         };
     };
  3. 打包 n1.dts => n1.dtb

    dtc -I dts -O dtb -o n1.dtb n1.dts
    rm n1.dts
  4. 保证 n1.dtb 在响应目录,最后修改 uEnv.ini 文件对应 dtb 名字。

    #cp -av n1.dtb /boot/dtb/n1.dtb
    #cp -av n1.dtb /boot/dtb/amlogic/n1.dtb
  5. 重启

    reboot
  6. 深入 DTB

    • linux 设备树笔记 --dts 基本概念及语法

    • Linux DTS(Device Tree Source) 设备树详解之一 (背景基础知识篇)

    • Linux DTS(Device Tree Source) 设备树详解之二 (dts 匹配及发挥作用的流程篇)

    • Linux DTS(Device Tree Source) 设备树详解之三 (高通 MSM8953 实例分析篇)

    • https://blog.csdn.net/radianceblau/article/details/70800076

  7. DTB 对应版本

    • Amlogic S905 = p200/p201

    • Amlogic S905X = p212

    • Amlogic S905D = p230/231

    • Amlogic S905W = p281

    • Amlogic S912 = q200/q201

  8. 存在问题:内存只有 1.8 GB,剩余的去哪里了?未影响使用暂不深入研究:

     linux,cma {
             compatible = "shared-dma-pool";
             reusable;
             size = < 0x00 0x38000000 >;
             alignment = < 0x00 0x400000 >;
             linux,cma-default;
         };
    
     # 学习资料:http://www.wowotech.net/memory_management/cma.html

七、其它

1. 内核更新
https://apt.armbian.com/pool/main/l/ (搜索 aml)

2.Armbian 镜像
https://yadi.sk/d/pHxaRAs-tZiei
https://mega.nz/#F!j9QSDQSQ!6WpasOlbZYIInfw6yo4phQ
https://github.com/150balbes/Amlogic_s905/wiki
https://mega.nz/#F!fotgQS6J 备份

3.Armbian 更新日志
https://forum.freaktab.com/forum/tv-player-support/amlogic-based-tv-players/606133-linux-images-for-s802-s805-s812-s905-s905x-s912-sd-usb-emmc?filter_time=time_all

4.adb 工具
https://dl.google.com/android/repository/platform-tools-latest-windows.zip

5. 其它固件
https://www.right.com.cn/forum/thread-428599-1-1.html
https://github.com/yangxuan8282/phicomm-n1
https://www.youtube.com/watch?v=MhFGNHEe3NY

6. 跑个分

# 单核
openssl speed md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048

# 四核
openssl speed -multi 4 md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048

7. 镜像定制
https://forum.xda-developers.com/android-stick--console-computers/amlogic/opensource-amlogic-tools-t3786991

8. 如何救砖
https://www.right.com.cn/forum/thread-362781-1-1.html

9. 如何把 N1 搞坏
https://www.right.com.cn/forum/thread-627425-3-1.html


版权声明

1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)

本文链接:http://apod.cc/index.php/post/253.html

发表评论

评论列表(0人评论 , 9431人围观)
☹还没有评论,来说两句吧...