前言
我有一台jetson orin nx,它是非实时内核。现在想用这台jetson连接机械臂,机械臂需要实时内核,故需要编译实时内核来替换原内核。
此文章参考于NIVIDA官方教程https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/SD/Kernel/KernelCustomization.html#to-manually-download-and-expand-the-kernel-sources,我不知道是我理解能力有问题还是获取信息不够完备,亦或者说他这个教程做的真的不够好,依照教程编译起来真的很费力,下面是我对教程步骤的总结,以及一些补充完善。
1. 构建交叉编译环境
1.1 准备一个Linux系统
新建了个虚拟机,操作系统的版本为ubuntu20.04.6,这里只给出ubuntu20.04.6镜像的下载地址https://releases.ubuntu.com/20.04.6/
1.2 在虚拟机上安装依赖
sudo apt-get update
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libssl-dev
sudo apt-get install qemu-user-static
sudo apt install build-essential bc
sudo apt install vim
2. 下载包
2.1 创建包的存储目录
为方便之后讲解,我假设你在虚拟机的 ~/ 目录下创建了download目录和l4t-gcc目录
cd ~/
mkdir download
mkdir l4t-gcc
2.2 在jetson orin nx上查看Jetson Linux版本
用以下命令查看:
cat /etc/nv_tegra_release
显示如下:,R35(release),RVERSION:3.1表示版本为35.3.1
2.3 在以下链接找到对应版本,点进去
https://developer.nvidia.com/embedded/jetson-linux-archive
我的版本是35.3.1,故点击图中红下划线处
2.4 下载资源包到~/download目录
下载红线括起来的三个包
下载完成后,我们会得到三个.tbz2格式的文件:
Driver Package(BSP)对应Jetson_Linux_R35.3.1_aarch64.tbz2
Sample Root Filesystem对应 Tegra_Linux_Sample-Root-Filesystem_R35.3.1_aarch64.tbz2
Driver Package(BSP)Source对应public_sources.tbz2
2.4 下载交叉编译用的工具链到 ~/l4t-gcc 目录
下载红线括起来的包
下载完成后会得到名为aarch64–glibc–stable-final.tar.gz的包。