在USB外置硬盘上安装Jetson Nano根文件系统

2023-11-11 17:20

本文主要是介绍在USB外置硬盘上安装Jetson Nano根文件系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景知识

NVIDIA Jetson Nano开发者套件自今年三月份发布以来正变得越来越火,它的AI和机器学习特性吸引了一众开发者,在业界掀起了一股不小的热潮。笔者把它当作一个便携式桌面电脑来使用,取代之前的树莓派3B。

 

略微有些遗憾的是,Jetson Nano出厂不带任何的存储媒介。板上也无SATA接口,官方提供的软件映像也是基于Micro-SD卡的。从可靠性,容量以及速度方面考量,大容量硬盘仍旧是我的首选。由于Jetson Nano带4个USB 3.0端口,这就为我们添置外接硬盘提供了可能。

外置2.5寸机械硬盘(USB转SATA)
2.5寸 机械硬盘(带外置USB转SATA转接盒)

网上已经有了很多介绍将rootfs安装到外置硬盘的文章,都是源自这里原始教程。这个方法的缺点是需要准备一张32GB或者以上容量的Micro-SD卡。将rootfs复制到外置硬盘之前,首先需要在Micro-SD卡的根文件系统上编译生成一个新的内核映像。这个新的内核映像带USB3.0支持(关于USB 3.0的讨论见此处)。

仅仅为了重新编译内核而占用一张32GB的Micro-SD卡?听起来似乎有点太小题大作。今天我们要讨论的是,如何直接将rootfs分区复制到外置硬盘上,跳过这个额外的从Micro-SD复制到外置硬盘的过程。

 

分割Image

首先让我们来看一看官方L4T r32.1发布的SD Image构造:

Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Generic- Multi-Card (scsi)
Disk /dev/sdb: 15.9GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:Number  Start   End     Size    File system  Name  Flags2      1049kB  1180kB  131kB                TBC3      2097kB  2556kB  459kB                RP14      3146kB  3736kB  590kB                EBT5      4194kB  4260kB  65.5kB               WB06      5243kB  5439kB  197kB                BPF7      6291kB  6881kB  590kB                TOS8      7340kB  7406kB  65.5kB               EKS9      8389kB  9044kB  655kB                LNX
10      9437kB  9896kB  459kB                DTB
11      10.5MB  10.6MB  131kB                RP4
12      11.5MB  11.6MB  81.9kB               BMP1      12.6MB  15.9GB  15.9GB  ext4         APP(parted)

上表前面2至12,这11个分区是bootloader使用的。后面的1分区是rootfs,文件系统类型为ext4。我们的想法是把前面2-12分区留在Micro-SD卡上,而将ext4分区复制到外置硬盘。Jetson Nano上电启动时,先从Micro-SD卡上启动bootloader,然后再从外置硬盘安装根文件分区。启动完成以后,Micro-SD卡不再需要,可以从内核卸载它。

设想的Micro-SD卡image:

Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:Number  Start   End     Size    File system  Name  Flags2      1049kB  1180kB  131kB                TBC3      2097kB  2556kB  459kB                RP14      3146kB  3736kB  590kB                EBT5      4194kB  4260kB  65.5kB               WB06      5243kB  5439kB  197kB                BPF7      6291kB  6881kB  590kB                TOS8      7340kB  7406kB  65.5kB               EKS9      8389kB  9044kB  655kB                LNX
10      9437kB  9896kB  459kB                DTB
11      10.5MB  10.6MB  131kB                RP4
12      11.5MB  11.6MB  81.9kB               BMP1      12.6MB  100MB   87.4MB  ext4         APP(parted)

可以看到Micro-SD卡上的image大小只有120MB左右,可以安装到128MB的卡上。

注意:此时的Micro-SD卡上的image仍旧有一个ext4分区,只是它已经大大缩水,只有87MB。保留这个分区是因为bootloader在加载linux内核时,需要从这个分区读取两个文件:/boot/Image和/boot/extlinux/extlinux.conf。前者是linux内核映像(带USB3.0支持),后者是配置文件,告诉内核从何处加载rootfs。有关如何产生这两个文件,请参照此链接

设想的rootfs image:

Model: Linux File-Stor Gadget (scsi)
Disk /dev/sdb: 25.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:Number  Start   End     Size    File system  Name  Flags1      12.6MB  12.9GB  12.9GB  ext4         APP(parted)

 

安装

准备事项

  •     一块NVIDIA Jetson Nano开发板
  •     一块HDMI/DP显示屏
  •     一个USB外置硬盘(容量>=16GB)
  •     一张Micro-SD卡(容量>=128MB)
  •     USB键盘和鼠标
  •     分割好的L4T r32.1 rootfs image part1 提取码:52s7 image part2 提取码:e5sf 和 bootloader image 提取码:fd3g
  •     一台主机(Windows或者Linux或者Mac)

安装步骤

 1. 将Micro-SD卡插入读卡器,并连到主机

 2. 启动etcher,烧写bootloader image

 3. 烧写完成以后,断开读卡器并取出Micro-SD卡


 4. 插入外置USB硬盘

 5. 再次启动etcher,烧写rootfs

压缩过的rootfs image有5GB之大,由于百度网盘对单个文件大小的限制,rootfs image文件被分成两个部分。下载下来以后请使用winrar软件将其合为一个文件,再将文件后缀修改为.zip。


 6. 烧写完成以后断开USB外置硬盘

 7. 将Micro-SD卡插入Jetson Nano

 8. 将USB外置硬盘插入Jetson Nano

 9. 将Jetson Nano连至HDMI/DP显示屏

10. 连接USB键盘和鼠标

11. Jetson Nano上电

12. 按照显示屏的提示,完成Ubuntu第一次启动配置

 

扩展根文件分区

L4T第一次启动,根文件分区缺省只有12GB。为了充分利用硬盘空间,我们需要扩展根文件分区。

1. 查看磁盘信息

本例中,根文件分区位于/dev/sda1

2. 采用sgdisk命令,查看根文件分区信息

记录下根文件分区的起始扇区,后面步骤要用到。

3. 同样sgdisk命令,通过“删除+重新创建”操作来扩展根文件分区

我们可以看到扩展以后,根文件分区占据了整个硬盘空间

注意!重新创建的根文件分区必须和之前的起始扇区相同,否则会丢失根文件分区的所有内容!

4. 通知内核,根文件分区已改动

5. 通知内核,文件系统已改动

完工!

 

这篇关于在USB外置硬盘上安装Jetson Nano根文件系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/391643

相关文章

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py

Linux中的缓冲区和文件系统详解

《Linux中的缓冲区和文件系统详解》:本文主要介绍Linux中的缓冲区和文件系统方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、FILE结构1、fd2、缓冲区二、文件系统1、固态硬盘2、逻辑地址LBA(一)数据块 Data blocks(二)inode表

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对