这篇文章上次修改于 297 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

之前有制作也有烧录过 nano 的镜像,这次又遇到了一个相关的问题,费了点时间解决了,小做记录

烧写有风险,误操作数据易丢失

前言

这里的 nano 是指 Jetson Nano,就是一台小型计算机,普通的笔记本电脑的硬盘一般是固态硬盘或者机械硬盘,而 nano 使用的是 sd 卡,这有一个好处是可以很容易的通过更改 sd 卡的内容对 nano 的系统进行备份或者烧录,毕竟只需要拿下来并放到读卡器里即可。比如进行大批量售卖同一内容的 nano 时,只需要配好一张卡里面的环境,然后用这张卡制作一个镜像,其他的 sd 卡只需要猛猛的烧录就行了。或者你需要对自己的 nano 进行备份以防不时之需。

使用dd进行镜像制作

网上详细教程很多,这里写着主要方便自己以后用,所以写的很简陋

插⼊要备份的SD卡(TF卡),找到对应的设备名,⼀般来说会是 /dev/sdb或者/dev/sda

sudo fdisk -l

查看分区是否有挂载,一般在最后⼀⾏显⽰有挂载就先卸载

df -h

卸载挂载,/dev/sdb注意替换

umount /dev/sdb1

使⽤dd备份镜像

sudo dd if=/dev/sdb conv=sync,noerror of=空闲的某个路径/镜像名.img bs=4M

如果你的 sd 卡是 64g,那么制作出来的镜像也是 64g,所以一般用下面的压缩指令

使用dd备份镜像并且压缩

sudo dd if=/dev/sdb conv=sync,noerror bs=4M | gzip -c > 空闲的某个路径/镜像名.img.gz

64g 的镜像压缩之后一般在 10g 左右

使用dd烧写镜像

/dev/sdb注意替换

sudo dd if=空闲的某个路径/镜像名.img of=/dev/sdb bs=4M status=progress

解压并且烧录

gunzip -c 空闲的某个路径/镜像名.img.gz | sudo dd of=/dev/sdb bs=4M status=progress

速度取决于读卡器的速度,如果是 usb3.0 的读卡器只需要半小时,平均速度50mb/s,usb2.0 的读卡器需要几个小时

status=progress可以显示实时进度

image-20230309163423770.png

结束时会是这样,没有error则是成功

如果提示dd: error writing ‘/dev/sdb’: No space left on device中文是dd: 写入’/dev/sdb’ 出错: 设备上没有空间

经过多种方法的尝试,我最终还是认为:镜像制作在 64g 的 sd 卡 A 上制作,烧录在 64g 的卡 B 上,但是看磁盘信息,卡 B 比卡 A 少了一点点内存(64 和 64 亦有区别),导致烧录失败,解决办法为给新sd卡烧录一个原版镜像,再重新配环境

卡 A 的大小63,864,569,856kb
卡 A 制作出的镜像大小63,866,667,008kb
卡 B 的大小63,831,015,424kb
卡 B 制作出的镜像大小63,833,112,576kb

看起来卡 B 制作出的镜像应该能烧录到卡 A 上,但是当时并未尝试

更新:保存镜像的时候可以只保存某部分分区,让总体积小一点,烧写的时候如果无法往一块更大的磁盘上直接烧写,可以尝试创建一个一样的分区往分区里烧。

此外如果使用 jetson 的 emmc + ssd 的组合,向 ssd 中烧录镜像后需要将 emmc 也烧录一个与保存镜像那个 ssd 对应的 emmc 版本,核心版本一样

近期遇到的一个问题

由于某些情况我得到了一份 sd 卡的镜像,是 xxx.gz,我需要查看里面的内容,但是我手里没有 sd 卡,无法烧录,但是镜像是可以挂在的,所以我现将这个压缩包解压得到一个 120g 的无后缀名文件,我兴高采烈的一手双击,提示没有选择打开方式,我反手改后缀名为 img,我心想就这,不是轻松解决,但是他提示:Cannot mount block device /dev/loop read-only,搜索到相关问题是这个,但报错还是一样

其实一般情况下 .img/iso 镜像应该是可以直接双击挂载的,不知道这个为什么不行,接下来我的搜索关键词一直是挂载 镜像,试了半天最后看了一眼标题,Ubuntu挂载ISO文件,我再看了一眼 dd 制作的镜像,g,原来是 img,加上关键词 img,很容易搜到这篇文章,原来主要是要指定 offset 的值,不过也好,解决了就行

此外说说最近找到的有点用的东西

一个是 ssh 链接客户端:termius,只能说这个ui真的是太舒服了,以前都是靠 zsh 记忆或者 Windows 下就用 Xshell,或者 finalshell(Ubuntu 或者 Windows 都可以,就是ui比较简陋),付费功能可以用学生认证代替付费,可以先认证 github 的学生身份,不过那个有点坑,交了好几次照片,最后是把录取通知书、一卡通、一张小纸条(写 My github’s name is qllokirin)才通过

另外一个是百度网盘不限速:TT快下 2023.6.20 仍有效,直接冲到我带宽上限50 了,你说为什么只有 50 ?,哈哈,校园网,懂得都懂