给Jetson Nano更换eMMC闪存【下篇 - 一些问题的解释和探讨】

本文详细探讨了在使用Jetson Nano时遇到的16GB存储空间不足的问题,以及如何通过修改BSP配置文件解决。作者通过分析配置文件和刷机过程,发现只需修改ROOTFSSIZE即可改变根分区大小,从而适应更大容量的eMMC。文中还讨论了不修改配置文件直接刷机可能导致的问题,并分享了整个研究和解决过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7月8日更新:添加了硬件部分的视频链接:b站BV11w411R77n

空间不足?给Jetson Nano更换emmc硬盘(扩容)_哔哩哔哩_bilibili


【声明】我还只是个Linux小白,写的东西并不一定对,仅提供一种参考思路,请各路大神莫喷,有想法可以相互交流。

【邮箱】188283942@qq.com

1  前言

        在使用Jetson Nano的过程中,遇到了16GB板载存储空间不足的情况,于是我选择了更换板载emmc闪存,方法参见我上一篇文章:

        给Jetson Nano更换eMMC闪存(扩容

        具体的步骤这里就不在详述,上一篇文章已经写了,大家可以回顾一下上一篇文章。这里主要探讨那些“为什么要这么做”、“为什么改这里就行”的问题。

        这篇文章写的可能比较乱,因为好多问题我暂时也没搞清楚,都是随性地写。如果你也遇到了类似的问题,不妨仔细读一下,也许对你有一定的参考意义。   

2  问题的探讨

2.1 内容回顾

        上一篇文章已经提到,要更换emmc,就需要修改BSP(board support package)支持包中的一些配置文件,这些配置文件会被拷贝到Linux_for_Tegra(可以理解为刷机工具)目录下,在运行刷机工具(即flash.sh)时,会根据这些配置文件生成nano的分区表,然后才将系统镜像刷入。

        这里需要探讨的就是:如果从硬件上更换emmc,而刷机时不修改相应分区表配置,会出现什么问题?为什么要这样(按上一篇文章的方法)修改配置文件?

2.2 不修改配置文件直接刷机,会遇到的问题

        一开始,我将emmc更换后,抱着侥幸心理直接刷的机(没有修改配置文件,觉得它能够自动适应不同size的emmc),结果就是无法进入系统,具体就是:

A start job is running for end-user configuration after initial OEM installation

        一直没能进入系统,百度了下,有说是swap的问题,也有说是硬盘的uuid和fstab(分区表)中的uuid不一致造成的。

        因此我就怀疑是分区表的问题,如果不修改分区表相应配置,就不能适应新更换的emmc闪存。后续解决问题的步骤其实都是围绕着分区表来进行的。

2.3 尝试从系统镜像入手,修改分区配置

        通过刷机过程(包括初次刷机、镜像恢复)可以了解到,刷机环境准备好后,会在Linux_for_Tegra/bootloader目录下生成system.img(我这里是4.8G),刷机应该就是将这个镜像刷写到emmc中(或者sd卡、nvme硬盘)。其实就有点类似树莓派给sd卡烧写系统一样。

        生成的img镜像应该是包含了分区信息的,但是我弄的时候遇到些错误,我就没接着弄下去,如果你有兴趣的话可以试试这种方法(直接通过img修改各分区的大小)。

2.4 修改分区表相关配置参数

        我没有直接对system.img文件下手,而是直接通过修改生成分区表所依赖的配置文件,来修改所生成的分区表(有一点点绕哈)。

        在官方的手册《NVIDIA Jetson Linux Developer Guide》-> Bootloader -> Partition Configureation 章节中,详细叙述了nano刷机过程中有关分区表的相关事项,包括分区表的生成方式,分区表相关配置文件的解析(释义)等内容。

        该章节中有一段话说明了分区表是如何生成的:

        During the flashing procedure, flash.sh reads in the partition configuration file, translates keywords into values specified in <device>.conf or in option parameters and saves the data in bootloader/flash.xml. Then bootloader/tegraflash.py reads in bootloader/flash.xml and performs actual flashing as specified by bootloader/flash.xml.

        翻译过来就是说:刷机时,flash.sh(上一篇文章刷机过程有提到)会读取分区表配置文件,将<device>.conf中所指定的参数读取出来,将其保存到bootload

要在微雪 Jetson Nano 上直接将本地下载的系统复制到 eMMC 上,可以按照以下步骤进行操作: ### 准备工作 1. **下载系统镜像**:从 NVIDIA 官方网站或微雪官方网站下载适用于 Jetson Nano 的系统镜像。 2. **准备存储设备**:使用一张至少 16GB 的 microSD 卡或一个 USB 闪存驱动器。 3. **安装必要的软件**:确保你的电脑上安装了 `Etcher` 或 `Win32DiskImager` 等工具,用于将镜像入存储设备。 ### 步骤一:将系统镜像入存储设备 1. **插入存储设备**:将 microSD 卡或 USB 闪存驱动器插入电脑。 2. **打开镜像入工具**:打开 `Etcher` 或 `Win32DiskImager`。 3. **选择镜像文件**:在工具中选择你下载的系统镜像文件。 4. **选择目标设备**:选择你要入镜像的存储设备(microSD 卡或 USB 闪存驱动器)。 5. **开始入**:点击“开始”或“Flash”按钮,等待镜像入完成。 ### 步骤二:将系统复制到 eMMC 1. **插入存储设备**:将入好镜像的 microSD 卡或 USB 闪存驱动器插入 Jetson Nano。 2. **启动 Jetson Nano**:连接电源并启动 Jetson Nano,系统会从 microSD 卡或 USB 闪存驱动器启动。 3. **打开终端**:在启动后的系统中打开终端。 4. **查看存储设备**:输入以下命令查看存储设备列表: ```bash lsblk ``` 5. **确定目标设备**:根据设备名称大小确定 eMMC 的设备名称(例如 `/dev/mmcblk0`)。 6. **卸载分区**:如果 eMMC 上有挂载的分区,先卸载它们: ```bash sudo umount /dev/mmcblk0p1 sudo umount /dev/mmcblk0p2 ``` 7. **复制系统**:使用 `dd` 命令将系统从存储设备复制到 eMMC: ```bash sudo dd if=/dev/sda of=/dev/mmcblk0 bs=4M status=progress ``` 注意:`/dev/sda` 是存储设备的设备名称,请根据实际情况替。 8. **等待完成**:等待 `dd` 命令执行完成,这可能需要一些时间。 9. **重启系统**:复制完成后,重启 Jetson Nano: ```bash sudo reboot ``` ### 注意事项 - **数据备份**:在操作之前,确保备份好重要数据- **设备名称**:不同系统环境下,设备名称可能有所不同,请根据实际情况确认。 - **谨慎操作**:`dd` 命令具有破坏性,错误的操作可能导致数据丢失,请谨慎使用。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值