大部分细节内容被精简,描述不会太详细,仅为内容记录。
一、准备
- 网线
- PC + N1
- 键盘(备用)
- 双公头 usb 线
- HDMI 线 + 显示器
二、注意事项
- 任何情况都不要把做好的 Armbian 系统 U 盘插入盒子自带的 Android 系统,否则该 U 盘镜像权限会被更改,并且创建很多文件/夹。
- 查看盒子 lan 和 wlan、蓝牙 MAC 地址,后期会被恢复系统等操作更改,以防那些强迫症。
三、降级
连接盒子。
① 插电、网线、双公头线 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
切换到线刷模式
adb reboot fastboot
确认设备状态
fastboot devices # 输入后显示一串序列号。如无法识别,win10 在设备管理器,右键该设备自动更新安装即可。
刷入各降级分区(2.19 版本提取)
fastboot flash bootloader bootloader.img fastboot flash boot boot.img fastboot flash recovery recovery.img
重启设备,正常开机一次
fastboot reboot
kill 掉 adb 服务(可选)
adb kill-server
四、准备 Armbian
先备份原系统,再把 Armbian 刷入 eMMC 分区脱离 U 盘引导。
制作 U 盘 Armbian 镜像
1.当前选择 Armbian_20.07_Arm-64_buster_current_5.7.9.img.xz。 2.使用 rufus 刻录 U 盘,成功后电脑会显示 boot 分区。 3.配置 uEnv.ini 修改 aml s9xxx 段:meson-gxl-s905d-phicomm-n1.dtb,这是针对 N1 的启动参数(类似驱动和硬件引导信息)其它注释掉或删除。 4.某版本开始内置斐讯 dtb,负载数值显示最低为 2.0,需反编译+修改打包才正常(仅显示问题,不影响使用)。
进入 U 盘系统(两种方法)
方法 1:执行命令,立刻把 U 盘插入 usb 口adb shell reboot update
方法 2:关机状态插好 U 盘,上电开机自动引导,也可能会失败,如失败马上拔掉 U 盘。
接下来在 U 盘系统操作
1.进入 Armbian 系统后,等待三分钟,即可远程通过 SSH 操作。 2.SSH:IP 通过路由器查看,用户 root,密码 1234 3.重复老密码 4.新密码 5.重复新密码 6.按下 Ctrl+C 跳过新建用户 7.使用 root 登陆 # 20.07 新版本会自动检测设置时区,localtion 选择 zh_CN.UTF-8 支持中文,建议默认 en_US.UTF-8 英文。 # # 检查 U 盘目录全是 root 权限才行。如发现多出 Android 文件夹,必须重做 U 盘。 ls -l /
备份原盒子系统(重要)
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 地址,如何获取?SSH 直接输入:
- ifconfig eth0 | grep -w inet | awk '{print $2}' - 路由器后台 - ip add 查看 eth0 - ifconfig eth0 - nslookup aml / nslookup amlogic (win 命令,版本更新导致失效) - 如果获取不到 IP 检查网口,网线。 - 如果获取到 IP 无法联网,手动给盒子设置 DNS。
安装 Armbian
注意:刷入 eMMC 内置分区,需了解利弊再操作!当然,前面备份好 eMMC 分区系统想怎么折腾都行。lsblk # 查看是否有 mmcblk1,看不到 emmc 分区会刷入失败。 cd ~ && ls # 查看具体刷机脚本 ./nand-sata-install # 安装命令,更老 ./install.sh # 安装命令,2019 前老版 ./install-aml.sh # 安装命令,2020 年初版 ./install-aml-s905-emmc.sh # 安装命令,该脚本会出现变砖现象,卡 logo 现象,原因是替换了独立 u-boot-s905.img poweroff # 刷完执行,避免拔电丢失配置
完成以上五个步骤后,断电、拔 U 盘,上电即可引导盒子 eMMC 分区 Armbian 系统。
五、优化处理
可以在进 U 盘系统时优化好,装到 eMMC 分区就是优化过的系统。
MAC 地址随机变动解决:
# 修改 /etc/network/interfaces 添加: # 2选1 # # Wired adapter #1 allow-hotplug eth0 no-auto-down eth0 iface eth0 inet dhcp hwaddress FC:xx:xx:xx:xx:xx # 或修改 uEnv.ini 添加: ethaddr=FC:xx:xx:xx:xx:xx
SSH 无法显示和输入中文(可选):
nano /etc/environment ARCH=arm64 LC_ALL=″en_US.utf-8″ # 生效 source /etc/environment
设置时区 x2:
[2选1] 1. armbian-config => personal => Timezone => Asia => Shanghai 2. rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
国内 Debian+Armbian 源,需修改两个位置
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 cat >> /etc/apt/sources.list << EOF # Debian 10 deb <https://mirrors.tuna.tsinghua.edu.cn/debian/> buster main contrib non-free deb <https://mirrors.tuna.tsinghua.edu.cn/debian/> buster-updates main contrib non-free deb <https://mirrors.tuna.tsinghua.edu.cn/debian/> buster-backports main contrib non-free deb <https://mirrors.tuna.tsinghua.edu.cn/debian-security> buster/updates main contrib non-free EOF # 执行 apt update && apt upgrade -y # 最后 reboot # 更多国内源:<https://leeyr.com/post/105.html>
连接 WiFi:
部分 2.4GHz 信号无法显示,只能找到 5GHz。(偶尔又能显示,但信号差断流)# 执行 armbian-config(或 nmtui) # 选择 network -> wlan0 选择 wifi 输入密码
当 Activate a connection 没有 WiFi 选项,开启模块:
# 某些版本无法操作。 modprobe dhd && echo dhd >> /etc/modules modprobe wifi_dummy && echo wifi_dummy >> /etc/modules
关闭/打开/扫描 WiFi:
nmcli radio wifi off nmcli radio wifi on iwlist wlan0 scan
系统负载监测:
armbianmonitor -m # 写入日志文件(持续) armbianmonitor -m > ~/monitor.log &
挂载 NTFS:
apt 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
挂载 U 盘:
fdisk -l # 查看磁盘情况 # 快速 mkfs.ext4 /dev/sda 格式化成 ext4 mkdir /mnt/usb mount /dev/sda /mnt/usb sed -i '/exit 0/i\\mount /dev/sda /mnt/usb' /etc/rc.local ######################################################### # 普通方式 parted /dev/sda # 在 /dev/sda 分区操作 parted 工具 $(parted) mklabel gpt # 设置分区格式,操作 Ignore->yes $(parted) mkpart logical 0 -1 # 设置逻辑分区,操作 Ignore $(parted) print $(parted) quit mkfs.ext4 -F /dev/sda1 # 格式化分区 sda1 为 ext4 --------------------------------------------------------- mkdir /mnt/usb # 创建目录供挂载使用 mount -v /dev/sda1 /mnt/usb # 挂载 U 盘 df -h # 查看挂载状态 umount -v /dev/sda1 # 解除挂载 cd ../.. # 设备忙无法卸载才使用 # 对分区进行操作 #fdisk /dev/sda
安装 samba:
apt update apt install samba samba-common -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/usb service smbd restart # 此时可读可写,完成安装。 # <https://www.techrepublic.com/article/how-to-set-up-quick-and-easy-file-sharing-with-samba/> # 修复 Samba 安装 sudo apt remove --purge samba samba-* -y sudo apt autoremove -y apt install samba -y
Read only filesystem
解决方法(未测试):# 运行 e2fsck /dev/mmcblk1p2 # 修改 install-aml.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
实时查看温度,CPU 使用率,任务详情,Kill 进程:
htop
高级监控 Zabbix:https://www.cnblogs.com/clsn/p/7885990.html
查看 CPU 支持的指令集
cat /proc/cpuinfo
无法获取 IP 相关问题解决:
- 可能的原因:两端网口状态不一,自动协商不生效,导致网络问题。
- 目前发现和 DTB 无关。
- 使用 Padavan 新版本且 LAN 口为百兆,有一定概率会发生。
- 可能和 Armbian 版本有关,第三方固件可能在自编译前被修复。
- 解决办法1:
# Wired adapter #1 auto eth0 #allow-hotplug eth0
- 解决办法2:
Padavan => 内部网络 (LAN) => 以太网交换机 => 速度和双工模式:选择 <100 Mbps, Full 或 Half Duplex: [AN]> 注:设置完 N1 立刻会获取到 IP。
修复 N1 连接千兆路由只显示百兆。需了解各个参数谨慎操作,不然盒子失联需重装系统或接显示器在可视化下恢复。
# 查看修改前信息 ------------ ethtool eth0 # 快速修改 ethtool -s eth0 speed 1000 duplex full autoneg off 参数: - eth0 网卡 - speed 速率 - duplex 双工模式:full-全双工,half-半双工 - autoneg 自动协商 # 查看修改后信息 ethtool eth0
修复无线原始 mac 地址,脚本:
20.07+ 可能不适用!
#!/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\\n' $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
修复 SSH 登陆不显示温度
老版本
ln -s /sys/devices/virtual/thermal/thermal_zone0/temp /etc/armbianmonitor/datasources/soctemp
新版本
cd /etc/update-motd.d wget https://raw.githubusercontent.com/150balbes/Build-Armbian/master/packages/bsp/common/etc/update-motd.d/10-armbian-header wget https://raw.githubusercontent.com/150balbes/Build-Armbian/master/packages/bsp/common/etc/update-motd.d/30-armbian-sysinfo wget https://raw.githubusercontent.com/150balbes/Build-Armbian/master/packages/bsp/common/etc/update-motd.d/35-armbian-tips wget https://raw.githubusercontent.com/150balbes/Build-Armbian/master/packages/bsp/common/etc/update-motd.d/40-armbian-updates wget https://raw.githubusercontent.com/150balbes/Build-Armbian/master/packages/bsp/common/etc/update-motd.d/41-armbian-config wget https://raw.githubusercontent.com/150balbes/Build-Armbian/master/packages/bsp/common/etc/update-motd.d/98-armbian-autoreboot-warn wget https://raw.githubusercontent.com/150balbes/Build-Armbian/master/packages/bsp/common/etc/update-motd.d/99-armbian-point-to-faq chmod u+x * reboot # <https://github.com/150balbes/build/tree/master/packages/bsp/common/etc/update-motd.d> # 可能是卸载 python 造成 armbian-config 依赖丢失,重新安装 armbian-config。 # htop 界面不显示温度,暂时没有解决办法。
美化 SSH
# Logo /etc/armbian-release=>BOARD_NAME="仅限英文" # 汉化 /etc/update-motd.d/30-armbian-sysinfo
注释任务
nano /etc/cron.d/armbian-truncate-logs ----------------------------------------- #*/15 * * * * root /usr/lib/armbian/armbian-truncate-logs nano /etc/cron.daily/armbian-ram-logging ----------------------------------------- #/usr/lib/armbian/armbian-ramlog write >/dev/null 2>&1
六、编译 dtb
说明:
dtb => 设备树二进制 Device Tree Binary(Blob?)
dts => 设备树源码 Device Tree Source
目前暂时适合任意版本。
先安装
apt install device-tree-compiler
反编译 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
编辑 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-intc\\0amlogic,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 之后) }; };
打包 n1.dts => n1.dtb
dtc -I dts -O dtb -o n1.dtb n1.dts rm n1.dts
后修改 uEnv.ini 文件对应 dtb 名字。
FDT=/dtb/amlogic/n1.dtb
重启
reboot
深入 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
DTB 对应版本(可忽略,或许会有些出入)
- Amlogic S905 = p200/p201
- Amlogic S905X = p212
- Amlogic S905D = p230/231
- Amlogic S905W = p281
- Amlogic S912 = q200/q201
存在问题:内存只有 1.8 GB,剩余 200MB 消失,未影响使用不深入研究:
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/_rQgn_FosYuW0g
备份
https://mega.nz/#F!fotgQS6J
https://loksado.com/2020/02/download-armbian-linux-untuk-hg680p-dan-b860h-amlogic-s905-p212/
3.Armbian 更新日志
- Linux Images for S802 S805 S812 S905 S905X S912 (SD USB eMMC)
- Single Armbian image for RK + AML + AW (aarch64 ARMv8)
4.adb 工具
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
# 四核 -> 参数 -multi 4
openssl speed -multi 4 md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048
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
更新
2020-9-15
针对新版本Armbian_20.08-20200814引导方式:
1.修改 ~/boot/extlinux/extlinux.conf,指定为 ~/boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb,其它删除。
2.修改根目录文件:斐讯 N1 使用 u-boot-s905x-s912 改为 u-boot.ext
s905 (not X) - used u-boot-s905
s905x and s912 - used u-boot-s905x-s912
s905x2 and s922 - used u-boot-s922
2021-01-03
从Armbian_20.11开始,balbes150已经移除关于s905*的dtb支持,最后版本为Armbian_20.10。
For all. I don't support s905x3. I don't have this equipment. All messages about this platform deleted. What works or doesn't work from this equipment - I don't know. I do not give any answers or comments on the s905x3 chip.
2024-7-26
最新 s905d 固件:
编译/介绍
https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/README.cn.md
下载搜索关键字 amlogic_s905d
https://github.com/ophub/amlogic-s9xxx-armbian/releases
Default username: root
Default password: 1234
博主有没有遇到过HDMI口不显示的情况?一直正常显示,断电后HDMI口就没有显示了,SSH还是可以正常登陆的。重新用img镜像再做一个系统就可以正常显示?求解方法思路.....
没遇到过。
samba为什么要运行这一步啊
chmod 777 -R /mnt/usb
能正常访问自定路径的可以忽略这步。
博主能提供一下,emmc安装脚本吗。
写 U 盘镜像,启动后在 root 根目录提取。
刷了无数次,就是不能启动,停在alert!label=rootfs doesnot exist. Dropping to a shell. 换了个TF卡刷,可以正常启动,但说需要尽快重启,但重启后又不进不去...怀疑部分U盘就是不行,但同一个U盘刷小钢炮没问题.....
刷的 armbian?DTB 用的是哪个? ini 文件修改了吗?测试三个 U 盘均成功。
刷你提供的,dtb也是,ini修改了。最后我找了一个128G的TF卡成功了。谢谢!
其实之前刷了好多版本,5.77,5.88等等好多个,我怀疑就是U盘问题。
感谢博主分享
感谢楼主分享
Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0_20191122
这个版本的刷到U盘以后,开机无法启动是什么原因导致的
检查 DTB
貌似官方已经把所有旧的固件全都删除了...
已经补上 mega 备份链接,提取密钥 jvoVKF-dOQx-O0StZxOxRQ
谢谢楼主的分享
谢谢博主分享