Jetson Orin Nano nvme系统备份和恢复

news2024/11/27 14:31:21

        大家好,我是虎哥,Jeston Orin nano 8G模块,我自己也玩了一段时间,配置了很多环境后,我就在琢磨如何将系统像之前的模块一样捞取出来后,在新模块上进行恢复。过程是曲折的,结果也是曲折的,Orin nano确实继承了NANO的一些风格,这些都不是很友好了,这里给大家提供两种办法,一种我自己画了好几天反复做验证,是可行的,另外一种,是我之前在 nano 上的SD卡系统使用过,料想应该也是可行的,但是NVME存储对应的设备贵太多,反正一趟下来,我整体感觉都不是很好了!

目录

1、前期准备

2、使用initrd 备份文件系统

3、烧写备份系统至至新的NVME存储

4、土豪版方案


1、前期准备

首先准备好你自己的套件。

         我自己用的是微雪的载板,核心模块用的是8G不带SD卡的模块。官方提供的版本是带SD卡座的,注意对比区别。

        其次,你的开发套件已经烧写过系统至NVME,默认的启动也是从NVME启动的。

        最后,你需要找一块和你开发条件上一个大小的NVME存储,建议用同一个型号,存储大小需要一对一一致。这点很重要,我反正目前没有找到大存储恢复到小存储的方案,当然小存储恢复到大存储是没有什么问题。也就是你要满足这两个条件,就可以开始下面的方法了。

  • 载板NVME存储大小要小于你存储备份系统的盘

  • 恢复NVME空盘存储大小要大于等于之前备份的存储

所以,汇总一下,你需要准备好得大致物料清单见下图。

2、使用initrd 备份文件系统

开发套件烧写USB线连接到,然后模块recovery模式启动

 如果你PC端使用的事虚拟机,那这个时候,你电脑就会有一个接入选择

 然后lsusb就可以看到设备接入的ID。

         当然,这个时候由于你已经有系统,所以是可以软件进入recovery模式,登录到你模块的终端,输入以下命令。

sudo reboot --force forced-recovery

在你的主机端,进入烧写环境后,输入下面的命令,模块将启动停止在initrd位置。

$ cd Linux_for_Tegra
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --initrd <board-name> <rootdev>
#我们实际使用的命令(板载NVME系统)
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --initrd --flash-only jetson-orin-nano-devkit nvme0n1p1
#我们实际使用的命令(板载USB存储系统)
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --initrd --flash-only jetson-orin-nano-devkit sda1

 当出现上面的打印的时候,记得把recovery的跳线冒断开。

 如果你使用虚拟机,会在此出现一次让你选择接入。

 到这,模块就已经停在了initrd位置,后续就需要你手动操作了。

在主机端按照提示输入命令。

#SSH登录模块
ssh root@fc00:1:1:0::2
#密码
root

 第一次链接,一般需要你生成秘钥。输入yes,回车。

提示你输入密码登录,密码是root。

这样我们就登录进去了模块。这个时候将我们准备的大的USB存储接入模块的USB。然后输入命令查看存储情况。

fdisk -l

 接下来我们技术输入命令,使用DD,将NVME存储对拷出来

#挂载U盘
$ mount /dev/sda1 /mnt
#DD对拷
$ dd if=/dev/nvme0n1p1 of=/mnt/system.img.raw

 之后再原位置继续输入以下命令

$ sync
$ umount /mnt

 完事后,我们就备份了当前运行的存储。将备份用的USB存储插入你的主机,就可以看到备份文件。

         你可以将这个和NVME存储一样大的文件拷贝到你的主机内,如果空间不够,那也可以继续放到USB存储,接下来我们要制作一个这个文件的压缩img文件,记得,存放这个文件的存储插到你的主机。

在你的主机找到备份文件的存储目录:

 可以进入看一下

 接下来我们就可以制作压缩IMG文件了。

#进入你的烧写工作目录,注意你自己的目录
cd ~/O100/O100_JetPack_5.1.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra
#执行压缩命令
./bootloader/mksparse --fillpattern=0 /media/nvidia/be2deb0f-3381-45c3-a1bc-32bf2139e5ef/system.img.raw system.img

 等待制作镜像完毕就可以了。

 制作完毕

3、烧写备份系统至至新的NVME存储

将一个空的NVME存储,刚换到你的系统上。注意新的NVME存储大小要大于等于之前备份的存储大小

将新的NVME安装到模块上。然后开发套件烧写USB线连接到,然后模块recovery模式启动。

此时你的主机还是老规矩,首先确认Orin模块连接到你的主机了。

lsusb

 此时,需要先烧写一遍空系统,可以直接执行命令,准备好环境。这一步是为了确保你的nvme0n1p1存储前面的引导部分全部都准备好。

#进入你的烧写工作目录,注意你自己的目录
cd ~/O100/O100_JetPack_5.1.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra
#全部生成烧写
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

 准备制作镜像。

 执行完毕后,其实官方脚本将系统制作到了如下目录。

cd {your path}/Linux_for_Tegra/tools/kernel_flash/images/external

 实际执行烧写的时候,最终是烧写这个目录的文件。

将备份的压缩文件覆盖这个img文件。

#先删除
sudo rm -f tools/kernel_flash/images/external/system.img
#拷贝之前备份的
sudo cp -f system.img tools/kernel_flash/images/external/

         这个时候,需要将烧写的空系统模块完成Ubuntu setup,这一步是必须的。不然后续恢复备份会出现空间不足,因为空系统不进行初始化,只有64G的镜像。

        开机之后就进入上图“Step 1. Ubuntu setup(oem-config)”阶段,进行以下9个步骤的系统配置工作:

1、同意授权:点选左下角“I accept the terms of thses licences”左边的框,然后点击右下角“Continue”按钮进行下一步;

2、选择“语言”种类:建议这个阶段先不要选择中文,直接点击右下角“Continue”按钮进行下一步;

3、选择“键盘布局”:直接点击右下角“Continue”按钮进行下一步;

4、连接WIFI无线热点:可以根据您的实际状况选择热点,或者现在先不连接,等后面进系统之后在连接,然后点击右下角“Continue”进行下一步;

5、选择“区域”:用鼠标点击图里“中国”范围,下面地区会更新为“Shanghai”,然后点击右下角“Continue”进行下一步;

6、 配置用户名与密码:这个步骤算得上是最重要的环节,因为没有预设值,因此包含用户名(Your Name)、设备名称(Your computer’s name)、密码(Choose a password)都需要自行输入,然后点击右下角“Continue”进行下一步;

7、 配置使用的磁盘空间:预设为最大可用空间,建议不做修改,然后点击右下角“Continue”进行下一步;

8、是否安装Chromium浏览器:接受预设值(安装),然后点击右下角“Continue”进行下一步;

 接下去系统就会根据前面的选择,执行“System configuration”,如下面两张图所示的步骤。

         执行完系统配置之后,就会自动重启,然后进入Ubuntu 20.04 L4T(Linux for Tegra)桌面级操作系统,如同所有Ubuntu操作系统第一次登录时需要执行的步骤一样,都选择“Next”就可以,然后就会看到下面这个熟悉的Ubuntu标准桌面。

 然后开发套件烧写USB线连接到,然后模块recovery模式启动。

此时开始烧写我们备份的。此时你的主机还是老规矩,首先确认Orin模块连接到你的主机了。

lsusb

 然后开始烧写替换后的系统

#只更新 APP,似乎有用 flash APP partition in the NVMe:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --external-only \
    --network usb0 -k APP --external-device nvme0n1 \
    -c tools/kernel_flash/flash_l4t_external.xml jetson-orin-nano-devkit internal

烧写完毕,系统正常启动。

 载板系统中已经变大了,之前装的ROS之类的都在了。

4、土豪版方案

感觉上面的办法很繁琐,所以我们还提供一种土豪办法,简单一点,可以淘宝上找NVME存储对拷机,可以帮你完成母盘对拷。

 这种算是比较便宜的,对于一些公司批量做,可以考虑一拖多的对拷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/607893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源字节 考研集训营小程序

考研集训营的价格要比普通的班课贵很多&#xff0c;价格通常在上万元。考研集训营分为春季、暑期、秋季等短期集训营&#xff0c;还有半年和全年长期集训&#xff0c;为学生提供英语、数学、政治的公共课辅导和各种专业课的教学。想要了解更多的考研相关信息&#xff0c;获得适…

自然语言处理从入门到应用——自然语言处理的基本问题:结构预测问题

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 与文本分类问题不同&#xff0c;在结构预测问题中&#xff0c;输出类别之间具有较强的相互关联性。例如&#xff0c;在词性标注任务中&#xff0c;一句话中不同词的词性之间往往相互影响&#xff0c;如副词之后往往出现…

1、mysql的安装与配置

下载安装配置 下载zip文件解压之后配置环境变量 在path后面添加mysql bin文件夹的路径&#xff1a;C:\Program Files (x86)\MySQL\bin 配置完环境变量后&#xff0c;在C:\Program Files (x86)\MySQL目录下新建一个配置文件mysql.ini&#xff0c;同时在bin的同级目录C:\Program …

算法的复杂度【数据结构】

1、时间复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源&#xff0c;因此衡量一个算法的好坏一般是从时间和空间两个维度来衡量的&#xff0c;即时间复杂度和空间复杂度时间复杂度主要衡量一个算法的运行快慢&#xff0c;而空间复杂度主要…

Jenkins安装配置

前言&#xff1a;Jenkins是一款CICD&#xff08;持续集成与持续交付&#xff09;工具。Jenkins可以帮你在写完代码后&#xff0c;一键完成开发过程中的一系列自动化部署的工作。 Jenkins 2.346.1 版本支持 jdk1.8 和 jdk11&#xff0c;最后一版支持jdk1.8的版本。 安装Jenkins前…

windows修改Pycharm的右键打开方式

title: windows中open floder as Pycharm太长了怎么修改 date: 2023-06-04 author: IoT_H2 tags: windows系统问题 categories: Markdown 问题描述&#xff1a; Pycharm这一栏这么长&#xff0c;长的我实在是很难受&#xff0c;事实上Jetbrains家的软件都是这个鸟模样 导…

RocketMq的单机版安装以及可视化软件的安装

一 RocketMq的单机版安装 1.1 RocketMq的上传 1.2 解压 [rootlocalhost export]# unzip rocketmq-all-4.9.6-bin-release.zip 1.3 修改配置 使用 vim 命令打开 bin/runserver.sh 文件。现将这些值修改为如下&#xff1a; [rootlocalhost bin]# vi runserver.sh 使用vim命令…

tinkerCAD入门操作(3):创建和操作分组对象

tinkerCAD入门操作(3)&#xff1a;创建和操作分组对象 介绍 我们现在将探索Tinkercad的超能力 - 组合简单的形状来制作复杂的对象。 组合形状是实体建模的基本目的。这就是汽车、建筑物和宇宙飞船等有趣东西的制作方式。现在&#xff0c;我们要教你这个超能力。 创建复合形状…

Stable-Diffusion|window10安装GPU版本的 Stable-Diffusion-WebUI遇到的一些问题(一)

教程主要参考&#xff1a; AI绘画第一步&#xff0c;安装Stable-Diffusion-WebUI全过程 ! Stable Diffusion WebUI使用手冊(正體中文)&#xff5c;Ivon的部落格 具体记录一下笔者除了按照上述教程&#xff0c;遇到坑的地方 文章目录 1 git PYTHON2 Nvidia设置3 stable-diffus…

如何解决构建安防监控系统的技术难点?快解析来助力

在安防领域,大数据具有广阔的应用场景,能带来深度的价值。随着应用普及越来越广&#xff0c;安防监控系统被人们日益重视起来&#xff0c;科技含量越来越高&#xff0c;几乎所有高新科技都可促进其发展&#xff0c;尤其是信息时代的来临&#xff0c;更给该专业的发展提供了契机…

2023年全球项目管理系统排行榜:推荐15家值得关注的项目管理系统

在当今世界&#xff0c;管理项目已经成为许多企业不可分割的一部分。因此&#xff0c;拥有正确的项目管理系统对于确保任何业务的成功都是至关重要的。随着技术的不断发展&#xff0c;好用的项目管理系统也在不断发展&#xff0c;以满足现代工作场所日益增长的需求。到2023年&a…

区间预测 | MATLAB实现基于QRCNN-BiGRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积双向门控循环单元多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资…

设计模式之-模板方法模式C++实现与C++模板template使用

介绍 模板方法模式使用比较常见&#xff0c;也比较简单&#xff0c;模板方法模式是属于设计模式中的行为设计模式。行为设计模式是关注对象的行为或者交互方面的内容&#xff0c;主要涉及算法和对象之间的职责分配。 模板方法模式使用场景&#xff1a;在设计需求中&#xff0c;…

超详细IDEA创建MavenWeb项目

文章目录 一、环境准备二、骨架方式创建Maven-Web项目三、非骨架方式创建Maven-Web项目 一、环境准备 既然是创建Maven-Web项目&#xff0c;那么首先我们需要配置好Maven和JDK环境&#xff0c;这里笔者使用JDK8版本以及Maven3.6系列版本。 附Maven安装配置教程 超详细Maven安装…

【CesiumJS入门】(2)ImageryLayer之图层加载与管理

前言 在上一篇博客中&#xff0c;我们加载了一个空空的蓝色地球&#xff0c;现在我们将会为地球加载上地图。 步骤&#xff1a; 创建ImageryProvider &#xff08;数据源&#xff09;创建ImageryLayer &#xff08;图层&#xff09;将图层添加进视图中&#xff08;viewer&…

ChatGPT中文版写论文神器使用技巧

又到了一年一度的毕业季&#xff0c;写论文成了同学们的头等大事。ChatGPT系当今世上最强的人工智能产品&#xff0c;已经深刻地影响着人们的工作生活学习。ChatGPT也是写论文的神器&#xff0c;能帮助同学们拓宽思路&#xff0c;举一反三&#xff0c;事半功倍。以面给同学们盘…

六、JSP06 使用 EL 和 JSTL 简化 JSP

六、使用 EL 和 JSTL 简化 JSP 6.1 使用 EL 表达式 EL 表达式借鉴了 JavaScript 和 XPath 的表达式语言 EL 表达式提供了一种在 JSP 中简化表达式的方法 EL 表达式通常用于在某个作用域 {page、request、session、application等} 内取得属性值 6.1.1 使用 EL 表达式 EL 表达式…

【019】C++的指针与函数

C的指针与函数 引言一、指针变量作为函数的参数1.1、单向传递&#xff1a;值传递1.2、单向传递&#xff1a;传地址 二、数组作为函数的参数传递三、函数的返回值类型是指针类型四、函数指针4.1、函数指针的定义4.2、函数指针变量的注意事项4.3、函数指针变量使用typedef定义别名…

rabbitmq死信队列详解

目录 1 概念 2 成为死信队列的条件 2.1 队列指定长度 2.2 消息ttl时间 2.3 消费者拒收消息 1 概念 死信队列&#xff1a;死信队列其实和普通的队列一样&#xff0c;只不过里面存放的消息都是普通队列过期没有消费的。所以&#xff0c;接收没有及时被消费消息的队列为死信…

[SWPUCTF 2021 新生赛] (WEB二)

目录 easyupload1.0 easyupload2.0 easyupload3.0 no_wakeup PseudoProtocols error hardrce pop sql finalrce hardrce_3 easyupload1.0 1.启动环境 2.上传一个图片木马 GIF89a <script languagephp>eval($_POST[a]);</script>3.蚁剑连接&#xff0c;…