jetson nano (sub版本) 刷写ubuntu20.04
我之前找到的文章里面都没有关于这个话题的教程,花一天时间刷写好了这个系统,所以我有点兴奋,来写一个教程。
先使用windows刷写目标系统到tf卡,这里是系统镜像链接
https://github.com/Qengineering/Jetson-Nano-Ubuntu-20-image
进入后,找到,点击一下image here
下载完成后使用imager或者balenaetcher刷入tf卡
当然,在这个项目的有一部分上,作者也说了,balenaetcher刷写经常出错,推荐使用mager
刷写完成后,鉴于好多人使用mount可能会出问题(后面也包含mount在emmc系统里操作的方式),在刷写完成后可以使用DiskGennius进行添加补丁。
打开DiskGennius
找到自己刷写后最大的分区(我这里是分区13):
点击加号:
点击boot:
然后将下载过来的sd卡补丁文件改名为
将改名后的文件拖拽到 刚刚打开的boot分区内(有无专业版不做讨论,自行解决一下)
然后我们要修改extlinux.conf文件的内容
我们使用记事本修改,桌面新建一个文本文件,在里面输入:
TIMEOUT 30
DEFAULT primary
MENU TITLE L4T boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dtb
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk1p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
# sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot
# LABEL backup
# MENU LABEL backup kernel
# LINUX /boot/Image.backup
# INITRD /boot/initrd
# APPEND ${cbootargs}
另存为:
然后我们删掉在boot中的extlinu.conf拖入我们的extlinux.conf文件
到/boot/extlinux中即可
然后把卡插到nano,让nano进入刷机模式,开启ubuntu18.04给nano刷写一个正常的emmc系统。
使用nvidia的sdkmannger进行刷写。
步骤如下:
在自己电脑ubuntu18.04下使用终端输入如下命令启动:
sdkmanager --archived-versions
按照如下勾选(请勾选4.6.1!!!!!)
在下图下载的时候不要管他,但是等到它falsh jetson os 时,请停止。
***接下来就是给sub版本的jetson nano 打上补丁,确保jetson nano sub版本可以正常启动,非sub版本可以跳过这一步直接刷写。直接看刷写完成后的操作即可。
在ubuntu18.04上访问:
https://developer.nvidia.com/embedded/linux-tegra-r3275
然后下载:
你也可以打开一个terminel窗口然后:
wget https://developer.nvidia.com/downloads/embedded/L4T/r32_Release_v7.5/overlay_32.7.5_PCN211181.tbz2
下载完成后,请先解压文件:
点击这个linu_for_teger的包,里面会有我们需要的补丁文件。
再打开刚刚被我停止flash 的jetpack的包
打开它直到下图这个状态
开始复制我们需要的补丁文件,先是bootloader和kernel ,再才是rootfs(千万不要如图复制rootfs!!)
然后是rootfs文件夹,因为涉及到sudo的权限问题,所以才是最后来复制这个补丁。
先在补丁窗口打开终端(terminnal)
然后在终端中输入cp命令:
sudo cp rootfs /home/你的用户名/nvidia/nvidia_sdk/JetPack_4.6.1_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra
因为每个人的用户名和目录结构不同最后这个命令只提供参考,请根据实际情况或者问ai进行sudo cp的复制。
然后,回到sdk的刷写,还是用命令启动:
sdkmanager --archived -versions
选择刚刚打完补丁的jetpack版本,然后按照下图刷写即可:
刷写完成后让jetson nano 正常启动emmc,然后进入系统。插入刷写好的sd卡,执行:
lsblk
如果看不见mmcblk1p1这些东西,那么说明你的sd卡没插好或者说你的系统缺少补丁识别sd卡:
缺少sd识别补丁我们就打上这个补丁就是:
在这个系统上下载你们客服提供的补丁文件,我的是Nano-dtb-SDMMC.zip,当然你如果和我一个版本那么也可以到我的网站下载(电信挂东西再访问):
t.c88d.top
下载上图中名为 Nano-dtb-SDMMC.zip的压缩包到emmc系统内。
对这个压缩包解压
解压完成后对着解压完成的目录,在此打开终端(termininal),然后确保ls过后可以看见
kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom-JP461.dtb这个文件
开始执行复制命令:
sudo cp kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom-JP461.dtb /boot/kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dtb
然后修改extlinux文件
sudo vim /boot/extlinux/extlinux.conf
FDT /boot/kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dtb
修改为:
一定要确保一样,不然sd可能没有用
重启我们的emmc系统:
sudo reboot
启动成功后,我们来修改extlinux.conf的启动文件,修改为从sd卡启动。
sudo vim /boot/extlinux/extlinux.conf
修改emmc系统里的extlinux.conf文件,找到语句APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0,将mmcblk0p1 改成mmcblk1p1, 保存(建议直接复制lsblk的信息)
现在不要重启!!!!!!
****在前面使用过DiskGennius进行修改后可以跳过修改烧录镜像直接重启试一下。
然后我们还需要修改我们烧录的系统,给我们烧录的系统也打上识别sd卡的补丁:
打开终端首先输入:
lsblk
查看哪一个磁盘mmcblk是最大的,然后我们需要挂载它到我们的系统里面来:
#以下是示例请根据实际情况来
#创建被挂载的目标文件夹
sudo mkdir /mut
#挂载最大的mmcblk1磁盘到mut
sudo mount /dev/mmcblk1p1 /mut
进入我们创建的文件夹:
cd /mut
接着找到boot文件夹
#看一下终端里面是否有boot文件夹
ls
然后确然完毕后关闭终端,先回到我们下载好sd卡补丁的目录下
一定要看见 kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom-JP461.dtb文件后右键打开终端
#将补丁复制到/mut/boot里面去
sudo cp kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom-JP461.dtb /mut/boot/kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dtb
然后我们再修改extlinux.conf文件:
sudo vim /mut/boot/extlinux/extlinux.conf
FDT /boot/kernel_tegra210-p3448-0002-p3449-0000-b00-user-custom.dtb
同时: 修改emmc系统里的extlinux.conf文件,找到语句APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0,将mmcblk0p1 改成mmcblk1p1, 保存(建议直接复制lsblk的信息)
然后卸载/mut(你挂载的文件):
#此挂载文件仅为示例,不要纯抄!!!!!
sudo umount /mut
最后重启:
sudo reboot
至此你可以成功启动ubuntu20.04在你的jetson nano或者jetson nano sub版本上。