IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ubuntu 下jetson nano编译内核及系统烧录-超详细 -> 正文阅读

[系统运维]ubuntu 下jetson nano编译内核及系统烧录-超详细

一、内核编译

jetson nano 的内核编译踩了不少坑,记录一下:

步骤如下:

1.下载交叉编译工具

这里的网址来自官网,可以会更新,如果下载不了,需要去官网下载。

/home$ wget?http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz

2.解压工具

可以放在其他位置,我放在home目录下:

/home$ tar -xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz

3.下载源码

这里的网址来自官网,可以会更新,如果下载不了,需要去官网下载。

/home$ wget?https://developer.download.nvidia.cn/embedded/L4T/r32_Release_v7.1/Sources/T210/public_sources.tbz2

4.解压源码

/home$ sudo tar -xjf public_sources.tbz2

5.进入源码目录

/home$ cd Linux_for_Tegra/source/public/

6.解压kernel

/home/Linux_for_Tegra/source/public$ tar -xjf kernel_src.tbz2

7.安装工具

/home/Linux_for_Tegra/source/public$ sudo apt install build-essential bc

8.设置内核输出目录

这里我把内核输出目录设置在了home下的kernel_out

/home/Linux_for_Tegra/source/public$ TEGRA_KERNEL_OUT=/home/kernel_out

9.设置交叉编译工具的环境变量

/home/Linux_for_Tegra/source/public$ export CROSS_COMPILE=/home/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

10.设置环境变量

这一步必须加

/home/Linux_for_Tegra/source/public$ export LOCALVERSION=-tegra

11.进入内核目录

/home/Linux_for_Tegra/source/public$ cd kernel/kernel-4.9/

12.新建内核输出目录

/home/Linux_for_Tegra/source/public/kernel/kernel-4.9$ mkdir -p $TEGRA_KERNEL_OUT

13.生成config文件

/home/Linux_for_Tegra/source/public/kernel/kernel-4.9$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig

14.编译内核

/home/Linux_for_Tegra/source/public/kernel/kernel-4.9$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT

内核编译完成以后会在设置的输出目录下生成Image文件TEGRA_KERNEL_OUT/arch/arm64/boot/Image

以及DTB

TEGRA_KERNEL_OUT/arch/arm64/boot/dts/

注意:遇到的坑!

在ubuntu下,如果在解压或者编译的时候提示没有权限,然后如果使用sudo指令,就会在最后一步14,提示编译错误!错误的log如下:LSE atomics not supported by binutils

arch/arm64/Makefile:49: LSE atomics not supported by binutils
  CHK     include/config/kernel.release
  Using /home/Linux_for_Tegra/source/public/kernel/kernel-4.9 as source for kernel
  GEN     ./Makefile
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  CC      kernel/bounds.s
gcc: error: unrecognized command line option ‘-mlittle-endian’; did you mean ‘-fconvert=little-endian’?
/home/Linux_for_Tegra/source/public/kernel/kernel-4.9/./Kbuild:20: recipe for target 'kernel/bounds.s' failed
make[2]: *** [kernel/bounds.s] Error 1
/home/Linux_for_Tegra/source/public/kernel/kernel-4.9/Makefile:1167: recipe for target 'prepare0' failed
make[1]: *** [prepare0] Error 2
make[1]: Leaving directory '/home/kernel_out'
Makefile:171: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2

这是因为使用sudo没有root权限所致,所以在以上步骤的时候,需要获取root权限后操作,并且严格按照上面操作,需要添加sudo的地方添加,没有的地方不要加!!!

我在官网提交的以及官方的回复:

LSE atomics not supported by binutils - Jetson Nano - NVIDIA Developer Forums

另外,如果使用ubuntu远程登录默认root是不开放的,需要手动开放root登录:

1.设置密码

sudo passwd root

2.修改文件

sudo vi /etc/ssh/sshd_config 

,找到?#Authentication,将?PermitRootLogin?参数修改为?yes。如果?PermitRootLogin?参数被注释,请去掉首行的注释符号(#)如果没有就手动添加。如下图所示:
?

找到?#Authentication,将?PasswordAuthentication?参数修改为 yes。如下图所示:若?sshd_config?配置文件中无此配置项,则添加?PasswordAuthentication yes?项即可。

?退出保存。

然后重启ssh服务:

sudo service ssh restart

?二、根文件系统及烧录

1.下载示例文件系统和驱动包

进入home目录:cd ~

下载文件:

root@VM-12-5-ubuntu:~# wget?https://developer.download.nvidia.cn/embedded/L4T/r32_Release_v7.1/T210/Tegra_Linux_Sample-Root-Filesystem_R32.7.1_aarch64.tbz2??????

下载:?L4TDriver Package

root@VM-12-5-ubuntu:~# wget?https://developer.download.nvidia.cn/embedded/L4T/r32_Release_v7.1/T210/Jetson-210_Linux_R32.7.1_aarch64.tbz2

2. 解压驱动包

root@VM-12-5-ubuntu:~# tar -xjf?Jetson-210_Linux_R32.7.1_aarch64.tbz2

解压出来会有一个文件名字为 Linux_for_Tgera的文件夹;

3.进入rootfs目录

root@VM-12-5-ubuntu:~# cd?Linux_for_Tgera/rootfs

这时roofs是空的。

4.将示例文件系统解压

root@VM-12-5-ubuntu:~/Linux_for_Tegra/rootfs#?sudo tar -jxpf ../../Tegra_Linux_Sample-Root-Filesystem_R32.7.1_aarch64.tbz2

现在rootfs已经装好了文件系统。

5.运行脚本


root@VM-12-5-ubuntu:~/Linux_for_Tegra/rootfs# cd ..
root@VM-12-5-ubuntu:~/Linux_for_Tegra# sudo ./apply_binaries.sh

运行apply_binary .sh脚本将NVIDIA用户空间库复制到目标文件系统中。

注意,这里有可能出现ERROR qemu not found! 的问题,需要安装一下工具:

sudo apt-get install qemu-user-static

6.替换Image文件


root@VM-12-5-ubuntu:~/Linux_for_Tegra# cp /home/kernel_out/arch/arm64/boot/Image kernel/Image


7.替换DTB文件

root@VM-12-5-ubuntu:~/Linux_for_Tegra# cp -r /home/kernel_out/arch/arm64/boot/dts/ kernel/dtb/

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 10:14:47  更:2022-05-14 10:14:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:57:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码