Giới thiệu
Nvidia Xavier NX là một dòng máy tính mạnh mẽ, nổi bật với khả năng xử lý trí tuệ nhân tạo (AI) trong kích thước nhỏ gọn. Sản phẩm này được ứng dụng trong nhiều lĩnh vực như robot, xe tự hành, và IoT công nghiệp, với mức giá khởi điểm trên 20 triệu đồng.
Tham khảo thông số kỹ thuật tại đây
Vấn Đề Thời Gian Khởi Động
Theo hướng dẫn flash kit với JetPack 5.1.1, thời gian khởi động ban đầu của Nvidia Xavier NX dao động từ 46 đến 49 giây. Đây là một khoảng thời gian khá lâu đối với các lập trình viên và người sử dụng muốn nhanh chóng truy cập vào hệ thống. Do đó, việc giảm thời gian khởi động là cần thiết.
Phương Hướng Tối Ưu Hóa
Để giảm thời gian khởi động của thiết bị, trước hết, hãy tìm hiểu các thành phần chính trong quy trình khởi động của hệ thống nhúng Linux, bao gồm:
- Toolchain: Bộ công cụ phát triển phần mềm.
- Bootloader: Khởi động hệ thống và tải kernel vào RAM.
- Kernel: Quản lý phần cứng và cung cấp dịch vụ cho ứng dụng.
- Root Filesystem: Hệ thống tập tin chứa tất cả thư mục và tệp tin cần thiết.
Các thành phần này cần được tối ưu hóa để giảm thời gian khởi động.
Các Bước Tối Ưu Hóa
1. Tối Ưu Hóa Bootloader
Nvidia Xavier NX hỗ trợ hai loại bootloader: CBoot và UEFI. Để tối ưu hóa UEFI, mọi người cần tinh chỉnh và biên dịch lại mã nguồn UEFI bằng Docker. Dưới đây là hướng dẫn từng bước:
Bước 1: Cài Đặt Docker
sudo apt install docker.io
sudo usermod -a -G docker ${USER}
Bước 2: Thiết Lập Môi Trường
export EDK2_DEV_IMAGE="ghcr.io/tianocore/containers/ubuntu-22-dev:latest"
export EDK2_USER_ARGS="-v \"${HOME}\":\"${HOME}\" -e EDK2_DOCKER_USER_HOME=\"${HOME}\""
export EDK2_BUILD_ROOT="/build"
export EDK2_BUILDROOT_ARGS="-v \"${EDK2_BUILD_ROOT}\":\"${EDK2_BUILD_ROOT}\""
alias edk2_docker="docker run -it --rm -w \"\$(pwd)\" ${EDK2_BUILDROOT_ARGS} ${EDK2_USER_ARGS} \"${EDK2_DEV_IMAGE}\""
edk2_docker echo hello
Bước 3: Clone Source UEFI
cd /build
edk2_docker edkrepo clone nvidia-uefi NVIDIA-Platforms r35.3.1 updates
Bước 4: Tinh Chỉnh UEFI
Tại folder build/nvidia-uefi/edk2-nvidia/Platform/NVIDIA
, điều chỉnh file để tắt boot timeout.
Bước 5: Build UEFI Image
cd build/nvidia-uefi
edk2_docker edk2-nvidia/Platform/NVIDIA/Jetson/build.sh
Bước 6: Thay thế Image Mới
cd images
sudo mv uefi_Jetson_RELEASE.bin uefi_jetson.bin
sudo cp -rf ./uefi_jetson.bin Nvidia_Directory/Linux_for_Tegra/bootloader/
2. Tối Ưu Hóa Kernel Image
Để tối ưu hóa kernel, trước tiên bạn cần tải về mã nguồn Linux Kernel và thực hiện các bước sau:
Bước 1: Cài Đặt Công Cụ Phát Triển
sudo apt install build-essential bc
Bước 2: Giải Nén Mã Nguồn
tar -xjf public_sources.tbz2
cd Linux_for_Tegra/source/public
tar -xjf kernel_src.tbz2
Bước 3: Tinh Chỉnh Kernel
Sử dụng make menuconfig
để vô hiệu hóa các tính năng không cần thiết nhằm giảm kích thước kernel.
Bước 4: Build Kernel
sudo make -C kernel/kernel-5.10/ ARCH=arm64 O=$TEGRA_KERNEL_OUT LOCALVERSION=-tegra CROSS_COMPILE=${TOOLCHAIN_PREFIX} -j$(nproc) Image
Sau khi hoàn tất, thay thế Image cũ bằng Image mới.
3. Tối Ưu Hóa Root Filesystem
Sử dụng lệnh systemd-analyze blame
để kiểm tra các dịch vụ khởi động. Vô hiệu hóa các dịch vụ không cần thiết để tăng tốc thời gian khởi động. Các dịch vụ có thể được vô hiệu hóa bằng lệnh:
sudo systemctl disable <tên_dịch_vụ>
Kết Lại
Tùy thuộc vào mức độ tối ưu hóa, thời gian khởi động sẽ được cải thiện. Để kiểm tra kết quả, sử dụng các lệnh hệ thống như systemd-analyze
và systemd-analyze blame
. Hy vọng bài viết này sẽ giúp ích cho bạn trong việc tối ưu hóa thời gian khởi động của Nvidia Xavier NX.
source: viblo