Jetson nano usb boot
usb boot
Jetson Nano のUSB bootには、usb3 firmware とxusbドライバをカーネルに盛り込む必要がある。
全体の流れ。
- kernel source download
- get kernel config
- get usb firmware
- make menuconfig & build & install
- create ext4 and copy on usb
- edit extlinux.conf
kernel source
Jetson-Nano-public_sources.tbz2
get config
zcat /proc/config.gz > .config
get firmware
cp /lib/firmware/tegra21x_xusb_firmware ./firmware/
make menuconfig
kernel config
- sudo apt-get install libncurses5-dev
- make menuconfig
Device Drivers -> Generic Driver Options -> "External firmware blobs to build into the kernel binary," -> "tegra21x_xusb_firmware"
build and install kernel
カーネルのビルドとインストール。
cd ~/kernel/kernel-4.9 make -j5 sudo make modules_install sudo cp /boot/Image /boot/Image.dist sudo cp arch/arm64/boot/Image /boot
ここでreboot。
create ext4 and copy on usb
usb flashにパーティションを作成し、rootfsをコピー。
# clear usb flash sudo dd if=/dev/zero of=/dev/sda bs=1M count=1 sudo cfdisk /dev/sda # root とswapの2つのgptパーティションを作成。 # 24GB/root + 6GB/swapの例 sudo parted /dev/sda print sudo parted /dev/sda mklabel gpt sudo parted /dev/sda mkpart root ext4 1MB 24GB sudo parted /dev/sda mkpart swap linux-swap 24GB 30GB # copy rootfs sudo mkfs.ext4 /dev/sda1 sudo mkswap /dev/sda2 sudo mkdir /mnt/root sudo mount /dev/sda1 /mnt/root sudo mkdir /mnt/root/proc sudo apt -y install rsync sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude=/proc / /mnt/root
edit extlinux.conf
sudo sed -i 's/mmcblk0p1/sda1/' /boot/extlinux/extlinux.conf # 以下は不要。 sudo sed -i 's/rootwait/rootwait zswap.enabled=1/' /boot/extlinux/extlinux.conf
上記のzswap.enabled=1はドライバを入れた場合だが、本記事では省略しているので不要。
ここでreboot
最後にswap partition
先のrebootで問題なければ、
echo "/dev/sda2 none swap \ defaults 0 1" | sudo tee -a /etc/fstab cd ~ wget https://raw.githubusercontent.com/Syonyk/raspberry_pi_scripts/master/zswap.sh
zswap は、ドライバを入れていれば。
参考元にはzswapドライバを入れる手順があるが省略。
ref
https://syonyk.blogspot.com/2019/04/nvidia-jetson-nano-desktop-use-kernel-builds.html?m=1