宇树 G1 部署(七)——系统重装与镜像还原
使用过程中系统崩了,不知道是自己操作不当还是系统故障
但是宇树售后还是蛮好的,可以直接在售后提交工单,反馈的很快:宇树客户服务
参考链接:宇树科技 文档中心
既然有镜像,那就简单了,记一下流程,省的再重装忘了
有几个重点先说明:
1. 强烈不建议把普通 U 盘作为引导设备,nvme 盘是必须的,因此 nvme 移动硬盘盒也是必须的
2. 系统镜像还原后还挺大的,如果想做个新系统记得 1T 及以上 nvme 盘
3. 我一开始以为 G1 系统重装和 win/linux 一样靠启动盘,直到我买的 256g nvme 盘没装下 8g 的引导系统后,才明白这应该是直接在上面装的系统而不是制作启动盘
4. 宇树售后也会犯错,很多问题还是要根据自己判断
目录
1 整体流程及逻辑
2 系统重装
2.1 查看端口
2.2 格式化
2.3 镜像烧录
2.4 替换 G1 设备树
3 镜像备份
1 整体流程及逻辑
重装有两种方法:
1. 拆机取下 G1 内部的 nvme 硬盘,然后直接在此硬盘上安装系统;
2. 拿一个新的硬盘重装系统,然后在启动过程中按 F11 进入 BIOS/UEFI 选择新装好的系统盘,然后通过引导往 G1 的 pc2 里面烧系统,然后取下新硬盘重启
说实话我觉得2更靠谱,但是官方给的答复是:
重装的过程中突然想到,官方教程说到系统恢复是“上述实验的逆过程”,那第二种方法才应该是更好的吧......有种被坑了的感觉
如果下次再重装系统那就测试一下2!
记录一下拆机系统重装的流程
2 系统重装
首先拆掉背板取下 nvme 硬盘(此处吐槽一下,G1 真的更像是一个玩具而不是工业级机器人,后盖的四个角螺钉根本就没有,只要把两个内六角螺栓拧下来就可以撬开了,假装式设计)
然后再准备一个 nvme 移动硬盘盒,组装装好后插在 PC 端上开始重装
2.1 查看端口
lsblk -o NAME,SIZE,MODEL,FSTYPE,MOUNTPOINT
(base) yejiangchen@yejiangchen:~$ lsblk -o NAME,SIZE,MODEL,FSTYPE,MOUNTPOINT
NAME SIZE MODEL FSTYPE MOUNTPOINT
loop0 4K squashfs /snap/bare/5
loop1 73.9M squashfs /snap/core22/2045
loop2 73.9M squashfs /snap/core22/2010
loop3 245.5M squashfs /snap/firefox/6316
loop4 245.3M squashfs /snap/firefox/6495
loop5 497M squashfs /snap/gnome-42-2204/141
loop6 516M squashfs /snap/gnome-42-2204/202
loop7 91.7M squashfs /snap/gtk-common-themes/1535
loop8 12.3M squashfs /snap/snap-store/959
loop9 12.2M squashfs /snap/snap-store/1216
loop10 50.9M squashfs /snap/snapd/24718
loop11 49.3M squashfs /snap/snapd/24792
loop12 568K squashfs /snap/snapd-desktop-integration/253
loop13 576K squashfs /snap/snapd-desktop-integration/315
sdc 1.9T iPlus5000 2TB
├─sdc1 1.9T ext4 /media/yejiangchen/7073f027-1f76-471e-8386-b7ac9f58e0e6
├─sdc2 64M
├─sdc3 448K
├─sdc4 32M
├─sdc5 64M
├─sdc6 448K
├─sdc7 32M
├─sdc8 80M
├─sdc9 512K
├─sdc10 300M
├─sdc11 64M vfat
├─sdc12 80M
├─sdc13 512K
└─sdc14 64M
nvme0n1 1.9T ZHITAI TiPlus7100 2TB
├─nvme0n1p1 512M vfat /boot/efi
└─nvme0n1p2 1.9T ext4 /
可以看到该 nvme 存储设备的设备节点为 sdc
2.2 格式化
如果存储设备是第一次使用,需要将磁盘进行格式化为 ext4:
sudo mkfs -t ext4 /dev/sdc
但是我是直接取下之前的,做不做理论都可以,但我格式化了
2.3 镜像烧录
备注:宇树出厂的镜像下载地址在这里
NX 镜像:nx.img.bz2
链接:https://pan.baidu.com/s/1yPnZ6hCGSEAlpht3YvNzAQ?pwd=1221
提取码:1221NANO 镜像:nano.img.bz2
链接:https://pan.baidu.com/s/1lkj-VhcczexOgr4dEnge0Q?pwd=1221
提取码:1221
下载 NX 镜像:nx.img.bz2
完成后,开始镜像烧写:
bzip2 -dc /home/yejiangchen/Desktop/Codes/unitree/nx.img.bz2 | sudo dd of=/dev/sdc status=progress
此处说明几点:
1. 用 dd 写整个镜像到目标盘:
- dd 会原样把整个镜像的内容(分区表、MBR/GPT、分区、文件系统、数据等)按扇区全部覆盖写入到目标磁盘
- 旧系统、原有分区、文件系统等全部被抹掉/覆盖,和格式化没本质区别,最终磁盘结构和 img 文件内容100%一致
- 即使目标盘之前有任何数据、分区、格式化信息,都会被新镜像覆盖。
2. bzip2 -dc:解压文件并输出到标准流,路径采用了绝对路径
3. status=progress:显示实时进度,如下图
重要的事情说三遍:
烧录(dd 镜像写入)的时候,硬盘必须是 unmount(未挂载)状态!!!
烧录(dd 镜像写入)的时候,硬盘必须是 unmount(未挂载)状态!!!
烧录(dd 镜像写入)的时候,硬盘必须是 unmount(未挂载)状态!!!
因为如果烧录的磁盘仍有分区挂载,操作系统和文件系统会认为这个分区还在被使用,这会导致烧录写入时文件系统和磁盘结构冲突
就因为每次格式完手贱点进去看一眼,让我烧了四次每次都是空的,排查后才发现这个问题
(base) yejiangchen@yejiangchen:~$ bzip2 -dc /home/yejiangchen/Desktop/Codes/unitree/nx.img.bz2 | sudo dd of=/dev/sdc status=progress
[sudo] password for yejiangchen:
256037900800 bytes (256 GB, 238 GiB) copied, 5675 s, 45.1 MB/s
500118192+0 records in
500118192+0 records out
256060514304 bytes (256 GB, 238 GiB) copied, 5675.46 s, 45.1 MB/s
-
dd 输出中 records in 和 records out 数字相同,说明数据流没有中断/丢失
-
数据总量和镜像大小基本一致
-
命令返回到了shell提示符,没有报错,烧录100%完成
再次查看可以看到 sda 1.9T iPlus5000 2TB 已经装好了
(base) yejiangchen@yejiangchen:~/Desktop/Codes/unitree$ lsblk -o NAME,SIZE,MODEL,FSTYPE,MOUNTPOINT
NAME SIZE MODEL FSTYPE MOUNTPOINT
loop0 4K squashfs /snap/bare/5
loop1 73.9M squashfs /snap/core22/2010
loop2 73.9M squashfs /snap/core22/2045
loop3 245.5M squashfs /snap/firefox/6316
loop4 245.3M squashfs /snap/firefox/6495
loop5 497M squashfs /snap/gnome-42-2204/141
loop6 516M squashfs /snap/gnome-42-2204/202
loop7 91.7M squashfs /snap/gtk-common-themes/1535
loop8 12.2M squashfs /snap/snap-store/1216
loop9 12.3M squashfs /snap/snap-store/959
loop10 50.9M squashfs /snap/snapd/24718
loop11 49.3M squashfs /snap/snapd/24792
loop12 568K squashfs /snap/snapd-desktop-integration/253
loop13 576K squashfs /snap/snapd-desktop-integration/315
sda 1.9T iPlus5000 2TB
├─sda1 237.7G ext4 /media/yejiangchen/7073f027-1f76-471e-8386-b7ac9f58e0e6
├─sda2 64M
├─sda3 448K
├─sda4 32M
├─sda5 64M
├─sda6 448K
├─sda7 32M
├─sda8 80M
├─sda9 512K
├─sda10 300M
├─sda11 64M vfat
├─sda12 80M
├─sda13 512K
└─sda14 64M
sdb 1.8T Elements 2621
└─sdb1 1.8T ntfs /media/yejiangchen/Elements
nvme0n1 1.9T ZHITAI TiPlus7100 2TB
├─nvme0n1p1 512M vfat /boot/efi
└─nvme0n1p2 1.9T ext4 /
2.4 替换 G1 设备树
系统起来后,仍需:
1. 替换成 G1 设备树,把 kernel_tegra234-p3767-0000-p3768-0000-a0.dtb 拷贝到 /boot/dtb/ 下面, 设备树下载链接:G1设备树文件
2. 修改 ip 为 192.168.123.164
3. 安装各种驱动:网卡驱动
此时已经完成了基础功能,但依然缺很多驱动,具体安装什么后面笔记已记录
3 镜像备份
为了防止系统崩溃装的各种驱动没了,还是建议每隔一段时间备份一次系统
备份逻辑如下,和恢复的逻辑基本就是逆过程:
把 nvme 存储设备插入主机(借助 nvme 移动硬盘盒),lsblk -f 查看存储设备的节点,比如存储设备节点是 /dev/sdc/,存储设备格式是 ext4
把 nvme 存储设备备份到当前的 PC 主机上:
sudo dd if=/dev/sdc status=progress | bzip2 > nx.img.bz2
上述命令执行结束后,把系统盘从主机移除
拿到新的 nx.img.bz2 就可以下次使用啦
更多问题可以查看 G1 SDK 开发指南