R86s出厂是自己带了eMMC,拿不下来,不好刷。使用官方版本的刷机脚本,刷完以后每次重启系统后,分区都是ro只读,还不如自己手工捣鼓了。
下面提供三种方法刷进去,都是大同小异,先把/dev/mmcblk0的分区表清空,然后dd命令刷入区块。
首先把OpenWrt系统的openwrt-x86-64-generic-squashfs-combined-efi.img镜像(ext4也可以,但意外关机后会产生分区表损坏,需要手工fsck,不然分区也是ro只读,系统不工作)用balenaEtcher写入到TF卡,然后给R86s接入键盘,开机,猛按F7键,选择TF卡启动,进入到OpenWrt界面。
这里有个大坑,如果eMMC上本身存在系统,会被OpenWrt默认加载,导致报错进不了TF卡上的OpenWrt。需要在原本的eMMC上的系统去清空分区表,或者借用第三方的安装盘把分区表清空。
接着,开始干掉系统原有分区表
fdisk /dev/mmcblk0
g
w
然后,我们就可以刷入系统了。
注意:使用方法一,建议第一次重启进入系统后,再重启一次。因为OpenWrt第一次重启系统会对分区和系统做一些初始化调整
如果TF卡上的系统本身是没问题的,可以正常使用,或者你希望把原本在TF卡上使用的系统刷入生产环境,那么我们可以直接把TF卡上的系统原封不动的刷入到R86s的eMMC。正常情况下,TF卡的设备是/dev/sda,eMMC是/dev/mmcblk0
dd if=/dev/sda of=/dev/mmcblk0 bs=1M count=1000
敲桌板:注意里面的count=1000,这个数字要替换。怎么换?要看你img文件的大小。比如你烧录进TF卡的img文件大小是1G,那么bs=1M,乘以count=1000,就刚好是1000M,也就是1G。如果你的img文件只有500M,那么就bs=1M count=500。简单的小学生数学问题。
执行完以后,你会看到有一个输出,比如
1000+0 records in
1000+0 records out
然后拔TF卡,重启,正常就可以进入eMMC里面的系统了。
第二个方法,如果你希望刷入干净的系统,或者你希望刷入的镜像文件和TF卡上的系统不一致,可以用这个方法。这个方法需要把刷机的系统网络和R86s是连通的。因为要用scp拷贝文件。
0、同样,先fdisk干掉分区表
1、先看下TF卡上的空间够不够装img文件。我自己的img文件就比较大,5G,TF卡是不够装的
root@BraWRT:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 254.0M 254.0M 0 100% /rom
tmpfs 3.8G 1.0M 3.8G 0% /tmp
/dev/loop0 4.8G 358.4M 4.4G 7% /overlay
overlayfs:/overlay 4.8G 358.4M 4.4G 7% /
/dev/sda1 255.7M 6.1M 249.7M 2% /boot
/dev/sda1 255.7M 6.1M 249.7M 2% /boot
tmpfs 512.0K 0 512.0K 0% /dev
可以看到根目录/下的剩余空间只有4.4G,是不够放我5G的大文件。不过我本身用的是一张32G的TF卡,剩余空间是够的。那我可以用cfdisk来分区
cfdisk /dev/sda # 要指定TF卡的设备名
进入cfdisk后,选择free space,create,write。具体过程就不累赘了。
然后fdisk -l看看新创建的分区设备名,我这里是/dev/sda3。
接着创建文件夹,挂载分区
mkdir /data
mount /dev/sda3 /data
从远程机器拷贝img文件到OpenWrt。假设OpenWrt启动后的IP是192.168.1.1
scp openwrt-x86-64-generic-squashfs-combined-efi.img [email protected]:/data
上面的命令别直接照搬,按照自己的实际情况做修改。
文件拷贝到OpenWrt后,开始dd
dd if=/data/openwrt-x86-64-generic-squashfs-combined-efi.img of=/dev/mmcblk0 bs=10M
等dd写完,拔卡,重启,搞定。
第三种方法就厉害了,合适高阶玩家,方便快捷,没有罗里吧嗦的步骤,甚至不需要用OpenWrt的TF卡来启动,其他的比如Ubuntu、Armbian的TF卡启动R86s都可以。只要是Linux系统启动的R86s,开放了ssh,支持scp,有dd命令就可以开搞。
0、随便用一个OpenWrt或者其他Linux系统启动R86s
1、在有img文件的远程机器上直接dd
dd if=openwrt-x86-64-generic-squashfs-combined-efi.img status=progress | ssh [email protected] dd of=/dev/mmcblk0 bs=1M count=6000
拔卡,重启,搞定。