# NVIDIA Jetson Nano - Docker optimized Linux Kernel

DevFeed: [NVIDIA Jetson Nano - Docker optimized Linux Kernel](<https://devfeed.tech/articles/nvidia-jetson-nano-docker-optimized-linux-kernel-29468.md>)

Original publisher: [Read original article](<https://blog.hypriot.com/post/nvidia-jetson-nano-build-kernel-docker-optimized/>)

Published: 2019-05-04T01:57:21Z

Content type: tutorial

Language: en

Sources: [Hypriot](<https://devfeed.tech/sources/hypriot.md>)

Topics: [Jetson](<https://devfeed.tech/topics/jetson.md>), [Linux Kernel](<https://devfeed.tech/topics/linux-kernel.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [k3s](<https://devfeed.tech/topics/k3s.md>), [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [networking](<https://devfeed.tech/topics/networking.md>), [Ubuntu](<https://devfeed.tech/topics/ubuntu.md>)

Tags: [build-system](<https://devfeed.tech/tags/build-system.md>), [developer](<https://devfeed.tech/tags/developer.md>), [docker](<https://devfeed.tech/tags/docker.md>), [jetson](<https://devfeed.tech/tags/jetson.md>), [k3s](<https://devfeed.tech/tags/k3s.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [linux-kernel](<https://devfeed.tech/tags/linux-kernel.md>), [networking](<https://devfeed.tech/tags/networking.md>), [robotics](<https://devfeed.tech/tags/robotics.md>), [ubuntu](<https://devfeed.tech/tags/ubuntu.md>)

## AI overview

This tutorial explains how to customize and build a Linux kernel directly on the NVIDIA Jetson Nano DevKit. It focuses on adding kernel settings, including IPVLAN, needed for networking with Docker Swarm, Kubernetes, and k3s, and covers preparing the build environment and downloading the kernel sources.

## Source excerpt

Despite the fact that the NVIDIA Jetson Nano DevKit comes with Docker Engine preinstalled and you can run containers just out-of-the-box on this great AI and Robotics enabled board, there are still some important kernel settings missing to run Docker Swarm mode, Kubernetes or k3s correctly. So, let's try to fix this... Analyzing the Linux Kernel In my last blogpost Verify your Linux Kernel for Container Compatibility, I already shared all the details how you can easily verify the Linux kernel for all Container related kernel settings. So, this first part of analyzing the capabilities of the stock Linux kernel 4.9.x provided by NVIDIA is already done and documented. And this was an easy task as well, so everyone who's interested in these details can repeat the task at his/her own device. Let's recap what we did found. Especially there is one important setting which will be used for networking. This feature called "IPVLAN", is required for Docker Swarm mode and it's also used for networking in Kubernetes and k3s. Building your own Linux Kernel Anyway, even when we'd like to include or change only a single kernel setting, we have to customize the kernel configuration and have to compile and build our own Linux kernel. This is typically a common task for a desktop Linux system, but can be pretty ugly and cumbersome if you have to build the kernel for an Embedded Device. When we look back to all the other NVIDIA Jetson boards, like the TK1, TX1 and TX2, this requires a second Linux machine, running Ubuntu 14.04 or 16.04 on an Intel CPU. Then setting up a complete build system for cross-compiling and all these stuff. Honestly, this is a well-known approach for an Embedded Developer, but the good thing now for the Jetson Nano DevKit this is not required any more. Here the good news: you can customize and build your own Linux kernel directly on the Jetson Nano DevKit! You only need an internet connection and some time to perform all steps on your own. BTW, and this is another