How to customize kernel and rootfs by holding most dispensable function?

I need TX2 to fulfill its best performance such as a pipeline including image acquisition, processing and display. So I only need a condense kernel, an extremely simple rootfs. So here are my problems:

1)How to load kernel by tftpboot, tx2’s development guide said its kernel must be stored in its own emmc.

2)How to customize rootfs? If by deleting files in sample rootfs, i am not sure what files could be deleted especially when it comes to so many config files about gui settings. If merely start from busybox, I need to know other dependencies necessary for image sensing, cuda, visionworks and other packages I want, this job seems so huge for me.

So what could I do for these problems? Can you please help me.

Thanks in advance,
Danny.Dong

What I would suggest is to start by seeing what you can cut out via the package manager on a running Jetson. Then clone this and use the clone as your sample rootfs replacement.

Clones can be loopback mounted, examined, edited, copied.

Clones can be used in place of “bootloader/system.img”, and if the flash.sh “-r” option is used to re-use rootfs, then this clone is used instead of replacing system.img with a new file. Or a clone can be copied into the “rootfs/” directory. Many creative ways exist to use a clone.

Cutting down the existing system is likely to be much faster than producing a new system from scratch since CUDA access depends on a driver which must use a given X ABI version.

I finishied simplifying one rootfs on mmc of my board, and during recovery mode I made one clone image by running “sudo ./flash.sh -r -k APP -G clone.img jetson-tx2 mmcblk1p1”, and problems arise as below:

./tegraflash.py --chip 0x18 --applet “/home/tung/64_TX2/Linux_for_Tegra_tx2/bootloader/mb1_recovery_prod.bin” --cmd “dump eeprom boardinfo cvm.bin” --skipuid
Welcome to Tegra Flash
version 1.0.0
Type ? or help for help and q or quit to exit
Use ! to execute system commands

[ 0.0056 ] Generating RCM messages
[ 0.0078 ] tegrarcm_v2 --listrcm rcm_list.xml --chip 0x18 --download rcm /home/tung/64_TX2/Linux_for_Tegra_tx2/bootloader/mb1_recovery_prod.bin 0 0
[ 0.0100 ] RCM 0 is saved as rcm_0.rcm
[ 0.0112 ] RCM 1 is saved as rcm_1.rcm
[ 0.0113 ] List of rcm files are saved in rcm_list.xml
[ 0.0113 ]
[ 0.0113 ] Signing RCM messages
[ 0.0147 ] tegrasign_v2 --key None --list rcm_list.xml --pubkeyhash pub_key.key
[ 0.0171 ] Assuming zero filled SBK key
[ 0.0309 ]
[ 0.0309 ] Copying signature to RCM mesages
[ 0.0331 ] tegrarcm_v2 --chip 0x18 --updatesig rcm_list_signed.xml
[ 0.0361 ]
[ 0.0362 ] Boot Rom communication
[ 0.0385 ] tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid
[ 0.1593 ]
Error: Return value 8
Command tegrarcm_v2 --chip 0x18 --rcm rcm_list_signed.xml --skipuid
Reading board information failed.
if I type the cmd to flash system.img on the board, then it goes well, but I use the clone command it goes wrong, is there any way else to make one clone img, for example, how could I copy whole rootfs on mmc to one directory on my host, then I make this directory to a clone image?

Is this R28.1?

FYI, mmcblk1p1 is incorrect. This is trying to read the SD card. The correct spec for eMMC is mmcblk0p1.

yeah, it’s r28.1, actually i tried the two commands including mmcblk0p1, both print same problems, thanks.

Is the host a native Linux install, or a VM? VMs almost always have USB issues. For me (using mmcblk0p1) this works.

One thing to know is that each time you issue a command to a Jetson in recovery mode the recovery mode must be restarted. For example, you could not clone twice in recovery mode without restarting recovery mode prior to the second clone. Or the same for flashing, you could not clone and then flash unless recovery mode is restarted between commands.