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内核源码指令
## 内核源码目录 # 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指令
# 设置内核启动介质(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编译自动化脚本:
#!/bin/bashset -e# 源码根目录 PATH_ROOT="/home/linux/null/Linux_for_Tegra/"if [ $1 = "bak" ] thensudo cp ${PATH_ROOT}kernel/Image ${PATH_ROOT}kernel/bak.Imagesudo cp ${PATH_ROOT}kernel/dtb ${PATH_ROOT}kernel/bak.dtb -rsudo cp ${PATH_ROOT}bootloader/t210ref/p3450-0000/u-boot.bin ${PATH_ROOT}bootloader/t210ref/p3450-0000/bak.u-boot.bin fi if [ $1 = "kbd" ] thencd ${PATH_ROOT}source/public/kernel/kernel-4.9# 设置编译必要的环境变量export CROSS_COMPILE=aarch64-linux-gnu-export LOCALVERSION=-tegra# 导入官方默认配置,并执行源码编译sudo make ARCH=arm64 tegra_defconfigsudo 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}rootfsfi if [ $1 = "ubd" ] thencd ${PATH_ROOT}source/public/u-boot/export CROSS_COMPILE=aarch64-linux-gnu-sudo make p3450-0000_defconfigsudo make -j16sudo 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 gpt
2. 创建至少 16GB 的 APP 分区:sudo parted /dev/sdb mkpart APP 0GB 16GB
3. 格式化为 ext4 并挂载:sudo mkfs.ext4 /dev/sdb1
和sudo 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 /mnt
和sudo 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 系统烧录。如果你在操作过程中遇到其他问题,欢迎随时提问。