之前有制作也有烧录过 nano 的镜像,这次又遇到了一个相关的问题,费了点时间解决了,小做记录
烧写有风险,误操作数据易丢失
前言
这里的 nano 是指 Jetson Nano,就是一台小型计算机,普通的笔记本电脑的硬盘一般是固态硬盘或者机械硬盘,而 nano 使用的是 sd 卡,这有一个好处是可以很容易的通过更改 sd 卡的内容对 nano 的系统进行备份或者烧录,毕竟只需要拿下来并放到读卡器里即可。比如进行大批量售卖同一内容的 nano 时,只需要配好一张卡里面的环境,然后用这张卡制作一个镜像,其他的 sd 卡只需要猛猛的烧录就行了。或者你需要对自己的 nano 进行备份以防不时之需。
使用dd进行镜像制作
网上详细教程很多,这里写着主要方便自己以后用,所以写的很简陋
插⼊要备份的SD卡(TF卡),找到对应的设备名,⼀般来说会是 /dev/sdb或者/dev/sda
1 | sudo fdisk -l |
查看分区是否有挂载,一般在最后⼀⾏显⽰有挂载就先卸载
1 | df -h |
卸载挂载,/dev/sdb注意替换
1 | umount /dev/sdb1 |
使⽤dd备份镜像
1 | sudo dd if=/dev/sdb conv=sync,noerror of=空闲的某个路径/镜像名.img bs=4M |
如果你的 sd 卡是 64g,那么制作出来的镜像也是 64g,所以一般用下面的压缩指令
使用dd备份镜像并且压缩
1 | sudo dd if=/dev/sdb conv=sync,noerror bs=4M | gzip -c > 空闲的某个路径/镜像名.img.gz |
64g 的镜像压缩之后一般在 10g 左右
使用dd烧写镜像
/dev/sdb注意替换
1 | sudo dd if=空闲的某个路径/镜像名.img of=/dev/sdb bs=4M status=progress |
解压并且烧录
1 | gunzip -c 空闲的某个路径/镜像名.img.gz | sudo dd of=/dev/sdb bs=4M status=progress |
速度取决于读卡器的速度,如果是 usb3.0 的读卡器只需要半小时,平均速度50mb/s,usb2.0 的读卡器需要几个小时
status=progress可以显示实时进度

结束时会是这样,没有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 的值,不过也好,解决了就行
使用再生龙PE系统进行烧录
当硬盘总体积小时,可以用上面的方法将镜像全部打包,然后用dd烧录;或者逐个分区进行烧录(或许还要修分区表什么的?未尝试过)但如果镜像比目标硬盘大或者整体大小偏大,使用再生龙进行烧录是个不错的选择,一个安装了基础ros px4环境的镜像只有4g左右,烧录起来也十分的快。
下载再生龙镜像:https://clonezilla.nchc.org.tw/clonezilla-live/download/
烧录进行推荐使用balenaEtcher或者ventoy
再生龙有device-device和device-image等众多模式,可以把硬盘系统保存到镜像文件、把镜像烧录到新硬盘中,操作和普通pe差不多,说明非常详细
如果要将一个系统进行打包,ubuntu的话使用系统自带的disks调整硬盘空间,把没有使用的空间都变为free space,这将直接决定到打包后的镜像到底能刷入多大的硬盘之中,只能大于等于已经使用过的分区。所以如果你有一个1t的ubuntu,把不用的空间压缩打包, 是可以刷入一个512甚至256的硬盘中的
ubuntu自己不能操作自己的分区,因为正在被使用,windwos操作不用ubuntu的分区,因为会报错
所以只能用启动盘使用try ubuntu进行操作,或者把要操作的硬盘外接入另一个ubuntu中
打包好镜像后,烧录的时候值得注意的一点是(我使用的是还原镜像文件到本机硬盘,还原到分区我没有使用过),有一个k0和k1模式,k0是一比一等比克隆,也就是如果本来的镜像(指去除free space的大小,而非硬盘大小)只占用200g内存,复制完也会只有200g,多的就是free space;k1的话就会自动扩充free space,把free space纳入/分区,非常好用
说些什么吧!