Build kernel và cài driver bonding cho Jetson Nano

1. Kiểm tra trước (trên Jetson Nano)

a) Chạy những lệnh sau để xem kernel hiện tại có hỗ trợ bonding hay chưa:

  • Kiểm tra module đã có sẵn không
ls /lib/modules/$(uname -r)/kernel/drivers/net/bonding || echo "bonding module not found”
  • Hoặc tìm bất kỳ file liên quan
modinfo bonding 2>/dev/null || echo "modinfo bonding: không tìm thấy”
  • Kiểm tra cấu hình hiện tại
uname -r
head -n 1 /etc/nv_tegra_release

Example: R32 (release), REVISION: 7.6, GCID: 38171779, BOARD: t210ref, EABI: aarch64, DATE: Tue Nov 5 07:46:14 UTC 2024

2. Tải Source Kernel đúng với phiên bản đang dùng

a) Tạo thư mục để tải và giải nén kernel

mkdir -p ~/jetson_kernel_build && cd ~/jetson_kernel_build

wget[https://developer.nvidia.com/downloads/embedded/l4t/r32_release_v7.6/sources/t210/public_sources.tbz2](https://developer.nvidia.com/downloads/embedded/l4t/r32_release_v7.6/sources/t210/public_sources.tbz2)

tar -xjf public_sources.tbz2

cd Linux_for_Tegra/source/public

tar -xjf kernel_src.tbz2

cd kernel/kernel-4.9

b) Trên Jetson thực hiện copy kernel hiện tại dùng SCP

scp tegra_defconfig uav@192.168.179.60:/home/uav/jetson_kernel_build/Linux_for_Tegra/source/public/kernel/kernel-4.9/
  • Chú ý: Nhập mật khẩu/user của máy ảo để thực hiện SCP
3. Thực hành Cấu hình môi trường và compiled  kernel

a) Trên máy x86

  • Tạo thư mục:
mkdir -p kernel_out trong jetson_kernel_build

export CROSS_COMPILE=aarch64-linux-gnu- export ARCH=arm64 export TEGRA_KERNEL_OUT=$HOME/jetson_kernel_build/kernel_out export TEGRA_KERNEL_SRC=$HOME/jetson_kernel_build/Linux_for_Tegra/source/public/kernel/kernel-4.9

cd $TEGRA_KERNEL_SRC cp tegra_defconfig $TEGRA_KERNEL_OUT/.config

  • Build module bonding

Bạn cần mở lại hoặc chắc chắn menu cấu hình kernel và bật bonding thành module:

make O=$TEGRA_KERNEL_OUT ARCH=arm64 menuconfig

Chú ý: Chọn Save → để nguyên tên .configOK

 

  • Thực hiện build driver
make O=$TEGRA_KERNEL_OUT ARCH=arm64 prepare make O=$TEGRA_KERNEL_OUT ARCH=arm64 modules_prepare make O=$TEGRA_KERNEL_OUT M=drivers/net/bonding ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules

  • Sau khi build xong, kết quả có tại:
$TEGRA_KERNEL_OUT/drivers/net/bonding/bonding.ko
  • Chú ý $TEGRA_KERNEL_OUT đã được định nghĩa bên trên
  1. Sau khi xong, module nằm tại: $TEGRA_KERNEL_OUT/drivers/net/bonding/bonding.ko

b) Copy driver đã biên dịch thành công sang Jetson Nano

scp $TEGRA_KERNEL_OUT/drivers/net/bonding/bonding.ko [uav@192.168.179.60]

(mailto:uav@192.168.179.60):/home/dnt/

4. Link tham khảo:

https://developer.ridgerun.com/wiki/index.php/Jetson_Nano/Development/Building_the_Kernel_from_Source

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

https://www.waveshare.com/wiki/JETSON-NANO-DEV-KIT#Method_Two:_Directly_Download_Jetpack

https://forums.developer.nvidia.com/t/internet-bonding-possible-in-jetson-nano/74293/3

https://developer.nvidia.com/embedded/linux-tegra-r3276

Hướng dẫn tạo NIC Team trên Jetson Nano

Leave a Comment

Your email address will not be published. Required fields are marked *