problem when cross-compiling the kernel


I am using L4T 28.2, and I try to cross compile the kernel according to

  • After flashing the compiled kernel into TX1, I find that “uname -r” gives “4.4.38”, not “4.4.38-tegra”. However, the folder in /usr/src is “linux-headers-4.4.38-tegra”.

    I search the forum. Some people suggest changing CONFIG_LOCALVERSION to CONFIG_LOCALVERSION="-tegra". I also check the file /proc/config.gz in another TX1 whose OS is installed with the GUI installer “”. In the /proc/config.gz, it is set to CONFIG_LOCALVERSION="".

    How can I config the kernel such that “uname -r” gives “4.4.38-tegra”?

    Thank you!

    R28.2 was not actually listed as compatible with the TX1, but I have used this before and from what I can tell it does work (perhaps the reason for not listing this as compatible is only due to the TX1 feature addition part of its lifetime expiring…R28.3 was a bug fix release and this is still supported, and so TX1 was listed in R28.3). However, you might be interested in going to R28.3 via command line flash. If you go here and login, then go to this URL a second time (since redirect doesn’t work), you’ll find releases in a table with what they are compatible with:

    Regarding CONFIG_LOCALVERSION and “/proc/config.gz”, the config.gz is an exact match of the running system with one exception: It leaves CONFIG_LOCALVERSION blank. If you use config.gz and then edit this, then your match is truly a 100% exact match:


    The result of “uname -r” is the base kernel version (e.g., “4.4.38”), appended with CONFIG_LOCALVERSION (e.g., “-tegra”). This is how “4.4.38-tegra” is produced (and module search location requires this to be an exact match to find the right modules).

    Clean (better yet, completely erase the output location content) and build again, and this should do the job.