armbian n1 桌面_N1盒子初体验(降级+刷armbian)
背景
在PDD上买了一台N1盒子玩,黑色版本。客服说黑色版本和白色版本硬件是一样的,仅仅是颜色的区别。
上手
本文用到的设备:
蓝牙鼠标(手边刚好一个蓝牙的)
HDMI线
显示器
网线:刷armbian后,通过网线远程盒子。
开机,接入HDMI线连接显示器,即可发现,固件版本为 V2.22_0326_NS。
插入鼠标,连接上WIFI,可以直接连接5G WIFI。
连网成功后,mac提示可以隔空播放至“乐投U1”。试了下,确实可以投屏。
降级
打开盒子adb
鼠标点击版本号四次,即可打开盒子adb。
mac安装adb
brew cask install android-platform-tools
或者直接下载包
https://dl.google.com/android/repository/platform-tools_r29.0.5-darwin.zip
下载降级固件
N1 三个分区镜像文件是V2.19版本,实测 V2.27、V2.28降级后即可正常线刷
执行降级
# adb 连接盒子
adb connect 盒子的 IP 地址
# 进入 fastboot
adb shell reboot fastboot
# 这里需要使用USB连接盒子
# 刷入 bootloader
fastboot flash bootloader bootloader.img
# 刷入 boot
fastboot flash boot boot.img
# 刷入 recovery
fastboot flash recovery recovery.img
# 重启 fastboot
fastboot reboot
结果
note@abeffect % N1_V2.19_imgs % fastboot flash bootloader bootloader.img
Sending 'bootloader' (656 KB) OKAY [ 0.041s]
Writing 'bootloader' OKAY [ 0.038s]
Finished. Total time: 0.090s
note@abeffect % N1_V2.19_imgs % fastboot flash boot boot.img
Sending 'boot' (13858 KB) OKAY [ 0.673s]
Writing 'boot' OKAY [ 0.588s]
Finished. Total time: 1.271s
note@abeffect % N1_V2.19_imgs % fastboot flash recovery recovery.img
Sending 'recovery' (17866 KB) OKAY [ 0.864s]
Writing 'recovery' OKAY [ 0.770s]
Finished. Total time: 1.653s
note@abeffect % N1_V2.19_imgs % fastboot reboot
Rebooting OKAY [ 0.001s]
Finished. Total time: 0.001s
由于上面降级仅覆盖了boot分区,所以重启后,显示的系统版本号还是原来的版本号,不会有变化。
刷机
下载刷机镜像
稳定版本:Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0_20191125。地址见本文末尾的参考中。
其中 buster 是 debian 10的代号,5.3.0是内核版本,20191125是编译日期。
制作刷机U盘
下载一个制作启动盘的工具rufus
windows下用rufus将下载好的 Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0_20191125.img.xz 刻录到U盘中。
linux下用 xz -cd Armbian_5.99_Aml-g12_Debian_buster_default_5.3.0_20191125.img.xz > /dev/sda来刻录到U盘中。
成功后,U盘上会有两个分区。一个较小的BOOT分区,格式是FAT,一个较大的ROOTFS分区,格式是ext4。
编辑 BOOT分区上的 uEnv.ini 文件
修改第一行,将路径的文件名替换为meson-gxl-s905d-phicomm-n1.dtb,即指定从U盘启动。
使用U盘启动
两种方法:
方法一:
在断电的情况下,插入U盘启动到离HDMI口近的那个USB口上,然后通电。
方法二:
不断电,插入U盘启动到离HDMI口近的那个USB口上,然后在mac上执行
adb shell reboot update
成功后,可以看到重启后,直接进入了熟悉的 linux 启动页面。
在U盘系统中安装系统到盒子
在路由器中找到aml的IP地址。
第一次没有插网线,无法远程上机器。找了根网线后,在路由器页面中可以看到名为 aml的设备,即通过U盘引导的盒子。
远程连接
默认账号为 root/1234,进去后需要立即改密码,然后按 Ctrl + C跳过新建用户。
备份原系统(留一手,这样出错了还可以恢复)
ddbr -> b -> y -> y
详情如下:
root@aml:~# ddbr
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:13653460
DO YOU WANT COMPRESSION ?
YES=(y) NO=(n) y
SAVING AND COMPRESSING mmcblk1 TO /ddbr/BACKUP-s9xxx-emmc.img.gz...
1.67GiB 0:03:59 [4.01MiB/s] [=========> ] 22% ETA 0:13:24
7.28GiB 0:09:24 [13.2MiB/s] [==============================================================================>] 100%
15269888+0 records in
15269888+0 records out
7818182656 bytes (7.8 GB, 7.3 GiB) copied, 564.043 s, 13.9 MB/s
JOB FINISHED!
确认备份成功
root@aml:/ddbr# ls -lh /ddbr/BACKUP-s9xxx-emmc.img.gz
-rw-r--r-- 1 root root 584M Mar 28 16:58 /ddbr/BACKUP-s9xxx-emmc.img.gz
将备份文件,自行复制出来,放到一个安全的地方。如果将来需要恢复备份,则重新进入U盘,执行
ddbr -> r -> y -> y
安装armbian到盒子中
查看分区
root@aml:/ddbr# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 14.9G 0 disk
├─sda1 8:1 1 128M 0 part /boot
└─sda2 8:2 1 14.6G 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 901.1M 0 disk [SWAP]
其中可见有mmcblk1,即emmc分区,才可以安装。
安装
cd ~
./install.sh // 老版本安装命令
./install-aml.sh // 新版本安装命令
poweroff // 关机
结果
Start script create MBR and filesystem
/dev/mmcblk1
Start backup u-boot default
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.14997 s, 28.0 MB/s
Start create MBR and partittion
Start restore u-boot
442+0 records in
442+0 records out
442 bytes copied, 0.00434992 s, 102 kB/s
8191+0 records in
8191+0 records out
4193792 bytes (4.2 MB, 4.0 MiB) copied, 0.368898 s, 11.4 MB/s
Done
Start copy system for eMMC.
Formatting BOOT partition...mkfs.fat 4.1 (2017-01-24)
done.
Cppying BOOT...done.
Edit init config...done.
Formatting ROOT partition...
e2fsck 1.44.5 (15-Dec-2018)
ROOT_EMMC: clean, 11/427392 files, 50723/1706240 blocks
done.
Copying ROOTFS.
Copy BIN
Create DEV
Copy ETC
Copy HOME
Copy LIB
Create MEDIA
Create MNT
Copy OPT
Create PROC
Copy ROOT
Create RUN
Copy SBIN
Copy SELINUX
Copy SRV
Create SYS
Create TMP
Copy USR
Copy VAR
Copy fstab
*******************************************
Complete copy OS to eMMC
*******************************************
断电,拔U盘,然后通电,从eMMC引导。
系统调优
设置时区
armbian-config --> personal --> Timezone --> Asia --> Shanghai
确认修改生效了
root@aml:~# ls -ld /etc/localtime
lrwxrwxrwx 1 root root 33 Mar 29 01:24 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
设置软件源
armbian-config --> personal --> Mirror --> China
然后修改文件 /etc/apt/sources.list,将
deb http://httpredir.debian.org/debian buster main contrib non-free
#deb-src http://httpredir.debian.org/debian buster main contrib non-free
deb http://httpredir.debian.org/debian buster-updates main contrib non-free
#deb-src http://httpredir.debian.org/debian buster-updates main contrib non-free
deb http://httpredir.debian.org/debian buster-backports main contrib non-free
#deb-src http://httpredir.debian.org/debian buster-backports main contrib non-free
deb http://security.debian.org/ buster/updates main contrib non-free
#deb-src http://security.debian.org/ buster/updates main contrib non-free
改为
deb http://mirrors.tuna.tsinghua.edu.cn/debian buster main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian buster-updates main contrib non-free
deb http://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
连接WIFI
用命令行直接连接WIFI
# 设置配置文件
wpa_passphrase wifi名称 wifi密码 >> /etc/wpa_supplicant/wpa_supplicant.conf
# 加载配置文件
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
# 自动获取ip
dhclient wlan0
使用nmtui设置wifi
nmtui --> Edit a connection --> Add --> Wi-Fi --> 填写对应的设置即可
如果2不行的话,最后的方法。
我这里先使用了3,再做了2,后来把3去掉了,重启后也是可以工作的。
启动自动连接WIFI,临时解决方案:在/etc/rc.local中增加下面内容
ifconfig wlan0 up
wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
dhclient wlan0
load为2
原因为网卡驱动问题,将有线网络禁用掉 ifconfig eth0 down即可正常。
彻底解析需要修改dtb。
反编译dtb -> dts
启动时的dtb文件为/boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb
执行反编译,如下,这些Warning可以忽略 。
dtc -I dtb -O dts -o n1.dts /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb
n1.dts: Warning (unit_address_vs_reg): /scpi/clocks/scpi_clocks@0: node has a unit name, but no reg property
n1.dts: Warning (unit_address_vs_reg): /soc/bus@c8100000/pinctrl@14: node has a unit name, but no reg property
n1.dts: Warning (unit_address_vs_reg): /soc/periphs@c8834000/rng: node has a reg or ranges property, but no unit name
n1.dts: Warning (unit_address_vs_reg): /soc/periphs@c8834000/pinctrl@4b0: node has a unit name, but no reg property
n1.dts: Warning (unit_address_vs_reg): /soc/periphs@c8834000/eth-phy-mux: node has a reg or ranges property, but no unit name
n1.dts: Warning (unit_address_vs_reg): /soc/usb@c9000000: node has a unit name, but no reg property
n1.dts: Warning (unit_address_vs_reg): /sound/simple-audio-card,dai-link@0: node has a unit name, but no reg property
n1.dts: Warning (unit_address_vs_reg): /gpio-keys-polled/button@0: node has a unit name, but no reg property
n1.dts: Warning (avoid_unnecessary_addr_size): /gpio-keys-polled: unnecessary #address-cells/#size-cells without "ranges" or child "reg" property
修改dts文件
修改n1.dts文件,注释掉212行,改为如下所示:
205 interrupt-controller@9880 {
206 compatible = "amlogic,meson-gpio-intc\0amlogic,meson-gxl-gpio-intc";
207 reg = < 0x00 0x9880 0x00 0x10 >;
208 interrupt-controller;
209 #interrupt-cells = < 0x02 >;
210 amlogic,channel-interrupts = < 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 >;
211 status = "okay";
212 #phandle = < 0x21 >;
213 };
编译 dts --> dtb
按下面命令编译dtb,忽略掉Warning:
dtc -I dts -O dtb -o n1.dtb n1.dts
将dtb复制到/boot/dtb中
cp n1.dts /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1-new.dtb
查看一下变化
root@aml:/boot# ls -ld /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1*
-rwxr-xr-x 1 root root 27175 Mar 29 01:10 /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb
-rwxr-xr-x 1 root root 27184 Mar 29 14:58 /boot/dtb/amlogic/meson-gxl-s905d-phicomm-n1-new.dtb
修改uEnv.ini,重新启动。
修改uEnv.ini,指向新的dtb文件,如下:
root@aml:/boot# head uEnv.ini
dtb_name=/dtb/amlogic/meson-gxl-s905d-phicomm-n1-new.dtb
bootargs=root=LABEL=ROOT_EMMC rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0
重新启动
root@aml:~# reboot
未解决的问题
emmc只读
emmc卡的读写能力不行,读写快了会变成只读系统。
桌面
安装一个桌面
armbian-config --> System --> Default
按提示,会先创建一个普通用户。
然后按提示,会安装共至少700+个软件包。
安装结束后,即可看见久违的桌面。
参考
armbian n1 桌面_N1盒子初体验(降级+刷armbian)相关推荐
- armbian ubuntu 桌面_N1盒子10分钟一键刷入OMV、HomeAssistant(站内首发)
N1盒子10分钟一键刷入OMV.HomeAssistant(站内首发) 2020-04-10 13:42:21 81点赞 974收藏 120评论 创作立场声明:一个年轻人,这次是个机智的年轻人哟 更新 ...
- linux三大桌面,三大特性!Linux 7桌面正式版初体验(组图)
三大特性!Linux 7桌面正式版初体验(组图) 作者: 51cto CNETNews.com.cn 2010-03-26 01:05:14 经过一段时间的测试,中科红旗Linux终于发布了正式版,并 ...
- armbian n1 桌面_斐讯N1折腾记:运行 Linux 及优化 | 米V米
最后更新时间:2019年03月25日 此教程同样适用于斐讯 P1 咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了官改系统,可以当作一个电视盒子和下载机来使用. 有些小伙伴可能不想把它当作电视盒子,就 ...
- .net core WinFrom桌面应用程序 初体验
1..net Core 创建WinFrom桌面应用程序 前提是安装好.netCore开发环境,以及最新的.netCore3.0以上 使用命令创建,打开CMD,输入:dotnet new winform ...
- wpf xaml突然不能自动补齐代码_Xaml+C#桌面客户端跨平台初体验
(给DotNet加星标,提升.Net技能) 转自:大头BigHeadcnblogs.com/Big-Head/p/12614118.html 前言 随着 .NET 5的到来,微软在 .NET跨平台路上 ...
- 玩客云刷armbian安装php环境_玩客云刷armbian记录
参考 写在前面 主要参考了玩客云内置 eMMC 存储刷入 armbian帖子, 本文的很多配图(水印:知乎@梨数码)也来自这个帖子,会额外补充一些注意事项. 工具 USB公对公 用于刷入带uboot的 ...
- armbian 斐讯n1_记录一下斐讯N1盒子刷Armbian的各种坑
最近搞了一个斐讯N1盒子,准备拿来刷Armbian,也就是linux. armbian使用了AArch64架构,也就是说,是armv8,安装nodejs时注意下载armv8的版本. 斐讯N1盒子自带的 ...
- 桌面环境选择_Ubuntu 18.04 桌面环境初体验
04 Ubuntu 18.04 桌面环境初体验 我前面的文章有介绍怎么在物理机上安装 Ubuntu Desktop 18.04 操作系统,当时安装完重启进入系统后就没有接着介绍了.今天就一起来看看 U ...
- w ndows7中桌面图标,七仔教你学习Windows 7:桌面初体验
[IT168 软件技巧]朋友,你还在坚守"XP"吗?你还在忍受"Vista"吗?为什么不试试Windows 7?只要你曾领略她卓越的性能.华丽的外表,就一定会为 ...
最新文章
- 阿里云发布第四代神龙架构云计算首次进入5微秒时延时代
- 报错解决 :Couldn't find any package by regex 'g++-8'
- matlab simulink数据导出到变量区
- Special Numbers 进制(1100)
- Python教程分享之Python基础知识点梳理
- [转]XNA 3.1 转换到 XNA4.0 的备忘录
- 黄文俊:Serverless小程序后端技术分享
- 在VS上部署OpenGL
- Android编程之SparseArrayE详解 Android编程之SparseArrayE详解
- 挪威议会的内部邮件系统遭攻击,信息被盗
- vscode调试html文件,vscode调试html文件
- iOS 9检测QQ、微信是否安装
- 彼得.泰尔:认知未来是投资人的谋生之道
- Java中的方法重载(overload)
- 计量单位报错:消息号BM302 “未使用语言 ZH 创建单位 XXX”
- openwrt 使用自定义 DNS
- Word学习笔记:P6-文档封面、页眉、页脚设置
- Word 2013难搞的页眉,如何把单独一页的页眉去掉?
- echarts 柱状图,分别给每个柱子设置不同的颜色
- opencv遍历像素的方式
热门文章
- mysql在原有的字段添加字符串(用逗号分隔)
- cad旋转命令_CAD制图初学入门教程:CAD软件中旋转命令的使用技巧
- Pyqt5+Yolov5+Mss实现一个实时桌面检测软件
- vscode 解决 无法打开 chrome
- open edx_Open edX入门以托管您的课程
- 完整版 :数据分析师的一天
- 淘宝网页显示不正常,其它网站正常显示---解决办法
- easyui01人门基础
- java仙侠回合制单机游戏_2019回合仙侠手游排行榜 好玩的回合制单机仙侠手游推荐...
- 心率检测仪的设计与实现