在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  Flags
 2      1049kB  1180kB  131kB                TBC
 3      2097kB  2556kB  459kB                RP1
 4      3146kB  3736kB  590kB                EBT
 5      4194kB  4260kB  65.5kB               WB0
 6      5243kB  5439kB  197kB                BPF
 7      6291kB  6881kB  590kB                TOS
 8      7340kB  7406kB  65.5kB               EKS
 9      8389kB  9044kB  655kB                LNX
10      9437kB  9896kB  459kB                DTB
11      10.5MB  10.6MB  131kB                RP4
12      11.5MB  11.6MB  81.9kB               BMP
 1      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  Flags
 2      1049kB  1180kB  131kB                TBC
 3      2097kB  2556kB  459kB                RP1
 4      3146kB  3736kB  590kB                EBT
 5      4194kB  4260kB  65.5kB               WB0
 6      5243kB  5439kB  197kB                BPF
 7      6291kB  6881kB  590kB                TOS
 8      7340kB  7406kB  65.5kB               EKS
 9      8389kB  9044kB  655kB                LNX
10      9437kB  9896kB  459kB                DTB
11      10.5MB  10.6MB  131kB                RP4
12      11.5MB  11.6MB  81.9kB               BMP
 1      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  Flags
 1      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. 通知内核,文件系统已改动

完工!

 

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值