TK1入门教程基础篇-备份和恢复
TK1入门教程基础篇-备份和恢复
说明:
- 介绍如何进行备份镜像和恢复镜像
读取分区表:
- 进入启动目录
cd /opt/JetPackTK*/Linux_for_Tegra/bootloader
./nvflash --getpartitiontable table --bl ardbeg/fastboot.bin --go
- 这将创建一个名为table的文本文件,其中列出了分区
克隆镜像:
- 要制作现有Jetson安装的副本,首先将Jetson的micro-B USB闪存端口连接到您最初从L4T开始的Linux机器上。
- 然后按住RECOVERY并按RESET键进入恢复模式
关于Root分区和System.img
在正常烧录期间,rootfs子目录以及引导加载程序选项自定义用于创建将成为根文件系统的文件
该文件可以loopback mountable,类型为ext4(mount -t ext4 -o loop)
原来的Jetson flash.sh(L4T版本R19.x)直接使用这个文件,命名为“bootloader/system.img”
这个文件是整个rootfs的一个副本,所以如果Jetson的根文件系统是15GB,这个文件也是这样。
这需要大量的时间来安装,因此在L4T版本R21.x及更高版本中生成此文件的压缩版本。
应用程序“bootloader/mksparse”使用“0”填充模式创建根文件系统的压缩版本
flash.sh将未压缩的system.img移动到新名称system.img.raw,然后mksparse生成新的“bootloader/system.img”
“原始”文件是可环回安装的镜像,“压缩”文件用于实际烧录,使烧录时间显着缩短。
克隆的根分区是一个原始的可loopback mountable的镜像(可选地转换为压缩格式)
R21.x中的flash.sh与“bootloader/system.img”中的压缩镜像或原始镜像一起使用
如果你想要一个更快的flash或更小的system.img大小,可以使用mksparse
这假设“bootloader/system.img”是通过克隆创建的,是一个未经压缩的未解压缩镜像:
cd bootloader
sudo mv system.img system.img.raw
sudo mksparse -v --fillpattern = 0 system.img.raw system.img
- 在烧录恢复根分区的克隆时,size参数对应于原始图像的大小,单位为1024。
- 例如,如果原来的flash.sh参数“-S”被选为14580MiB,则有效的系统。
- img.raw将正好是14580 * 1024 * 1024字节,或15288238080字节。
- 对于原始“-S 14GiB”,生成的原始镜像将为14 * 1024 * 1024 * 1024 = 15,032,385,536字节(略小于14580MiB)。
旧Jetson TK1开发包
- cd进入您最初烧录Jetson时使用的Linux_for_Tegra/bootloader目录。
- 检查flash.cfg以获取system.img的分区ID(在这种情况下为9)
[partition]
name=APP
id=9
type=data
allocation_policy=sequential
filesystem_type=basic
size=15288238080
file_system_attribute=0
partition_attribute=0
allocation_attribute=8
percent_reserved=0
filename=system.img
- 接下来,删除从初始烧录构建的旧system.img,并从Jetson下载新映像。
- 如果您的system.img分区的id不同于9,请在nvflash命令中替换。
sudo rm system.img
sudo ./nvflash --read 9 system.img --bl fastboot.bin --go
- 在更新的Jetson TK1开发包版本上,fastboot.bin已被移动到ardbeg/fastboot.bin
- 下载镜像可能需要一段时间
最近的Jetson TK1开发包
- 分区可以通过名称或号码读取。
- APP是根文件系统的分区。您可以检查分区表中有一个APP分区。
- 它可能是分区9。
- 然后,您可以通过执行以下操作将分区克隆到名为system.img的文件:
sudo ./nvflash --read APP system.img --bl ardbeg / fastboot.bin --go
下载镜像可能需要一段时间
您还可以通过执行以下操作来克隆整个Flash:
sudo ./nvflash --rawdeviceread 0 3849216 all.img --bl ardbeg / fastboot.bin --go
- 下载镜像可能需要一段时间
安装
- 要将备份的镜像安装到系统中,请执行以下命令:
sudo mount -t ext4 -o loop system.img /mnt
- 您现在可以检查/mnt中的Jetson的文件系统,进行编辑,执行交叉编译等。
- 完成后,用以下方式卸载镜像:
sudo umount /mnt
恢复
- 可以使用-r 忽略构建并重新使用现有的system.img标志来将映像恢复为Jetson。
- 如果您最初烧录的尺寸不同于14580MiB,则替换分区的大小。
cd ../
sudo ./flash.sh -r -S 14580MiB jetson-tk1 mmcblk0p1
- 完成闪烁后重新启动Jetson,并且系统应该恢复到克隆时的状态。
同样,以下还将恢复完整镜像克隆。
sudo ./nvflash --rawdevicewrite 0 3849216 all.img --bl ardbeg/fastboot.bin --go
打包
- 保留克隆过程中使用的Linux_for_Tegra目录,以成功还原映像。
- Linux_for_Tegra/rootfs可以被删除,因为它不再需要。
- 但是,其他的L4T文件应该与system.img一起运行,以便在恢复时使用。
sudo rm -r -f rootfs
cd ../
tar -zcvf my_backup.tar.gz Linux_for_Tegra
- tar.gz可以显着压缩system.img的大小,并保留访问权限,现在方便copy/FTP。
重新打包system.img
有时更快地修改设备系统分区的内容并将其烧录回到Jetson板。
用于rootfs的flash.sh的Jetpack脚本最新版本在您的Linux_for_Tegra目录中创建system.img和system.img.raw文件。
这些文件可用于访问系统分区的内容,进行修改,并将修改的内容上传到主板。
在做任何事情之前,您可能需要备份它们,以便稍后恢复原始内容。
循环安装原始系统映像文件,然后修改其内容是相当容易的。
完成修改后,可以使用flash.sh脚本的-r选项将其重新打包并上传到Jetson。
首先,安装当前部署的system.img文件
Linux_for_Tegra$ sudo losetp -d /dev/loop0
Linux_for_Tegra$ sudo losetup /dev/loop0 bootloader/system.img.raw
Linux_for_Tegra$ sudo mount /dev/loop0 /mnt/
- 您现在可以访问 /mnt/下的rootfs内容。
- 完成修改后,卸载它,然后继续打包系统映像并将其上传到Jetson
Linux_for_Tegra$ sudo umount /mnt/
Linux_for_Tegra$ sudo losetp -d /dev/loop0
Linux_for_Tegra$ bootloader/mksparse -v --fillpattern=0 bootloader/system.img.raw bootloader/system.img
Linux_for_Tegra$ sudo ./flash.sh -r jetson-tk1 mmcblk0p1
简明指南:
(0)准备:
- 准备好利用Jetpack刷过机的Ubuntu的主机(HOST PC)
- 在利用Jetpack刷机时候,建立目录TK1,并保存有JetPack-L4T-*-linux-x64.run文件
- 再进行第一次刷机之后会增加其他目录,并生成子目录TK1
- 效果如图:
(1) 备份:
- 进入HOST PC的JetPack安装目录下bootloader目录
$ cd ~/TK1/TK1/Linux_for_Tegra_tk1/bootloader
- 连上TK1,并进入recovery模式(通电,按住recovery键3秒,再按一下reset键)
- 检查是否出现0955:7140 Nvidia Corp
$ lsusb
- 效果如图:
- 从TK1下载镜像:
$ sudo ./nvflash --read APP clone.img --bl ardbeg/fastboot.bin --go
- 效果如图:
大概要花30分钟左右完成镜像下载。
分配权限,并压缩保存:
$ sudo chmod 744 clone.img
$ tar -zcvf clone.img.zip clone.img
(2) 恢复:
- 进入HOST PC的JetPack安装目录下bootloader目录
$ cd ~/TK1/TK1/Linux_for_Tegra_tk1/bootloader
- 复制clone.img为system.img
$ sudo cp clone.img system.img
- 连上TK1,并进入recovery模式(通电,按住recovery键3秒,再按一下reset键)
- 检查是否出现0955:7140 Nvidia Corp
$ lsusb
- 退出到上一层目录,开始烧录
$ cd ../
# As an example, you should be in ~/TK1/TK1/Linux_for_Tegra_tk1/
$ sudo ./flash.sh -r -S 14580MiB jetson-tk1 mmcblk0p1
- 大概要花费15分钟时间完成恢复镜像。
参考:
- http://elinux.org/Jetson/Cloning
- https://developer.nvidia.com/embedded/jetpack
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号