When I get my board I’m surely going to build my own kernel. If people want, I can try to provide a ready built kernel + modules with a lot of “typical” features enabled.
Somebody commented in another thread that the kernel version is 3.10.24-g6eb5d7e. That would mean git commit 6eb5d7e but I didn’t find that commit from anywhere.
It seems that the kernel source package provided in the release page matches the branch l4t/l4t-r19.2 in nv-tegra.nvidia Code Review - linux-3.10.git/summary
Could somebody with a board check if /proc/config.gz matches the config in nv-tegra.nvidia Code Review - linux-3.10.git/blob - arch/arm/configs/tegra12_defconfig ?
Nevertheless I assume that kernel matches the one in the board and the config can be taken from /proc/config.gz so it should be trivial to rebuild it.
I’ve built quite a lot of kernels (mostly x86, OMAP and Tegra3) in the past and I would guess that enabling drivers should work without problems. Changing power management etc. options can lead to issues as they tend to be quite tuned for the particular hardware.
It’s often easy to compile features as built-in to the kernel if you know you’ll be using them always anyway. But e.g. wifi drivers often need a firmware so it might be easier to build them as modules so that the driver can load the firmware from the already mounted rootfs.
Usually I don’t use initrd images as they could be tricky to create and since I’m building the kernel for some particular device, I can build in the features I know will be needed for booting and mounting the rootfs (e.g. EXT4 and crypto drivers in case of crypted rootfs).
Compiling the kernel
NOTE: I haven’t tested these instructions, so they may contain typos or errors.
Download the sources to the device. Using git is always a good way to track your changes but it takes a lot of extra space. Alternative is to download the source from the release page.
Extract the sources, if needed, and change to the top directory of the kernel source tree.
# Copy the current config
zcat /proc/config.gz > .config
# Make sure the config is ok (this shouldn't ask questions, if the kernel versions match)
make oldconfig
# Optionally modify the options.
# I recommend changing the kernel version so that you can easily jump between the versions. Add e.g. "-mykernel1" to General Setup -> Local version.
make menuconfig
# Compile the kernel and the kernel modules
make zImage modules -j4
# Install the modules
sudo make modules_install
Use the flash.sh script to flash the new kernel. I don’t know the exact command though, I’ll update the post when I do. I also wonder if the kernel could be flashed directly from the Linux…