Day14_内核编译&安装

1、参考文档

微雪入门文档:

https://www.waveshare.net/wiki/JetBot_AI_Kit

微雪使用文档:

https://www.waveshare.net/wiki/JETSON-NANO-DEV-KIT#.E7.B3.BB.E7.BB.9F.E7.83.A7.E5.BD.95

nvidia官方文档:

https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3275/index.html#page/Tegra Linux Driver Package Development Guide/quick_start.html#

nvidia官方内核资源下载:

https://developer.nvidia.com/embedded/jetson-linux-archive

内核部署目录:(原地解压)

https://developer.nvidia.com/downloads/embedded/l4t/r32_release_v7.6/t210/jetson-210_linux_r32.7.6_aarch64.tbz2

内核源码目录:(原地解压)

https://developer.nvidia.com/downloads/embedded/l4t/r32_release_v7.6/sources/t210/public_sources.tbz2

根文件系统:(指定目录Linux_for_Tegra/rootfs解压)

https://developer.nvidia.com/downloads/embedded/l4t/r32_release_v7.6/t210/tegra_linux_sample-root-filesystem_r32.7.6_aarch64.tbz2

jetson nano 4G版本补丁包:(原地解压)

https://developer.nvidia.com/downloads/embedded/L4T/r32_Release_v7.5/overlay_32.7.5_PCN211181.tbz2

2、基础指令

2.1内核源码指令

cpp 复制代码
## 内核源码目录
# Makefile
	# 内核全量编译
sudo time make -j16
	# 导入官方jetson nano默认配置
sudo make tegra_defconfig
	# 安装内核模块
sudo make modules_install INSTALL_MOD_PATH="rootfs根文件路径"


## u-boot源码目录
# 添加默认配置
sudo make p3450-0000_defconfig


## 内核部署目录
# 根文件系统安装驱动 & 库文件 & 配置文件
sudo ./apply_binaries.sh 

# Force Recovery模式烧录
# jetson nano进行FC REC短接后,使用usb线连接ubuntu
	# emmc烧录
sudo ./flash.sh jetson-nano-emmc mmcblk0p1
	# emmc烧录,仅uboot分区
sudo ./flash.sh -k LNX jetson-nano-emmc mmcblk0p1

# u-boot部署目录放置路径
~/Linux_for_Tegra/bootloader/t210ref/p3450-0000/u-boot.bin
# 执行拷贝,示例
sudo cp ~/test/Linux_for_Tegra/source/public/u-boot/u-boot.bin ~/test/Linux_for_Tegra/bootloader/t210ref/p3450-0000/

2.2jetson nano指令

cpp 复制代码
# 设置内核启动介质(emmc有效)
	# emmc启动:mmcblk0p1
	# SD卡启动:mmcblk1p1
	# USB启动:sda
sudo vim /boot/extlinux/extlinux.conf

# 自动扩容脚本
	# 根据当前可用的磁盘自动扩容
cd /usr/lib/nvidia/resizefs
sudo ./nvresizefs.sh

# 设置电源模式
	# 10W最大功耗
sudo nvpmodel -m0
	# 5W功耗
sudo nvpmodel -m1

# WIFI设置
sudo nmcli dev wifi connect ChinaNet-YgrH-5G password ghepmskt ifname wlan0

3、其他

3.1编译自动化脚本:

cpp 复制代码
#!/bin/bash

set -e

# 源码根目录
PATH_ROOT="/home/linux/null/Linux_for_Tegra/"


if [ $1 = "bak" ]
then
    sudo cp ${PATH_ROOT}kernel/Image ${PATH_ROOT}kernel/bak.Image
    sudo cp ${PATH_ROOT}kernel/dtb ${PATH_ROOT}kernel/bak.dtb -r
    sudo cp ${PATH_ROOT}bootloader/t210ref/p3450-0000/u-boot.bin ${PATH_ROOT}bootloader/t210ref/p3450-0000/bak.u-boot.bin
fi
if [ $1 = "kbd" ]
then
    cd ${PATH_ROOT}source/public/kernel/kernel-4.9

    # 设置编译必要的环境变量
    export CROSS_COMPILE=aarch64-linux-gnu-
    export LOCALVERSION=-tegra

    # 导入官方默认配置,并执行源码编译
    sudo make ARCH=arm64 tegra_defconfig

    sudo time make ARCH=arm64 -j16

    # 将编译后的内核 & 设备树 & 根文件系统,从源码目录拷贝到内核部署目录
    sudo cp  arch/arm64/boot/Image   ${PATH_ROOT}kernel/
    sudo cp -rf arch/arm64/boot/dts/*.dt*  ${PATH_ROOT}kernel/dtb/
    sudo make ARCH=arm64 modules_install INSTALL_MOD_PATH=${PATH_ROOT}rootfs


fi
if [ $1 = "ubd" ]
then
    cd ${PATH_ROOT}source/public/u-boot/

    export CROSS_COMPILE=aarch64-linux-gnu-

    sudo make p3450-0000_defconfig

    sudo make -j16

    sudo cp u-boot.bin ${PATH_ROOT}bootloader/t210ref/p3450-0000/
fi
# if [ $1 = "mv" ]
# then
#     if [ -n "$2" ]
#     then
#         # 将内核 & 设备树 & 根文件系统替换到SD卡boot目录
#         sudo cp /home/linux/kernel-4.9/arch/arm64/boot/Image "$2"boot
#         sudo cp /home/linux/kernel-4.9/arch/arm64/boot/dts/*.dt* "$2"boot
#         sudo cp -rf ${PATH_ROOT}rootfs/lib/modules "$2"lib/
#     fi
# fi

4、USB镜像烧录

为 Jetson Nano 4GB 制作 USB 启动盘是一个不错的扩展存储和提升系统性能的方法。这个过程主要是在 Ubuntu 主机(你的虚拟机)上完成的。为了让你快速了解全貌,我先用一个表格总结关键步骤和注意事项:

步骤 关键操作 注意事项 & 提示
1. 前提条件 确认 Nano 能从 eMMC 正常启动。 这是手动制作 USB 启动盘的基础。
2. 准备 U 盘 在 Ubuntu 主机上使用 parted/dev/sdb 分区:1. 创建 GPT 分区表:sudo parted /dev/sdb mklabel gpt2. 创建至少 16GB 的 APP 分区:sudo parted /dev/sdb mkpart APP 0GB 16GB3. 格式化为 ext4 并挂载:sudo mkfs.ext4 /dev/sdb1sudo mount /dev/sdb1 /mnt 务必确认设备是 /dev/sdb 。分区后设备号为 /dev/sdb1。强烈推荐使用 ext4 格式。
3. 生成系统 1. Nano 进入强制恢复模式 (短接 FC REC 和 GND 引脚并连接 USB 线到主机)2. 在 Linux_for_Tegra/ 目录下执行: sudo BOOTDEV=sda1 ./flash.sh --no-flash jetson-nano-devkit sda1 sudo mkdir tmp_system sudo mount bootloader/system.img.raw ./tmp_system sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude=/proc ./tmp_system/ /mnt sync --no-flash 参数表示只生成不刷写。此过程较耗时。命令中的 sda1 是 Nano 启动后对 USB 的识别名。
4. 收尾 卸载 U 盘:sudo umount /mntsudo umount ./tmp_system 之后可安全移除 U 盘。
5. 启动测试 将 U 盘插入 Nano,上电启动。 若仍从内部存储启动,需进入 Nano 系统修改启动配置(见下文注意事项)。

🔔 操作前请注意:

  • 数据备份 :此过程会清除目标 USB 存储设备上的所有数据,请提前备份重要文件。
  • 设备确认务必再三确认 你在主机上操作的设备是 U 盘(此处的 /dev/sdb)而非你的主机硬盘或其他存储设备,以免造成数据丢失。可使用 lsblk 命令核对。
  • 系统修改 :如表格所述,制作完成后,若 Jetson Nano 仍然从自身存储启动,你需要进入 Nano 的系统 ,修改 /boot/extlinux/extlinux.conf 文件,将 root= 参数的值改为 /dev/sda1 并保存,这样才能引导从 USB 启动。
  • 硬件准备 :操作中需要:
    • 通过跳线帽或杜邦线短接 Jetson Nano 的 FC REC 和 GND 引脚以进入强制恢复模式。
    • 使用一根 Micro USB 数据线连接 Nano 和主机。
    • 一个 5V 4A 的电源适配器为 Nano 供电。

💡 其他烧录方式

除了上述手动方法,你也可以考虑:

  • 使用 Etcher 工具 :如果你有现成的系统镜像文件(如 .img 文件),可以使用 Etcher 这类图形化工具直接烧录到 U 盘,操作更直观简单。
  • 利用 jetson-disk-image-creator.sh 脚本 :在 Linux_for_Tegra/tools/ 目录下,此脚本可创建当前系统的磁盘镜像,例如:

然后再将生成的 nano_backup.img 刷写到 U 盘。

复制代码
```bash
sudo ./jetson-disk-image-creator.sh -o nano_backup.img -b jetson-nano -r 300
```

希望这些信息能帮助你顺利完成 Jetson Nano 4GB 的 USB 系统烧录。如果你在操作过程中遇到其他问题,欢迎随时提问。

相关推荐
进击的_鹏3 小时前
【Linux】vim的操作大全
linux·编辑器·vim
云动雨颤4 小时前
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
linux·运维·服务器
亮子AI4 小时前
【Ubuntu】清理空间的几种方法
linux·运维·ubuntu
赵渝强老师5 小时前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes
Maple_land5 小时前
Linux进程第五讲:PPID与bash的关联、fork系统调用的原理与实践操作(上)
linux·运维·服务器·centos·bash
青草地溪水旁6 小时前
进程“悄悄话”函数——`socketpair`
linux·进程间通信
风为你而吹6 小时前
【玩泰山派】4、制作ubuntu镜像-(6)使用鲁班猫的sdk去制作镜像
linux·运维·ubuntu
running thunderbolt6 小时前
项目---网络通信组件JsonRpc
linux·服务器·c语言·开发语言·网络·c++·性能优化
_OP_CHEN7 小时前
Linux 系统编程:(一)从历史演进到 XShell 远程登录实操
linux·运维·服务器·centos·unix·xshell