ubuntu22.04 搭建 NVIDIA Jetson交叉编译的eclipse开发环境

一、主机版本和安装cuda版本信息

小编电脑的版本信息:

$ uname -a
Linux yz-MS-7E06 6.8.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Sep 11 15:25:05 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

测试开发板型号:reComputer J4012 - Edge AI Computer with NVIDIA® Jetson™ Orin™ NX 16GB,使用是CUDA Toolkit 12.6.1

二、相关的软件的安装

需要eclipse的IDE开发软件和CUDA安装和交叉工具链安转

cuda软件安装

下面是小编的配置选项
界面配置

$ wget https://developer.download.nvidia.com/compute/cuda/12.6.1/local_installers/cuda_12.6.1_560.35.03_linux.run
$ sudo ./cuda_12.6.1_560.35.03_linux.run

对于主机没有英伟达显卡,只用于对下位机运行,可以不用配置Driver相关的配置,如下图所示:
在这里插入图片描述

eclipse软件安装

  • 首先先安装java的jdk,命令如下
$ sudo apt update
$ sudo apt install default-jdk
$ java -version
openjdk version "11.0.24" 2024-07-16
OpenJDK Runtime Environment (build 11.0.24+8-post-Ubuntu-1ubuntu322.04)
OpenJDK 64-Bit Server VM (build 11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing)
  • 下载eclipse网址,版本选用Eclipse IDE for C/C++ Developers的Linux x86_64,如下图所示:
    在这里插入图片描述
  • 使用下面的命令解压eclipse-cpp-2024-09-R-linux-gtk-x86_64.tar.gz 文件
$ tar zxvf eclipse-cpp-2024-09-R-linux-gtk-x86_64.tar.gz
$ cd ./eclipse
$ ./eclipse #运行ide程序

交叉工具链下载

交叉工具链和下位机的系统保持一致,参考博客中的 五、交叉工具链和kernel和rootfs集成配置说明 哪一章节,下位机使用的版本:Bootlin Toolchain gcc 11.3,使用如下命令进行查询版本信息

$ aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER
<think>我们针对Ubuntu22.04JetsonOrinNano设备,将旧的apt-key管理方式迁移到新的keyring管理方式。主要步骤:1.定位现有密钥2.导出密钥到/etc/apt/trusted.gpg.d/目录(新标准位置)3.在sources.list或sources.list.d中的相应源配置文件中添加signed-by参数指向新导出的密钥文件4.删除旧的apt-key中的密钥(可选,确保新配置生效后再操作)注意:NVIDIAJetson设备的源通常配置在/etc/apt/sources.list.d/nvidia-l4t-apt-source.list具体步骤:第一步:查找当前系统中的NVIDIAJetson仓库密钥使用以下命令查看当前apt-key列表,并找到与NVIDIA仓库相关的密钥(通常描述为NVIDIACORPORATION或类似):```sudoapt-keylist```假设我们找到的密钥信息如下:```pubrsa40962021-03-10[SC]ABCD1234EFGH5678IJKL9012MNOP3456QRST7890uid[unknown]NVIDIACORPORATION<xxxx@nvidia.com>```这里我们需要的是密钥ID(上面pub行后面的一串字符,实际是密钥指纹的最后8位,但通常我们使用完整指纹或长密钥ID)。但为了确保准确性,我们使用完整指纹(去掉空格)。第二步:导出密钥到新的keyring文件假设完整指纹是ABCD1234EFGH5678IJKL9012MNOP3456QRST7890(实际操作时替换为实际值),执行:```sudoapt-keyexportABCD1234EFGH5678IJKL9012MNOP3456QRST7890|sudogpg--dearmour-o/etc/apt/trusted.gpg.d/nvidia-jetson.gpg```注意:如果使用完整指纹可能无法导出,可以尝试使用长密钥ID(即指纹的后16位)。所以如果上述命令报错,可以尝试用后16位:```sudoapt-keyexportQRST7890|sudogpg--dearmour-o/etc/apt/trusted.gpg.d/nvidia-jetson.gpg```第三步:修改源配置文件,添加signed-by参数编辑NVIDIAJetson的源配置文件(通常在/etc/apt/sources.list.d/nvidia-l4t-apt-source.list):```sudonano/etc/apt/sources.list.d/nvidia-l4t-apt-source.list```原始的行可能类似:```debhttps://repo.download.nvidia.com/jetson/commonr34maindebhttps://repo.download.nvidia.com/jetson/t234r34main```修改为(注意添加[signed-by=...]):```deb[signed-by=/etc/apt/trusted.gpg.d/nvidia-jetson.gpg]https://repo.download.nvidia.com/jetson/commonr34maindeb[signed-by=/etc/apt/trusted.gpg.d/nvidia-jetson.gpg]https://repo.download.nvidia.com/jetson/t234r34main```保存退出。第四步:更新并测试```sudoaptupdate```如果没有出现警告,说明配置正确。第五步:删除旧的apt-key中的密钥(可选)在确认新配置工作正常后,可以删除apt-key中的旧密钥:```sudoapt-keydelABCD1234EFGH5678IJKL9012MNOP3456QRST7890#或者使用短ID:sudoapt-keydelQRST7890```注意:如果还有其他源使用同一密钥,则不应该删除,但新的方法已经将密钥独立存储,所以删除旧的是安全的。另外,对于Ubuntu官方的源(如ports.ubuntu.com)的公钥问题,如果之前有NO_PUBKEY错误,我们也可以采用类似的方法,但是官方源的密钥通常已经存在于系统中,只是可能没有以正确的格式使用。对于官方源,我们更推荐使用ubuntu-keyring包提供的密钥。对于官方源,我们不需要手动导出,而是直接使用系统已有的密钥环文件。实际上,Ubuntu官方源的配置应该是没有指定signed-by的,因为它默认信任系统的keyring。但如果出现NO_PUBKEY错误,可能是因为密钥环不完整。我们可以重新安装ubuntu-keyring:```sudoaptinstall--reinstallubuntu-keyring```然后更新:```sudoaptupdate```如果还有问题,可以尝试手动添加官方源密钥(方法类似,但密钥服务器获取后存到新位置,然后在sources.list中修改,但官方源通常不建议修改sources.list,所以优先考虑重新安装ubuntu-keyring)。综上所述,我们重点解决了NVIDIAJetson源的apt-key迁移问题。相关问题:1.如何验证导出的GPG密钥文件是否有效?2.如果同时有多个密钥管理不同仓库,应该如何组织?3.如何从密钥服务器直接下载密钥并保存为新格式?4.迁移过程中如果出现错误应该如何回退?</think> 以下是为 Ubuntu 22.04Jetson Orin Nano 设计的 **apt-key 现代化迁移方案**,使用 keyring 管理方法替代已弃用的 apt-key: ### 迁移步骤 (Ubuntu 22.04 + Jetson Orin Nano) #### 第一步:识别现有密钥 1. 确定 NVIDIA 仓库密钥 ID: ```bash grep -r "repo.download.nvidia.com" /etc/apt/sources.list.d/ | \ sudo apt-key list | grep "pub" -A1 ``` 输出示例: ``` pub rsa4096 2020-05-27 [SC] [expires: 2025-05-26] 1234567890ABCDEF1234567890ABCDEF12345678 ``` #### 第二步:创建独立密钥环文件 ```bash sudo gpg --no-default-keyring --keyring /etc/apt/keyrings/nvidia-jetson.gpg \ --keyserver keyserver.ubuntu.com --recv-keys 1234567890ABCDEF1234567890ABCDEF12345678 ``` > **说明**:`--no-default-keyring` 确保不污染系统默认密钥环 #### 第三步:修改仓库配置 编辑 NVIDIA 仓库文件: ```bash sudo nano /etc/apt/sources.list.d/nvidia-l4t-apt-source.list ``` 修改格式为: ```diff - deb https://repo.download.nvidia.com/jetson/common r32.7 main + deb [arch=arm64 signed-by=/etc/apt/keyrings/nvidia-jetson.gpg] https://repo.download.nvidia.com/jetson/common r32.7 main ``` > 使用 `dpkg --print-architecture` 确保 `arch=` 参数正确[^1] #### 第四步:验证配置 ```bash sudo apt clean sudo rm -rf /var/lib/apt/lists/* sudo apt update -o Dir::Etc::sourcelist="sources.list.d/nvidia-l4t-apt-source.list" \ -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0" ``` #### 第五步:清理旧密钥 迁移验证成功后删除旧密钥: ```bash sudo apt-key del 1234567890ABCDEF1234567890ABCDEF12345678 ``` ### 关键技术点 1. **密钥隔离**: $$ \text{仓库安全} \equiv \forall \text{repo} \in \text{sources} : \text{verify}(sig_{\text{repo}}, K_{\text{dedicated}}) $$ 2. **路径规范**: ```mermaid graph TD A[密钥文件] --> |必须位于| B[/etc/apt/keyrings/] B --> C{权限要求} C --> D[chmod 644] C --> E[chown root:root] ``` 3. **JetPack 兼容性**: | JetPack 版本 | 推荐密钥方案 | |--------------|--------------| | 6.x (L4T 36.x) | 本文方案 | | 5.x (L4T 35.x) | 添加 `arch=arm64` 参数 | | 4.x (L4T 32.x) | 需确认密钥ID有效性 | ### 相关问题 1. 如何验证 GPG 密钥指纹是否与 NVIDIA 官方发布一致? 2. 当多个仓库使用同一密钥时如何优化配置? 3. 在防火墙限制环境下如何使用备用密钥服务器? 4. 迁移后如何解决 `NO_PUBKEY` 错误的最佳实践?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值