jeston TX1/TX2 系统迁移至SD卡的正确步骤

如果是刚刚开始Nvidia jeston TX1/TX2 开发的初学者,希望本文可以帮助节省时间。首先上张图,完成配置后的 jeston TX1。载板使用的是作者自己设计的EdgeBox_EHub_tx1_tx2_E100。

先说一下jeston TX1,jeston TX1是英伟达推出的一款基于ARM架构的嵌入式设备,集成了自家的GPU,算力能达到1 Teraflops,基本能够满足深度学习的要求。用在智能车、无人机上是非常理想的。但是!

我也不知道官方怎么想的,可能就是想省钱吧。初始的eMMC大小只有16GB,可用的容量只有14GB左右,再加上如果装了点CUDA什么的基本上所剩无几了,而且板载的内存只有4GB,根本不够用好嘛!编译程序分分钟卡死,我搞了好久才明白为什么会这样。如果你想用裸机去跑深度学习,那抱歉了,你可能连Tensorflow都装不上去。

OK,为了解决上述问题,我找了好多帖子,总算整合了一套比较合理的解决方案。并且在EdgeBox_EHub_tx1_tx2_E100完整的进行了实践。

Nvidia jeston TX1/TX2 都支持 SD卡和SSD存储扩展存储,到现在最新的NX套件上,就直接全部都更新成使用NVME的存储。基本上套件上的存储也就是让你装个基本系统,做一些简单测试使用了。

由于是学习为目的,所以我们本篇主要说明迁移到SD卡上,虽然后面系统跑起来会有一点卡,但是其实大部分时候你是感觉不出来的,jeston nano 直接就全部都是SD空间,大部分人用的也都没有问题。所以具体问题具体分析,根据你实际的需要,考虑是不是增加固态(SSD)来扩展存储。

存储扩展迁移的方法和步骤都是一样的,差异无非就是硬件接口和操作命令有点差异,这里我们主要介绍SD卡。

目录

一、硬件环境准备说明

二、烧写系统至eMMC

三、迁移系统至SD卡

四、烧写到SD卡系统启动

五、验证系统是否从SD卡启动


一、硬件环境准备说明

 

 

所有硬件链接号上电后:

 

链接硬件:接通12V电源,插入SD卡,鼠标键盘接入SUB,显示器接入HDMI,下载线接入Micro usb2.0 ,笔记本一台,需要安装虚拟机

 

二、烧写系统至eMMC

给TX1刷机,这里比较简单,网上很多blog都讲了,后面我也会补充一个。使用你建立的虚拟机,安装ubuntu16.04或者ubuntu18.04系统后,安装 Nvidia sdkmanage.我安装的版本是sdkmanager_1.5.0-7774_amd64.deb,这个官网可以下载到。安装后联网就可以升级到最新的版本。这点Nvidia一直做的不错。

由于我们是自己的载板,所以需要修改个替换DTB文件,官方下载烧写标准系统后,虚拟机内会出生成一个文件夹。

 

 虚拟机命令行查看是否链接

 

nvidia@ubuntu:~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_TX1_A100_hub/Linux_for_Tegra$ lsusb

Bus 003 Device 085: ID 0955:7020 NVidia Corp. 

我们替换后,控制系统进入烧写模式后, 采用了手动命令烧写系统。

sudo ./flash.sh -r -d kernel/dtb/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb -K kernel/Image jetson-tx1 mmcblk0p1

其中 mmcblk0p1即是eMMC的挂载位置。

 等待15分钟左右后烧写完毕

烧写完毕后系统会自动重启。设置用户名秘密之类结束后,就可以看到登录界面显示了。

 登录查看存储。

 可以看到,此时root是在14G的emmc内,同时也看到系统已经加载了SD卡,下面我们就将系统迁移到SD卡上,也就是root会至少有59G空间。

三、迁移系统至SD卡

首先:格式化SD卡,至EXT4格式

其次拷贝EMMC系统之SD卡中

 重新分区后指定了盘符,所以个系统自动加载的有点区别,性质一样。

##进入SD卡
cd /media/nvidia/sd64/

 

##拷贝EMMC全部内容至SD卡
sudo cp -ax / ./

等待一段时间,等待拷贝结束

等待拷贝结束,开始修改SD卡系统中的启动文件,等待过程一般10分钟左右吧

 修改SD卡内的系统引导文件:

 

cd /media/nvidia/sd64/boot/extlinux
​
#备份一下原始的启动引导文件
sudo cp extlinux.conf extlinux.conf_bak
#修改启动引导文件
sudo vim extlinux.conf

​原始文件:

 修改为:

TIMEOUT 30
DEFAULT sdcard
​
MENU TITLE L4T boot options
LABEL sdcard
      MENU LABEL primary sd card
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk2p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1 
LABEL emmc
      MENU LABEL internal eMMC
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 sdhci_tegra.en_boot_part_access=1  

其中根目录盘符是上面查看后获得的

 

 保存退出后,我们就获得了一个SD卡系统。

四、烧写到SD卡系统启动

首先这一步有时候不是必须的,但是我自己的经历,不执行这一步,有时候上电重启后,系统会启动到EMMC,所以为了保险期间,还是执行,这一步主要是固化告诉模块,从SD卡启动系统。

如果你已经有一个SD卡的系统,或者按照前面的自己已经制作好了一个SD卡系统,参考这步进行烧写。即使SD卡系统和EMMC系统不一致都没有关系,只要SD卡系统是对应板卡的系统,不管里面后续装过任何支持包,都不会有影响。

 烧写到SD卡

# 进入虚拟机烧写目录
cd /home/nvidia/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_TX1_A100_hub/Linux_for_Tegra
# 注意 mmcblk2p1 在你自己的系统上有时候会有变化,上面的启动文件修改也需要做修改一致
sudo ./flash.sh -r -d kernel/dtb/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb -K kernel/Image jetson-tx1 mmcblk2p1

mmcblk2p1 需要在上面拷贝系统的时候做好记录,有些系统这个盘符会有点变化,请注意做对应修改。以上烧写命令不会破坏SD卡系统的文件内容

 

五、验证系统是否从SD卡启动

烧写完毕后,等待系统重启,登录终端

 显示系统盘已经扩大到了59G,SD卡的大小,所以系统已经从SD卡启动。

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值