Jetson/Filesystem Emulation/Emulating Jetson Filesystem with QEMU and CHROOT
Contents
Setting up the Target Device
From the L4T Archive, download the desired L4T Driver Package and corresponding sample filesystem.
Flash the target device following the instructions described here.. After flashing, the device will reboot. Please configure the device at first boot and log into the OS.
Installing the Dependencies
The dependencies to be installed are specific to the task to be performed on the emulated filesystem. For the sake of exemplification, the Jetson Multimedia API samples will be compiled, therefore the dependencies are set for this purpose.
For more details, please see the documentation for the Multimedia API Sample Applications.
On the target, issue the following commands:
$ sudo apt update $ apt list --upgradable $ sudo apt upgrade $ sudo apt install nvidia-jetpack
Clone Your Device's Image
After installing the JetPack, shut down the device and set it into recovery mode.
Now, on the host PC, issue the following commands to clone your device's image.
$ cd <path_to_L4T> $ sudo ./flash.sh -r -k APP -G <name_of_the_img> <target> mmcblk0p1
Setting up Emulation Environment
Install docker and Nvidia Container Runtime. See instructions here.
Install QEMU and dependencies:
$ sudo apt-get update $ sudo apt-get install qemu binfmt-support qemu-user-static
Mount your target filesystem
$ mkdir $HOME/jetsonfs $ sudo mount -t ext4 <path_to_image>/<name_of_image>.img.raw $HOME/jetsonfs
You can find the Jetson Multimedia API in the mounted file system under following path:
/usr/src/jetson_multimedia_api
Pull the NVIDIA L4T Base docker image that matches the L4T version you flashed on the Jetson.