How do I install ubuntu-frame in Jetson Nano

Hi Everyone,

I have been trying to install ubuntu-frame in Jetson nano and it keeps showing the below error, how do I resolve this?

$ sudo snap install ubuntu-frame
error: cannot perform the following tasks:
- Mount snap "ubuntu-frame" (3901) (systemctl command [start snap-ubuntu\x2dframe-3901.mount] failed with exit status 1: Job for snap-ubuntu\x2dframe-3901.mount failed.
See "systemctl status "snap-ubuntu\\x2dframe-3901.mount"" and "journalctl -xe" for details.

systemctl status:

$ systemctl status snap-ubuntu\\x2dframe-3901.mount
● snap-ubuntu\x2dframe-3901.mount
   Loaded: not-found (Reason: No such file or directory)
   Active: failed (Result: exit-code) since Mon 2022-09-19 17:24:10 IST; 3min 50s ago

Sep 19 17:24:10 ubuntu systemd[1]: Mounting Mount unit for ubuntu-frame, revision 3901...
Sep 19 17:24:10 ubuntu mount[8586]: mount: /snap/ubuntu-frame/3901: wrong fs type, bad option, bad superblock on
Sep 19 17:24:10 ubuntu systemd[1]: snap-ubuntu\x2dframe-3901.mount: Mount process exited, code=exited status=32
Sep 19 17:24:10 ubuntu systemd[1]: snap-ubuntu\x2dframe-3901.mount: Failed with result 'exit-code'.
Sep 19 17:24:10 ubuntu systemd[1]: Failed to mount Mount unit for ubuntu-frame, revision 3901.
lines 1-9/9 (END)

Thank you.

Hi,
We don’t have experience of using ubuntu-frame. Not sure what the package is used for. Would need other users to check and share suggestion.

Hi @DaneLLL,

Answer for your question Ubuntu-frame is used to display any app it is highly used in IoT applications for controlling any application which are designed by themselves.

To give more clarity it is like a display used in car dashboard.

Please look at Ubuntu-frame if you need more information on this.

Thank you

I see from that doc that it uses Wayland, and is actually a replacement to an X server (this does not run in an X environment, it is a standalone server from the description). I have no experience with this, and don’t see it visible under β€œapt search”, but perhaps part of the reason for the failure is a need to install and configure Wayland (sorry, I can’t help on this, but it seems Wayland is the most basic dependency).

Hi @linuxdev,

Thank you for the the reply.

I thought wayland is preinstalled in ubuntu also, can you please give more details on this? Can wayland be manually installed?

Just letting you know that I have used the same configurations in RPi 3b (Ubuntu server 20.04 LTS) and it worked.

Update: I forgot to mention I think you can’t see it in apt search because it is a part of snap and the command to install is snap install ubuntu-frame.

I see some Wayland content, but there are a lot of Wayland optional packages. For example, to see what is on your Jetson:

# dpkg -l | egrep -i wayland
rc  kwayland-data                              4:5.44.0-0ubuntu1                                all          Qt library wrapper for Wayland libraries - data files
ii  libva-wayland2:arm64                       2.1.0-3                                          arm64        Video Acceleration (VA) API for Linux -- Wayland runtime
ii  libwayland-bin                             1.16.0-1ubuntu1.1~18.04.3                        arm64        wayland compositor infrastructure - binary utilities
ii  libwayland-client0:arm64                   1.16.0-1ubuntu1.1~18.04.3                        arm64        wayland compositor infrastructure - client library
ii  libwayland-cursor0:arm64                   1.16.0-1ubuntu1.1~18.04.3                        arm64        wayland compositor infrastructure - cursor library
ii  libwayland-dev:arm64                       1.16.0-1ubuntu1.1~18.04.3                        arm64        wayland compositor infrastructure - development files
ii  libwayland-egl1:arm64                      1.16.0-1ubuntu1.1~18.04.3                        arm64        wayland compositor infrastructure - EGL library
ii  libwayland-egl1-mesa:arm64                 20.0.8-0ubuntu1~18.04.1                          arm64        transitional dummy package
ii  libwayland-server0:arm64                   1.16.0-1ubuntu1.1~18.04.3                        arm64        wayland compositor infrastructure - server library
ii  nvidia-l4t-wayland                         32.4.4-20201027211332                            arm64        NVIDIA Wayland Package
ii  xwayland                                   2:1.19.6-1ubuntu4.4                              arm64        Xwayland X server

To see what packages are actually available:

# apt search wayland
Sorting... Done
Full Text Search... Done
flameshot/bionic 0.5.1-2 arm64
  Powerful yet simple-to-use screenshot software

freerdp2-wayland/bionic-updates,bionic-security 2.2.0+dfsg1-0ubuntu0.18.04.3 arm64
  RDP client for Windows Terminal Services (wayland client)

gammaray-plugin-waylandinspector/bionic 2.7.0-1ubuntu8 arm64
  Wayland compositor inspector plugin for GammaRay

glmark2-es2-wayland/bionic 2014.03+git20150611.fa71af2d-0ubuntu4 arm64
  OpenGL ES 2.0 Wayland benchmark

glmark2-wayland/bionic 2014.03+git20150611.fa71af2d-0ubuntu4 arm64
  OpenGL 2.0 Wayland benchmark

gnome-session-wayland/bionic-updates 3.28.1-0ubuntu3 all
  GNOME Session Manager - GNOME 3 session (transitional package)

ibus-wayland/bionic-updates,bionic-security 1.5.17-3ubuntu5.3 arm64
  Intelligent Input Bus - Wayland support

kwayland-data/bionic,now 4:5.44.0-0ubuntu1 all [residual-config]
  Qt library wrapper for Wayland libraries - data files

kwayland-dev/bionic 4:5.44.0-0ubuntu1 all
  transitional dummy package

kwayland-integration/bionic 4:5.12.4-0ubuntu1 arm64
  kwayland runtime integration plugins

kwin-wayland/bionic-updates 4:5.12.9.1-0ubuntu0.1 arm64
  KDE window manager, wayland version

kwin-wayland-backend-drm/bionic-updates 4:5.12.9.1-0ubuntu0.1 arm64
  KDE window manager drm plugin

kwin-wayland-backend-fbdev/bionic-updates 4:5.12.9.1-0ubuntu0.1 arm64
  KDE window manager fbdev plugin

kwin-wayland-backend-virtual/bionic-updates 4:5.12.9.1-0ubuntu0.1 arm64
  KDE window manager virtual plugin

kwin-wayland-backend-wayland/bionic-updates 4:5.12.9.1-0ubuntu0.1 arm64
  KDE window manager nested wayland plugin

kwin-wayland-backend-x11/bionic-updates 4:5.12.9.1-0ubuntu0.1 arm64
  KDE window manager x11 plugin

libglfw3-wayland/bionic 3.2.1-1 arm64
  portable library for OpenGL, window and input (wayland libraries)

libkf5wayland-dev/bionic 4:5.44.0-0ubuntu1 arm64
  development files for kwayland

libkf5waylandclient5/bionic 4:5.44.0-0ubuntu1 arm64
  Qt library wrapper for Wayland libraries

libkf5waylandserver5/bionic 4:5.44.0-0ubuntu1 arm64
  Qt library wrapper for Wayland libraries

libqt5waylandclient5/bionic 5.9.5-0ubuntu1 arm64
  QtWayland client library

libqt5waylandclient5-dev/bionic 5.9.5-0ubuntu1 arm64
  QtWayland client development files

libqt5waylandcompositor5/bionic 5.9.5-0ubuntu1 arm64
  QtWayland compositor library

libqt5waylandcompositor5-dev/bionic 5.9.5-0ubuntu1 arm64
  QtWayland compositor development files

libsdl2-2.0-0/bionic-updates,bionic-security,now 2.0.8+dfsg1-1ubuntu1.18.04.4 arm64 [installed,automatic]
  Simple DirectMedia Layer

libuwac0-0/bionic-updates,bionic-security 2.2.0+dfsg1-0ubuntu0.18.04.3 arm64
  Using wayland as a client library

libuwac0-dev/bionic-updates,bionic-security 2.2.0+dfsg1-0ubuntu0.18.04.3 arm64
  Using wayland as a client (development files)

libva-wayland2/bionic,now 2.1.0-3 arm64 [installed,automatic]
  Video Acceleration (VA) API for Linux -- Wayland runtime

libwayland-bin/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 arm64 [upgradable from: 1.16.0-1ubuntu1.1~18.04.3]
  wayland compositor infrastructure - binary utilities

libwayland-client0/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 arm64 [upgradable from: 1.16.0-1ubuntu1.1~18.04.3]
  wayland compositor infrastructure - client library

libwayland-cursor0/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 arm64 [upgradable from: 1.16.0-1ubuntu1.1~18.04.3]
  wayland compositor infrastructure - cursor library

libwayland-dev/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 arm64 [upgradable from: 1.16.0-1ubuntu1.1~18.04.3]
  wayland compositor infrastructure - development files

libwayland-doc/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 all
  wayland compositor infrastructure - documentation files

libwayland-egl-backend-dev/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 arm64
  wayland compositor infrastructure - EGL backend development files

libwayland-egl1/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 arm64 [upgradable from: 1.16.0-1ubuntu1.1~18.04.3]
  wayland compositor infrastructure - EGL library

libwayland-egl1-mesa/bionic-updates,now 20.0.8-0ubuntu1~18.04.1 arm64 [installed,automatic]
  transitional dummy package

libwayland-server0/bionic-updates,bionic-security 1.16.0-1ubuntu1.1~18.04.4 arm64 [upgradable from: 1.16.0-1ubuntu1.1~18.04.3]
  wayland compositor infrastructure - server library

libweston-3-0/bionic 3.0.0-1 arm64
  reference implementation of a wayland compositor (shared libs)

libweston-3-dev/bionic 3.0.0-1 arm64
  reference implementation of a wayland compositor (shared libs)

libxkbcommon-dev/bionic-updates,now 0.8.2-1~ubuntu18.04.1 arm64 [installed,automatic]
  library interface to the XKB compiler - development files

libxkbcommon-doc/bionic-updates 0.8.2-1~ubuntu18.04.1 all
  library interface to the XKB compiler - documentation

libxkbcommon0/bionic-updates,now 0.8.2-1~ubuntu18.04.1 arm64 [installed,automatic]
  library interface to the XKB compiler - shared library

mpv/bionic 0.27.2-1ubuntu1 arm64
  video player based on MPlayer/mplayer2

nvidia-l4t-wayland/stable,now 32.4.4-20201027211332 arm64 [installed]
  NVIDIA Wayland Package

plasma-workspace-wayland/bionic-updates 4:5.12.9-0ubuntu0.1 arm64
  Plasma Workspace for KF5 - Wayland integration

qml-module-qtwayland-compositor/bionic 5.9.5-0ubuntu1 arm64
  Qt 5 Wayland Compositor QML module

qtwayland5/bionic 5.9.5-0ubuntu1 arm64
  QtWayland platform plugin

qtwayland5-dev-tools/bionic 5.9.5-0ubuntu1 arm64
  Qt 5 Wayland developer tools

qtwayland5-doc/bionic 5.9.5-0ubuntu1 all
  Qt 5 Wayland Compositor documentation

qtwayland5-doc-html/bionic 5.9.5-0ubuntu1 all
  Qt 5 Wayland Compositor HTML documentation

qtwayland5-examples/bionic 5.9.5-0ubuntu1 arm64
  Qt 5 Wayland examples

terminology/bionic 0.9.1-1 arm64
  Enlightenment efl based terminal emulator

terminology-data/bionic 0.9.1-1 all
  Enlightenment efl based terminal emulator data

wayland-protocols/bionic 1.13-1 all
  wayland compositor protocols

weston/bionic 3.0.0-1 arm64
  reference implementation of a wayland compositor

xmir/bionic-updates,bionic-security 2:1.19.6-1ubuntu4.11 arm64
  Xmir X server

xwayland/bionic-updates,bionic-security 2:1.19.6-1ubuntu4.11 arm64 [upgradable from: 2:1.19.6-1ubuntu4.4]
  Xwayland X server

xwayland-hwe-16.04/bionic 3:14.1 arm64
  Transitional package for xwayland-hwe-16.04

xwayland-hwe-18.04/bionic-updates,bionic-security 2:1.20.8-2ubuntu2.2~18.04.7 arm64
  Xwayland X server

I don’t know for sure if there are missing Wayland dependencies, but this suggests something is missing, and Wayland is the biggest dependency:

error: cannot perform the following tasks:
- Mount snap "ubuntu-frame" (3901) (systemctl command [start snap-ubuntu\x2dframe-3901.mount] failed with exit status 1: Job for snap-ubuntu\x2dframe-3901.mount failed

I also tried to install this (but on an NX):

root@nx:~# snap install ubuntu-frame
2022-09-21T08:17:17-06:00 INFO Waiting for automatic snapd restart...
error: cannot perform the following tasks:
- Mount snap "ubuntu-frame" (3901) (systemctl command [start snap-ubuntu\x2dframe-3901.mount] failed with exit status 1: Job for snap-ubuntu\x2dframe-3901.mount failed.
See "systemctl status "snap-ubuntu\\x2dframe-3901.mount"" and "journalctl -xe" for details.
)
- Mount snap "mesa-core20" (126) (systemctl command [start snap-mesa\x2dcore20-126.mount] failed with exit status 1: Job for snap-mesa\x2dcore20-126.mount failed.
See "systemctl status "snap-mesa\\x2dcore20-126.mount"" and "journalctl -xe" for details.
)

I’ll also note that Jetsons don’t use Mesa for a server (there are some non-server Mesa utilities used), and so this again points to the server (which is Wayland in the docs I saw, but I did not find any specific requirements). In fact, if installing regular packages (not via snap), there are several Mesa packages which are β€œblacklisted” since they would destroy the function of the GUI. Basically this is all conjecture, but if I were in need of ubuntu-frame, then I’d probably start by close examination of prerequisite dependencies.

Hi @linuxdev,

Thank you for input, Since I’m a beginner in Jetson I’m not sure where to start with and there no much information on internet I tried many ways but was unsuccessful. Anyways I will keep trying and let you know if I find something.

Thanks a lot.

Edit: There is a possibility that it might be a bug from Jetson end, because I tried installing ubuntu-frame in my desktop (Ubuntu 18.04 LTS) and it worked perfectly fine.

Hi @linuxdev,

When I was checking kernel logs I found this squashfs error is there any way to solve this or it can be only fixed by Nvidia?

-- Unit snap-mesa\x2dcore20-126.mount has begun starting up.
Sep 26 16:38:19 ubuntu mount[8160]: mount: /snap/mesa-core20/126: wrong fs type, bad option, bad superblock on /dev/loop6, missi
Sep 26 16:38:19 ubuntu kernel: squashfs: SQUASHFS error: Filesystem uses "lzo" compression. This is not supported
Sep 26 16:38:19 ubuntu systemd[1]: snap-mesa\x2dcore20-126.mount: Mount process exited, code=exited status=32
Sep 26 16:38:19 ubuntu systemd[1]: snap-mesa\x2dcore20-126.mount: Failed with result 'exit-code'.
Sep 26 16:38:19 ubuntu systemd[1]: Failed to mount Mount unit for mesa-core20, revision 126.
-- Subject: Unit snap-mesa\x2dcore20-126.mount has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Unit snap-mesa\x2dcore20-126.mount has failed.
--
-- The result is RESULT.

That is one you can work with. Squashfs is a filesystem type (something one would format a partition with, and sometimes used temporarily by some apps in RAM that looks like a partition). The error itself says you need to add a driver for squashfs.

When the system boots it starts with the β€œkernel” (for trivia, the kernel is process ID 0). This is what has drivers. Once the kernel is started, regular user space is started (the program running all user interaction is process ID 1, named β€œinit”, or one of its children). Your program is asking the kernel for a feature which is optional and not loaded, so you merely need to add that feature.

Kernel features are most easily added by a kernel module. Features can be integrated directly into the kernel, but this requires more work and risk than does adding a module. A module can simply be copied to the right location. Documentation tends to refer to flashing, but you won’t need to do this if you just add a module.

What release are you using? See β€œhead -n 1 /etc/nv_tegra_release”. This is the L4T release (Linux 4 Tegra is just Ubuntu plus NVIDIA drivers), then find the documentation here:
https://developer.nvidia.com/linux-tegra

The official documentation is there, but keep in mind you won’t need to flash to install the module. Also, this assumes cross compile from a Linux host PC, and not native compile from the Jetson. Do you have a Linux host PC you can build the module from?

The gist of what goes on is that you download the kernel source. You then configure it to match the running system. If you run the command β€œuname -r”, then the output of this is part of the configuration. Write down what you see from the Jetson’s β€œuname -r”. The suffix is most likely β€œ-tegra”, while the prefix is the kernel version. Modules are searched for at:
/lib/modules/$(uname -r)/kernel

If you have the same config, such as from make target β€œtegra_defconfig” (which is just the default config), then the original kernel (β€œ/boot/Image”) can remain the same, and all of the current modules can stay as is. You’ll just need to copy a kernel module file into the correct location. Then sqaushfs will be available.

Can you use the official documents from the L4T release URL specific to what you now have to cross compile from a host PC?

Hey @linuxdev,

Thank you so much for your reply.

Yes, I do have a PC with me which I was using to flash jetpack to nano, to be honest I’m very confused rn xD, will try and let you know.

outputs:
head -n 1 /etc/nv_tegra_release : R32 (release), REVISION: 7.2, GCID: 30192233, BOARD: t210ref, EABI: aarch64, DATE: Wed Apr 20 21:34:48 UTC 2022

uname -r: 4.9.253-tegra

Hey @linuxdev
`/squashfs$ ls

block.c decompressor_multi_percpu.c file_direct.c lz4_wrapper.c page_actor.h super.c xz_wrapper.c
cache.c decompressor_single.c fragment.c lzo_wrapper.c squashfs_fs.h symlink.c zlib_wrapper.c
decompressor.c dir.c id.c Makefile squashfs_fs_i.h xattr.c
decompressor.h export.c inode.c namei.c squashfs_fs_sb.h xattr.h
decompressor_multi.c file.c Kconfig page_actor.c squashfs.h xattr_id.c`

As you can see squashfs is available in kernel i downloaded from nvidia website with lzo compression file then what is the issue here? why is lzo compression not available?

For reference, you are using the most recent release for the Nano, R32.7.2. The URL for this release is:
https://developer.nvidia.com/embedded/linux-tegra-r3272

The source code does not build and install everything. If it did, then your PC would have all drivers for all mainframes, all drivers for filesystems not used, all drivers for all 100 Gbit/s ethernet (used in backbones and maybe costing millions of dollars), all options for debugging (greatly slowing down the system, and some incompatible), so on. The source is used for building new kernels, but it must have a configuration specified first to determine what it builds. Those files are just part of a list of things that could be built, e.g., a list of everything in the store, and not necessarily what everyone has on their shopping list.

During a kernel build one first clears any old configuration, followed by setting a base configuration. On a Jetson this would be the make target β€œtegra_defconfig”, or else it could be a copy of the configuration from a running Jetson. This creates a β€œ.config” file containing what configuration the built kernel will contain, along with modules (modules are part of the kernel, but they load at run time and are not part of the main kernel Image file). If nothing is configured, then nothing is built. Squashfs is optional and can be specified as integrated into the main kernel Image file (we won’t do that here), or else as a separate module file (which is what you are interested in). Each configured item has a β€œCONFIG_something” entry, or multiple entries. The software using this is called β€œKconfig”.

Incidentally, since your β€œuname -r” is β€œ4.9.253-tegra”, it implies that the kernel source is version 4.9.253, and that one of the config items was:
CONFIG_LOCALVERSION="-tegra"

This implies that the kernel Image looks for its modules at:
/lib/modules/4.9.253-tegra/kernel
(a subdirectory somewhere under that)

The instructions for kernel compile are given in the official documents of the particular L4T release. Those instructions are for β€œcross compile”, meaning compile for the Jetson’s arm64 architecture via use of a PC architecture. The official documents use flash to install a new kernel, but you won’t need this. I suggest you compile via those instructions to create the kernel Image, but don’t install that; this is merely to test that the configuration was correct. Then you build the modules (after having updated the config for squashfs), and all you need to do is copy a single file, squashfs.ko, to the right location under β€œ/lib/modules/$(uname -r)/kernel`”.

If you read those docs you will find a step about using β€œmake” to build target β€œtegra_defconfig”. You will also set β€œCONFIG_LOCALVERSION” to β€œ-tegra”. After that you can use one of the editors (such as make target β€œmenuconfig” or target β€œnconfig”) to enable squashfs. You’d find the option, and then toggle it on as a module via the β€œm” key (β€œy” integrates, β€œm” makes it a module, and β€œn” turns off the feature).

The fact that you are starting with the same CONFIG_LOCALVERSION and base configuration is why you can build just a single feature and not everything. Just ask questions if you get to a step you are not sure of.

1 Like

Hi @linuxdev,

Well I do have a lot of questions to ask but I will start with few basic questions.

  1. I tried to build kernel and I’m following this guide, am I going in the right direction here?

  2. While building kernel in found squashfs with contents mentioned in previous reply and from what i understood from your reply I should all those files in squashfs directory correct? Also what should I copy there, this or this?

  3. I may sound dumb here but never found squashfs.ko anywhere if I find i just need to download it and copy it directly the location give of my jetson board, correct?

I have not used that guide before. I’d suggest looking at your L4T version (β€œhead -n 1 /etc/nv_tegra_release”), and then examining the kernel customization docs in the official documentation at:
https://developer.nvidia.com/linux-tegra

Do not use the install steps of the official software, you simply need a file copy of the squashfs module once it is built (provided your starting kernel is a configuration match and CONFIG_LOCALVERSION is part of that match, followed by adding squashfs as a module).

I do see the URL you pointed at uses a VM. This is ok for cross compile, but the official docs simplify cross compile. I did not read that whole URL, but it seems it is just explaining some details the official docs might not elaborate on.

The kernel source, if downloaded from the NVIDIA URL for this L4T release (URL given above to find your L4T content), already has all of those files. Having the files is not the issue. Using those files is the issue. This is what configuration does. One can compile the kernel source with different options, and the two kernels would be completely incompatible and different. You might say that various options on the kernel source provides thousands of different kernels with much in common, and it isn’t just one kernel. You are reusing existing modules, and thus you need a kernel that starts as a match to the default running kernel; only then you extend the features by adding the squashfs module via the make target of β€œmenuconfig” or β€œnconfig” (both do the same thing, documents mention menuconfig, and I recommend nconfig due to a symbol search ability I really like…otherwise the two look and behave identically). When you download the kernel source from the above URL you get all of those files; when you configure you use the correct ones and ignore the others.

squashfs is the name of the module. The β€œ.ko” suffix is just the naming of suffix a kernel module has for a file name. Once the source code β€œ.c” files and header β€œ.h” files combine and compile, they produce the β€œ.ko” file. You have to go through a long process of compiling the kernel modules (preceded by configuring) before the β€œ.ko” files exist. The documentation on kernel customization is how you do this; build the kernel and then build the modules, but don’t install except via file copy. Kernel build is technically not required, and only module build is required, but kernel build success/failure is a bit of an acid test as to whether it is configured correctly (I always build the kernel Image once even if I only use the modules). Also, building the kernel Image propagates configuration, although the β€œmodules_prepare” step could do this too.

For cross compile you copy that kernel content to the host PC. Configure, and cross compile. Then you copy only the squashfs β€œ.ko” file to the right place on the Jetson. You could compile β€œnatively” on the Jetson, but you’d need to add external disk space to have room to do this, and instructions would change. If you are interested in native build just say so, there are instructions elsewhere for that (which is actually simpler if you have the disk space, but the Nano will be slower than the PC).

1 Like

Hello,

May I know what you meant by clear old configuration because I’m confused with this statement

Also, I prefer doing the kernel in a Host PC since I’m not having SD card slot soldered on it and I don’t a good USB flash drive either.

Keep in mind that what follows is true for both cross compile and native compile. Whatever you do from the host PC though (cross compile) requires extra steps for use of cross tools. Only in cross compile would you first β€œexport ARCH=arm64” (or add in the build commands β€œARCH=arm64”, the two are equivalent). Similarly, only in cross compile would you use β€œexport CROSS_COMPILE=/some/where/bin/aarch64-linux-gnu-”. Those steps would be in addition to what follows when you cross compile. In native compile references to β€œuname -r” refer to what the Jetson would respond with in that command, while in cross compile one could not use the host PC’s β€œuname -r”.

If you have just downloaded or unpacked the kernel source, then there is no need to clear any old content. However, one probably wants to reuse the kernel source and build it with different purposes over time (this assumes not just a single case of installation, e.g., developers working on kernels over time). You have the following content to be considered:

  • Uncompiled pure kernel source.
  • Configurations created by the developer.
  • Intermediate object file output only used when creating some final file.
  • Actual content which could be installed.
  • Not exactly the above, but similar:
    • Firmware, non-device tree.
    • Firmware, device tree.

If you configured once, and then built from new source code with only that configuration, then there is not an issue. If things did build, then although not a guarantee, probably you also did not need to clean up or clear old source.

This applies to other kinds of build, but mainly this is in regards to building with the Kconfig dependency system (which is how the kernel is configured for what it intends to build and in what order). Most of what follows likely needs to be performed with the β€œO=/some/where” if this was previously used (and this should be used). However, I am not listing β€œO=/some/where”, but unless stated, you probably need to use that with each command that follows.

Using β€œmake mrproper”, without β€œO=/some/where”, works to clean up the original source code. This means 100% of any intermediate object files, firmware, device tree, configuration modification, so on, is gone. The source code is now pristine and untouched. This is a proper starting point before configuring. With the β€œO=/some/where” this applies the the location of β€œ/some/where”. Keep in mind that if the original source tree (I’ll call β€œ$TOP”) is modified or configured in any way, that this will interfere with what goes on at β€œ/some/where”. If in doubt, then start with this.

The target β€œmake clean” is similar to β€œmake mrproper”. However, this leaves configuration in place. It does remove any intermediate object files, firmware, or device tree which has been created. β€œclean” removes generated content (but not configuration content). If you run this, then you don’t need to reconfigure to build, e.g., if you already ran β€œmake tegra_defconfig”, then this will leave β€œtegra_defconfig” in place; if you then ran β€œmake modules_prepare” (not everyone runs this, especially if you build the Image itself, which does this as a side effect), then this should still be in place. An example of when to use this is that you’ve configured, built, installed, and tested, but decide you need to make a change to a line in source code. To rebuild using the modified source code you would first clean, and then build again.

A good rule of thumb is to always install the source code itself to some location which is read-only except for user root. This is the β€œ$TOP”. For example, you might install source code to β€œ/usr/src/sources/kernel/kernel-4.9”, and make sure anyone can read this, but nobody other than root can write to it. Then, as root (using sudo), from β€œ$TOP”, run command β€œsudo make mrproper”. From now on, so long as you don’t compile using sudo, this is guaranteed quality source code (not modified by some accidental or forgotten step). Before any build you could β€œexport TOP=/usr/src/sources/kernel/kernel-4.9” for this example, but use a separate location with β€œO=/some/where”.

You would want to have a temporary location for intermediate output, plus configuration. An example is in your home directory you could create β€œ~/intermediate” (just an example name). This would mean all commands would use β€œO=~/intermediate”. If you had configuration questions and don’t trust the configuration, or just wanted to start over, then you could recursively β€œrm -Rf ~/intermediate” (be very careful about using recursive delete), then recreate it with β€œmkdir ~/intermediate”. The use of β€œmake O=~/intermediate clean” would do the same thing as β€œmake clean”, except the action would be limited to β€œ~/intermediate”, and configuration would be left alone there; the use of β€œmake O=~/intermediate mrproper” would be the same as β€œmake mrproper”, but it would be limited to the location β€œ~/intermediate” (configuration would be removed there). Just make sure all of this is as a regular user and not with sudo.

One target propagates configuration: β€œmodules_prepare”. Not needed if you make target β€œImage”, but if you have configured and then go to build modules, consider this step mandatory. Target β€œmrproper” would remove anything done by β€œmodules_prepare”, while β€œclean” would not. Be sure to use β€œO=/some/where” if the intermediate output location is what you want to use β€œmodules_prepare” with.

There are build targets which place results somewhere convenient. One outputs modules to a tree which mirrors where it would go in the running system with this option: β€œINSTALL_MOD_PATH=/some/location” in combination with target β€œmodules_install”. An example is to create empty location β€œ~/modules”, and then build:

# Where to start:
cd $TOP
# Configure to ~/intermediate
make O=~/intermediate tegra_defconfig
# Make sure you've set CONFIG_LOCALVERSION; there is more than one way to do
# this.

# Pretend we are only building modules:
make O=~/intermediate modules_prepare
# Build modules, use 8 CPU cores:
make O=~/intermediate -j 8 modules
# Copy only the modules to a clean tree:
make O=~/intermediate INSTALL_MOD_PATH=~/modules modules_install
# Similar for device tree, though this won't be done very often:
mkdir ~/firmware
make O=~/intermediate dtbs
make O=~/intermediate INSTALL_FW_PATH=~/firmware

You might find it interesting to explore the example β€œ~/modules” and β€œ~/firmware” to see what is there. I like the command β€œtree” (or β€œtree -d” to limit to directories) to view such things (you probably would need β€œsudo apt-get install tree”).

1 Like

Hi @linuxdev am I going in the right direction here? Also, sorry for the trouble i’m not sure where else to ask, Thanks



You’re in the right place to ask questions. :)

I did not check specific features. However, if you ran the make target of β€œtegra_defconfig” prior to starting that editor, then you are on track. If you have made sure CONFIG_LOCALVERSION is β€œ-tegra”, then this too is correct (you could symbol search, the F8 key, for β€œlocalversion” since it is case insensitive). Then search for β€œsquash” and see if one shows up for filesystem. When you go there, does it respond and enable via the β€œm” key (making it a module)? If so, then you are ready to propagate the config.

To propagate the config I recommend just building target Image once as an acid test. Alternatively, you could use target β€œmodules_depend”, and then build modules while skipping Image (which saves time, but unless Image can build, the module won’t be valid…thus I suggest one test which takes time).

I can’t read the screenshots very well (at the moment I am using a tiny laptop with a 10" screen). When configuring the β€œm” key selects module format if possible, while the β€œy” key (and maybe space bar?) selects an integrated feature. Should the result show β€œ*”, then this means you are building the entire kernel and not an Image. You’d end up installing both kernel and all modules, which is a lot of work that must be done right. If you use the β€œm” key to select a module format, then this is correct and the minimum work.

Not all features are allowed as a module, and in a few cases, some features cannot be integrated. If the option being toggled shows with β€œm”, then you have an easy job head. If only β€œy” works, then much more detail is needed to make this work correctly. I do see a β€œ*”, which is probably the β€œhard way” of doing this. Can you instead select β€œm”? If so, then do that and save configuration, and you are ready to build (either test with make target Image or propagate config and go to building modules without Image by first modules_depend).

1 Like

Hi @linuxdev,

I did everything as per the documentation and your suggestions but squashfs.ko file was not created anywhere in the module

$ tree
.
└── 4.9.253-tegra
    β”œβ”€β”€ build -> /home/factana/t4l-kernel/build
    β”œβ”€β”€ kernel
    β”‚   β”œβ”€β”€ crypto
    β”‚   β”‚   β”œβ”€β”€ authencesn.ko
    β”‚   β”‚   β”œβ”€β”€ authenc.ko
    β”‚   β”‚   β”œβ”€β”€ deflate.ko
    β”‚   β”‚   β”œβ”€β”€ des_generic.ko
    β”‚   β”‚   β”œβ”€β”€ md4.ko
    β”‚   β”‚   β”œβ”€β”€ md5.ko
    β”‚   β”‚   β”œβ”€β”€ michael_mic.ko
    β”‚   β”‚   β”œβ”€β”€ tcrypt.ko
    β”‚   β”‚   └── xor.ko
    β”‚   β”œβ”€β”€ drivers
    β”‚   β”‚   β”œβ”€β”€ bcma
    β”‚   β”‚   β”‚   └── bcma.ko
    β”‚   β”‚   β”œβ”€β”€ block
    β”‚   β”‚   β”‚   β”œβ”€β”€ nbd.ko
    β”‚   β”‚   β”‚   └── zram
    β”‚   β”‚   β”‚       └── zram.ko
    β”‚   β”‚   β”œβ”€β”€ bluetooth
    β”‚   β”‚   β”‚   β”œβ”€β”€ ath3k.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ bcm203x.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ bfusb.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ bpa10x.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ btbcm.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ btintel.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ btmrvl.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ btmrvl_sdio.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ btqca.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ btrtl.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ btusb.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hci_uart.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hci_vhci.ko
    β”‚   β”‚   β”‚   └── realtek
    β”‚   β”‚   β”‚       └── rtk_btusb.ko
    β”‚   β”‚   β”œβ”€β”€ char
    β”‚   β”‚   β”‚   └── hw_random
    β”‚   β”‚   β”‚       β”œβ”€β”€ cavium-rng.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ cavium-rng-vf.ko
    β”‚   β”‚   β”‚       └── rng-core.ko
    β”‚   β”‚   β”œβ”€β”€ gpu
    β”‚   β”‚   β”‚   β”œβ”€β”€ drm
    β”‚   β”‚   β”‚   β”‚   └── tegra_udrm
    β”‚   β”‚   β”‚   β”‚       └── tegra-udrm.ko
    β”‚   β”‚   β”‚   └── nvgpu
    β”‚   β”‚   β”‚       └── nvgpu.ko
    β”‚   β”‚   β”œβ”€β”€ hid
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-alps.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-appleir.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-aureal.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-belkin.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-betopff.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-cherry.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-chicony.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-cmedia.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-corsair.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-cp2112.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-cypress.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-elo.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-ezkey.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-gembird.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-gfrm.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-gt683r.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-icade.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-jarvis-remote.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-kensington.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-led.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-lenovo.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-logitech-dj.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-logitech-hidpp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-logitech.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-microsoft.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-monterey.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-penmount.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-plantronics.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-raven.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-rmi.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-sensor-custom.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-sensor-hub.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hid-steelseries.ko
    β”‚   β”‚   β”‚   └── hid-xinmo.ko
    β”‚   β”‚   β”œβ”€β”€ i2c
    β”‚   β”‚   β”‚   β”œβ”€β”€ algos
    β”‚   β”‚   β”‚   β”‚   └── i2c-algo-pca.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ busses
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-ali1535.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-ali1563.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-ali15x3.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-amd756.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-amd8111.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-cadence.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-cbus-gpio.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-designware-core.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-designware-pci.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-designware-platform.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-diolan-u2c.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-emev2.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-gpio.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-i801.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-isch.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-nforce2.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-nomadik.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-ocores.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-pca-platform.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-piix4.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-rk3x.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-simtec.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-sis630.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-tegra194-slave.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-tegra-slave.ko
    β”‚   β”‚   β”‚   β”‚   └── i2c-viapro.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-slave-eeprom.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ i2c-smbus.ko
    β”‚   β”‚   β”‚   └── i2c-stub.ko
    β”‚   β”‚   β”œβ”€β”€ iio
    β”‚   β”‚   β”‚   β”œβ”€β”€ accel
    β”‚   β”‚   β”‚   β”‚   └── hid-sensor-accel-3d.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ common
    β”‚   β”‚   β”‚   β”‚   └── hid-sensors
    β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ hid-sensor-iio-common.ko
    β”‚   β”‚   β”‚   β”‚       └── hid-sensor-trigger.ko
    β”‚   β”‚   β”‚   └── gyro
    β”‚   β”‚   β”‚       └── hid-sensor-gyro-3d.ko
    β”‚   β”‚   β”œβ”€β”€ infiniband
    β”‚   β”‚   β”‚   β”œβ”€β”€ core
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ib_cm.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ib_core.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ib_umad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ib_uverbs.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ iw_cm.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rdma_cm.ko
    β”‚   β”‚   β”‚   β”‚   └── rdma_ucm.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ hw
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mlx4
    β”‚   β”‚   β”‚   β”‚   β”‚   └── mlx4_ib.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mlx5
    β”‚   β”‚   β”‚   β”‚   β”‚   └── mlx5_ib.ko
    β”‚   β”‚   β”‚   β”‚   └── mthca
    β”‚   β”‚   β”‚   β”‚       └── ib_mthca.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ sw
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rdmavt
    β”‚   β”‚   β”‚   β”‚   β”‚   └── rdmavt.ko
    β”‚   β”‚   β”‚   β”‚   └── rxe
    β”‚   β”‚   β”‚   β”‚       └── rdma_rxe.ko
    β”‚   β”‚   β”‚   └── ulp
    β”‚   β”‚   β”‚       β”œβ”€β”€ ipoib
    β”‚   β”‚   β”‚       β”‚   └── ib_ipoib.ko
    β”‚   β”‚   β”‚       └── srp
    β”‚   β”‚   β”‚           └── ib_srp.ko
    β”‚   β”‚   β”œβ”€β”€ input
    β”‚   β”‚   β”‚   β”œβ”€β”€ input-polldev.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ keyboard
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ adp5588-keys.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ adp5589-keys.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ atkbd.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bcm-keypad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cap11xx.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gpio_keys_polled.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ lkkbd.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ lm8323.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ lm8333.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ matrix_keypad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ max7359_keypad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mcs_touchkey.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mpr121_touchkey.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ newtonkbd.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ omap4-keypad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ opencores-kbd.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qt1070.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qt2160.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ samsung-keypad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ stowaway.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ tca6416-keypad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ tca8418_keypad.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ tegra-kbc.ko
    β”‚   β”‚   β”‚   β”‚   └── xtkbd.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ matrix-keymap.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ mouse
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ appletouch.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bcm5974.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cyapatp.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gpio_mouse.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ sermouse.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ synaptics_i2c.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ synaptics_usb.ko
    β”‚   β”‚   β”‚   β”‚   └── vsxxxaa.ko
    β”‚   β”‚   β”‚   └── serio
    β”‚   β”‚   β”‚       └── libps2.ko
    β”‚   β”‚   β”œβ”€β”€ leds
    β”‚   β”‚   β”‚   └── leds-bd2802.ko
    β”‚   β”‚   β”œβ”€β”€ media
    β”‚   β”‚   β”‚   β”œβ”€β”€ common
    β”‚   β”‚   β”‚   β”‚   └── v4l2-tpg
    β”‚   β”‚   β”‚   β”‚       └── v4l2-tpg.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ i2c
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ imx185.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ imx185_v1.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ imx274.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ov5693.ko
    β”‚   β”‚   β”‚   β”‚   └── tc358840.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ platform
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ tegra
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ camera
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── tests
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       └── sensor_kernel_tests.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── tpg
    β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ nvhost-vi-tpg.ko
    β”‚   β”‚   β”‚   β”‚   β”‚       └── nvhost-vi-tpg-t19x.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ tegra-vivid
    β”‚   β”‚   β”‚   β”‚   β”‚   └── tegra-vivid.ko
    β”‚   β”‚   β”‚   β”‚   └── vivid
    β”‚   β”‚   β”‚   β”‚       └── vivid.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ usb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cpia2
    β”‚   β”‚   β”‚   β”‚   β”‚   └── cpia2.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gl860
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── gspca_gl860.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_benq.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_conex.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_cpia1.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_dtcs033.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_etoms.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_finepix.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_jeilinj.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_jl2005bcd.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_kinect.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_konica.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_main.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_mars.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_mr97310a.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_nw80x.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_ov519.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_ov534_9.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_ov534.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_pac207.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_pac7302.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_pac7311.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_se401.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sn9c2028.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sn9c20x.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sonixb.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sonixj.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_spca1528.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_spca500.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_spca501.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_spca505.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_spca506.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_spca508.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_spca561.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sq905c.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sq905.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sq930x.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_stk014.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_stk1135.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_stv0680.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_sunplus.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_t613.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_topro.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_touptek.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_tv8532.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_vc032x.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_vicam.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_xirlink_cit.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gspca_zc3xx.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ m5602
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── gspca_m5602.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── stv06xx
    β”‚   β”‚   β”‚   β”‚   β”‚       └── gspca_stv06xx.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ pwc
    β”‚   β”‚   β”‚   β”‚   β”‚   └── pwc.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ s2255
    β”‚   β”‚   β”‚   β”‚   β”‚   └── s2255drv.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ stkwebcam
    β”‚   β”‚   β”‚   β”‚   β”‚   └── stkwebcam.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ usbtv
    β”‚   β”‚   β”‚   β”‚   β”‚   └── usbtv.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ uvc
    β”‚   β”‚   β”‚   β”‚   β”‚   └── uvcvideo.ko
    β”‚   β”‚   β”‚   β”‚   └── zr364xx
    β”‚   β”‚   β”‚   β”‚       └── zr364xx.ko
    β”‚   β”‚   β”‚   └── v4l2-core
    β”‚   β”‚   β”‚       β”œβ”€β”€ videobuf-core.ko
    β”‚   β”‚   β”‚       └── videobuf-vmalloc.ko
    β”‚   β”‚   β”œβ”€β”€ mfd
    β”‚   β”‚   β”‚   └── lpc_sch.ko
    β”‚   β”‚   β”œβ”€β”€ misc
    β”‚   β”‚   β”‚   β”œβ”€β”€ bluedroid_pm.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ cb710
    β”‚   β”‚   β”‚   β”‚   └── cb710.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ eeprom
    β”‚   β”‚   β”‚   β”‚   └── eeprom_93cx6.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ mods
    β”‚   β”‚   β”‚   β”‚   └── mods.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ tifm_7xx1.ko
    β”‚   β”‚   β”‚   └── tifm_core.ko
    β”‚   β”‚   β”œβ”€β”€ mmc
    β”‚   β”‚   β”‚   └── host
    β”‚   β”‚   β”‚       β”œβ”€β”€ cb710-mmc.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ mmc_spi.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ mtk-sd.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ of_mmc_spi.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ tifm_sd.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ toshsd.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ usdhi6rol0.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ushc.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ via-sdmmc.ko
    β”‚   β”‚   β”‚       └── vub300.ko
    β”‚   β”‚   β”œβ”€β”€ mtd
    β”‚   β”‚   β”‚   └── ubi
    β”‚   β”‚   β”‚       └── ubi.ko
    β”‚   β”‚   β”œβ”€β”€ net
    β”‚   β”‚   β”‚   β”œβ”€β”€ can
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ can-dev.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cc770
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cc770_isa.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cc770.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── cc770_platform.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ c_can
    β”‚   β”‚   β”‚   β”‚   β”‚   └── c_can.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ m_can
    β”‚   β”‚   β”‚   β”‚   β”‚   └── m_can.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mttcan
    β”‚   β”‚   β”‚   β”‚   β”‚   └── native
    β”‚   β”‚   β”‚   β”‚   β”‚       └── mttcan.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ sja1000
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ems_pci.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ kvaser_pci.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ plx_pci.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ sja1000_isa.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ sja1000.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── sja1000_platform.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ slcan.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ softing
    β”‚   β”‚   β”‚   β”‚   β”‚   └── softing.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ spi
    β”‚   β”‚   β”‚   β”‚   β”‚   └── mcp251x.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ usb
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ems_usb.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ esd_usb2.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gs_usb.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ kvaser_usb.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ peak_usb
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── peak_usb.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── usb_8dev.ko
    β”‚   β”‚   β”‚   β”‚   └── vcan.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ ethernet
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ 3com
    β”‚   β”‚   β”‚   β”‚   β”‚   └── typhoon.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ 8390
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ 8390.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── ne2k-pci.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ agere
    β”‚   β”‚   β”‚   β”‚   β”‚   └── et131x.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ alteon
    β”‚   β”‚   β”‚   β”‚   β”‚   └── acenic.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ altera
    β”‚   β”‚   β”‚   β”‚   β”‚   └── altera_tse.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ aquantia
    β”‚   β”‚   β”‚   β”‚   β”‚   └── atlantic
    β”‚   β”‚   β”‚   β”‚   β”‚       └── atlantic.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ atheros
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ alx
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── alx.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ atl1c
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── atl1c.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ atl1e
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── atl1e.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── atlx
    β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ atl1.ko
    β”‚   β”‚   β”‚   β”‚   β”‚       └── atl2.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ broadcom
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ b44.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bnx2.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bnx2x
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── bnx2x.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ bnxt
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── bnxt_en.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── cnic.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ brocade
    β”‚   β”‚   β”‚   β”‚   β”‚   └── bna
    β”‚   β”‚   β”‚   β”‚   β”‚       └── bna.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cavium
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ liquidio
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── liquidio.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── thunder
    β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ nicpf.ko
    β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ nicvf.ko
    β”‚   β”‚   β”‚   β”‚   β”‚       β”œβ”€β”€ thunder_bgx.ko
    β”‚   β”‚   β”‚   β”‚   β”‚       └── thunder_xcv.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ chelsio
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cxgb
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── cxgb.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cxgb3
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── cxgb3.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cxgb4
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── cxgb4.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── cxgb4vf
    β”‚   β”‚   β”‚   β”‚   β”‚       └── cxgb4vf.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cisco
    β”‚   β”‚   β”‚   β”‚   β”‚   └── enic
    β”‚   β”‚   β”‚   β”‚   β”‚       └── enic.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ dlink
    β”‚   β”‚   β”‚   β”‚   β”‚   └── dl2k.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ emulex
    β”‚   β”‚   β”‚   β”‚   β”‚   └── benet
    β”‚   β”‚   β”‚   β”‚   β”‚       └── be2net.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ hp
    β”‚   β”‚   β”‚   β”‚   β”‚   └── hp100.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ intel
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ e1000
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── e1000.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ e100.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ fm10k
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── fm10k.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i40e
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── i40e.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ i40evf
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── i40evf.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ixgb
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── ixgb.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── ixgbevf
    β”‚   β”‚   β”‚   β”‚   β”‚       └── ixgbevf.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ jme.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ marvell
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ skge.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── sky2.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mellanox
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mlx4
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── mlx4_core.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mlx5
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── core
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚       └── mlx5_core.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── mlxsw
    β”‚   β”‚   β”‚   β”‚   β”‚       └── mlxsw_pci.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ natsemi
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ natsemi.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── ns83820.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ neterion
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ s2io.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── vxge
    β”‚   β”‚   β”‚   β”‚   β”‚       └── vxge.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ netronome
    β”‚   β”‚   β”‚   β”‚   β”‚   └── nfp
    β”‚   β”‚   β”‚   β”‚   β”‚       └── nfp_netvf.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ packetengines
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ hamachi.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── yellowfin.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qlogic
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ netxen
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── netxen_nic.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qed
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── qed.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qede
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── qede.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qla3xxx.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qlcnic
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── qlcnic.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── qlge
    β”‚   β”‚   β”‚   β”‚   β”‚       └── qlge.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ qualcomm
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ emac
    β”‚   β”‚   β”‚   β”‚   β”‚   β”‚   └── qcom-emac.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── qcaspi.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ realtek
    β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ 8139cp.ko
    β”‚   β”‚   β”‚   β”‚   β”‚   └── 8139too.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ samsung
    β”‚   β”‚   β”‚   β”‚   β”‚   └── sxgbe
    β”‚   β”‚   β”‚   β”‚   β”‚       └── samsung-sxgbe.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ sfc
    β”‚   β”‚   β”‚   β”‚   β”‚   └── sfc.ko
    β”‚   β”‚   β”‚   β”‚   └── stmicro
    β”‚   β”‚   β”‚   β”‚       └── stmmac
    β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ dwmac-generic.ko
    β”‚   β”‚   β”‚   β”‚           β”œβ”€β”€ stmmac.ko
    β”‚   β”‚   β”‚   β”‚           └── stmmac-platform.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ macvlan.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ macvtap.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ phy
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mdio-cavium.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mdio-thunder.ko
    β”‚   β”‚   β”‚   β”‚   └── microchip.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ usb
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ catc.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cx82310_eth.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ dm9601.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ gl620a.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ kaweth.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ lan78xx.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mcs7830.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ pegasus.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ plusb.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rndis_host.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rtl8150.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ smsc75xx.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ smsc95xx.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ sr9700.ko
    β”‚   β”‚   β”‚   β”‚   └── sr9800.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ veth.ko
    β”‚   β”‚   β”‚   └── wireless
    β”‚   β”‚   β”‚       β”œβ”€β”€ ath
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ar5523
    β”‚   β”‚   β”‚       β”‚   β”‚   └── ar5523.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ath10k
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ ath10k_core.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   └── ath10k_pci.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ath6kl
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ ath6kl_core.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ ath6kl_sdio.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   └── ath6kl_usb.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ath9k
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ ath9k_common.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ ath9k_htc.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ ath9k_hw.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   └── ath9k.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ ath.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ carl9170
    β”‚   β”‚   β”‚       β”‚   β”‚   └── carl9170.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ wcn36xx
    β”‚   β”‚   β”‚       β”‚   β”‚   └── wcn36xx.ko
    β”‚   β”‚   β”‚       β”‚   └── wil6210
    β”‚   β”‚   β”‚       β”‚       └── wil6210.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ atmel
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ at76c50x-usb.ko
    β”‚   β”‚   β”‚       β”‚   └── atmel.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ bcmdhd
    β”‚   β”‚   β”‚       β”‚   └── bcmdhd.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ bcmdhd_pcie
    β”‚   β”‚   β”‚       β”‚   └── bcmdhd_pcie.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ broadcom
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ b43
    β”‚   β”‚   β”‚       β”‚   β”‚   └── b43.ko
    β”‚   β”‚   β”‚       β”‚   └── b43legacy
    β”‚   β”‚   β”‚       β”‚       └── b43legacy.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ intel
    β”‚   β”‚   β”‚       β”‚   └── iwlwifi
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ dvm
    β”‚   β”‚   β”‚       β”‚       β”‚   └── iwldvm.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ iwlwifi.ko
    β”‚   β”‚   β”‚       β”‚       └── mvm
    β”‚   β”‚   β”‚       β”‚           └── iwlmvm.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ intersil
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ orinoco
    β”‚   β”‚   β”‚       β”‚   β”‚   └── orinoco.ko
    β”‚   β”‚   β”‚       β”‚   └── p54
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ p54common.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ p54pci.ko
    β”‚   β”‚   β”‚       β”‚       └── p54usb.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ marvell
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ mwifiex
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ mwifiex.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ mwifiex_pcie.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ mwifiex_sdio.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   └── mwifiex_usb.ko
    β”‚   β”‚   β”‚       β”‚   └── mwl8k.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ mediatek
    β”‚   β”‚   β”‚       β”‚   └── mt7601u
    β”‚   β”‚   β”‚       β”‚       └── mt7601u.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ralink
    β”‚   β”‚   β”‚       β”‚   └── rt2x00
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2500usb.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2800lib.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2800mmio.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2800pci.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2800usb.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2x00lib.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2x00mmio.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2x00pci.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rt2x00usb.ko
    β”‚   β”‚   β”‚       β”‚       └── rt73usb.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ realtek
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl818x
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8187
    β”‚   β”‚   β”‚       β”‚   β”‚       └── rtl8187.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl8812au
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8812au.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl8814au
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8814au.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl8821au
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8821au.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl8821cu
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8821cu.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl8822bu
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8822bu.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl8822ce
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8822ce.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rtl8xxxu
    β”‚   β”‚   β”‚       β”‚   β”‚   └── rtl8xxxu.ko
    β”‚   β”‚   β”‚       β”‚   └── rtlwifi
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ btcoexist
    β”‚   β”‚   β”‚       β”‚       β”‚   └── btcoexist.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8188ee
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8188ee.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8192c
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8192c-common.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8192ce
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8192ce.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8192cu
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8192cu.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8192de
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8192de.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8192ee
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8192ee.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8192se
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8192se.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8723ae
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8723ae.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8723be
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8723be.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8723com
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8723-common.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl8821ae
    β”‚   β”‚   β”‚       β”‚       β”‚   └── rtl8821ae.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl_pci.ko
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ rtl_usb.ko
    β”‚   β”‚   β”‚       β”‚       └── rtlwifi.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ rsi
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rsi_91x.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ rsi_sdio.ko
    β”‚   β”‚   β”‚       β”‚   └── rsi_usb.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ st
    β”‚   β”‚   β”‚       β”‚   └── cw1200
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ cw1200_core.ko
    β”‚   β”‚   β”‚       β”‚       └── cw1200_wlan_sdio.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ti
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ wl1251
    β”‚   β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ wl1251.ko
    β”‚   β”‚   β”‚       β”‚   β”‚   └── wl1251_sdio.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ wl12xx
    β”‚   β”‚   β”‚       β”‚   β”‚   └── wl12xx.ko
    β”‚   β”‚   β”‚       β”‚   β”œβ”€β”€ wl18xx
    β”‚   β”‚   β”‚       β”‚   β”‚   └── wl18xx.ko
    β”‚   β”‚   β”‚       β”‚   └── wlcore
    β”‚   β”‚   β”‚       β”‚       β”œβ”€β”€ wlcore.ko
    β”‚   β”‚   β”‚       β”‚       └── wlcore_sdio.ko
    β”‚   β”‚   β”‚       └── zydas
    β”‚   β”‚   β”‚           β”œβ”€β”€ zd1201.ko
    β”‚   β”‚   β”‚           └── zd1211rw
    β”‚   β”‚   β”‚               └── zd1211rw.ko
    β”‚   β”‚   β”œβ”€β”€ pci
    β”‚   β”‚   β”‚   └── pci-stub.ko
    β”‚   β”‚   β”œβ”€β”€ platform
    β”‚   β”‚   β”‚   └── tegra
    β”‚   β”‚   β”‚       β”œβ”€β”€ bad.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ nvadsp
    β”‚   β”‚   β”‚       β”‚   └── nvadsp.ko
    β”‚   β”‚   β”‚       └── tegra_cpu_sysfs.ko
    β”‚   β”‚   β”œβ”€β”€ scsi
    β”‚   β”‚   β”‚   └── scsi_transport_srp.ko
    β”‚   β”‚   β”œβ”€β”€ spi
    β”‚   β”‚   β”‚   β”œβ”€β”€ spi-cadence.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ spidev.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ spi-pxa2xx-pci.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ spi-pxa2xx-platform.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ spi-sc18is602.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ spi-tle62x0.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ spi-xcomm.ko
    β”‚   β”‚   β”‚   └── spi-zynqmp-gqspi.ko
    β”‚   β”‚   β”œβ”€β”€ ssb
    β”‚   β”‚   β”‚   └── ssb.ko
    β”‚   β”‚   β”œβ”€β”€ staging
    β”‚   β”‚   β”‚   β”œβ”€β”€ rtl8188eu
    β”‚   β”‚   β”‚   β”‚   └── r8188eu.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ rtl8192e
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rtl8192e
    β”‚   β”‚   β”‚   β”‚   β”‚   └── r8192e_pci.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rtllib_crypt_ccmp.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rtllib_crypt_tkip.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ rtllib_crypt_wep.ko
    β”‚   β”‚   β”‚   β”‚   └── rtllib.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ rtl8192u
    β”‚   β”‚   β”‚   β”‚   └── r8192u_usb.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ rtl8712
    β”‚   β”‚   β”‚   β”‚   └── r8712u.ko
    β”‚   β”‚   β”‚   └── wlan-ng
    β”‚   β”‚   β”‚       └── prism2_usb.ko
    β”‚   β”‚   β”œβ”€β”€ thermal
    β”‚   β”‚   β”‚   └── userspace_alert.ko
    β”‚   β”‚   β”œβ”€β”€ uio
    β”‚   β”‚   β”‚   └── uio.ko
    β”‚   β”‚   β”œβ”€β”€ usb
    β”‚   β”‚   β”‚   β”œβ”€β”€ class
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cdc-acm.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cdc-wdm.ko
    β”‚   β”‚   β”‚   β”‚   └── usblp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ common
    β”‚   β”‚   β”‚   β”‚   └── ulpi.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ image
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ mdc800.ko
    β”‚   β”‚   β”‚   β”‚   └── microtek.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ misc
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ appledisplay.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cypress_cy7c63.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cytherm.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ emi26.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ emi62.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ idmouse.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ldusb.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ usblcd.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ usbsevseg.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ usbtest.ko
    β”‚   β”‚   β”‚   β”‚   └── yurex.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ mon
    β”‚   β”‚   β”‚   β”‚   └── usbmon.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ serial
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ch341.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ cp210x.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ftdi_sio.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ option.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ pl2303.ko
    β”‚   β”‚   β”‚   β”‚   └── usb_wwan.ko
    β”‚   β”‚   β”‚   └── storage
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-alauda.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-cypress.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-datafab.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-eneub6250.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-freecom.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-isd200.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-jumpshot.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-karma.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-onetouch.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-realtek.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-sddr09.ko
    β”‚   β”‚   β”‚       β”œβ”€β”€ ums-sddr55.ko
    β”‚   β”‚   β”‚       └── ums-usbat.ko
    β”‚   β”‚   └── video
    β”‚   β”‚       └── backlight
    β”‚   β”‚           β”œβ”€β”€ generic_bl.ko
    β”‚   β”‚           └── lcd.ko
    β”‚   β”œβ”€β”€ fs
    β”‚   β”‚   β”œβ”€β”€ binfmt_misc.ko
    β”‚   β”‚   β”œβ”€β”€ btrfs
    β”‚   β”‚   β”‚   └── btrfs.ko
    β”‚   β”‚   β”œβ”€β”€ cifs
    β”‚   β”‚   β”‚   └── cifs.ko
    β”‚   β”‚   β”œβ”€β”€ fuse
    β”‚   β”‚   β”‚   β”œβ”€β”€ cuse.ko
    β”‚   β”‚   β”‚   └── fuse.ko
    β”‚   β”‚   β”œβ”€β”€ nfs_common
    β”‚   β”‚   β”‚   └── nfs_acl.ko
    β”‚   β”‚   β”œβ”€β”€ nfsd
    β”‚   β”‚   β”‚   └── nfsd.ko
    β”‚   β”‚   └── overlayfs
    β”‚   β”‚       └── overlay.ko
    β”‚   β”œβ”€β”€ lib
    β”‚   β”‚   β”œβ”€β”€ crc7.ko
    β”‚   β”‚   β”œβ”€β”€ crc-itu-t.ko
    β”‚   β”‚   β”œβ”€β”€ libcrc32c.ko
    β”‚   β”‚   β”œβ”€β”€ raid6
    β”‚   β”‚   β”‚   └── raid6_pq.ko
    β”‚   β”‚   β”œβ”€β”€ ts_bm.ko
    β”‚   β”‚   β”œβ”€β”€ ts_fsm.ko
    β”‚   β”‚   └── ts_kmp.ko
    β”‚   β”œβ”€β”€ net
    β”‚   β”‚   β”œβ”€β”€ 802
    β”‚   β”‚   β”‚   β”œβ”€β”€ garp.ko
    β”‚   β”‚   β”‚   └── mrp.ko
    β”‚   β”‚   β”œβ”€β”€ 8021q
    β”‚   β”‚   β”‚   └── 8021q.ko
    β”‚   β”‚   β”œβ”€β”€ bluetooth
    β”‚   β”‚   β”‚   └── bnep
    β”‚   β”‚   β”‚       └── bnep.ko
    β”‚   β”‚   β”œβ”€β”€ bridge
    β”‚   β”‚   β”‚   └── br_netfilter.ko
    β”‚   β”‚   β”œβ”€β”€ can
    β”‚   β”‚   β”‚   β”œβ”€β”€ can-bcm.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ can-gw.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ can.ko
    β”‚   β”‚   β”‚   └── can-raw.ko
    β”‚   β”‚   β”œβ”€β”€ ipv4
    β”‚   β”‚   β”‚   β”œβ”€β”€ esp4.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ netfilter
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ arptable_filter.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ arp_tables.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ arpt_mangle.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ iptable_filter.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ iptable_mangle.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ iptable_nat.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ iptable_raw.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip_tables.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ipt_ah.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ipt_MASQUERADE.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ipt_REJECT.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ipt_rpfilter.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_ipv4.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_defrag_ipv4.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_log_ipv4.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_h323.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_ipv4.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_masquerade_ipv4.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_pptp.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_proto_gre.ko
    β”‚   β”‚   β”‚   β”‚   └── nf_reject_ipv4.ko
    β”‚   β”‚   β”‚   └── tunnel4.ko
    β”‚   β”‚   β”œβ”€β”€ ipv6
    β”‚   β”‚   β”‚   β”œβ”€β”€ ah6.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ esp6.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ ip6_tunnel.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ ipcomp6.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ mip6.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ netfilter
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip6table_filter.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip6table_mangle.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip6table_nat.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip6table_raw.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip6_tables.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip6t_MASQUERADE.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip6t_REJECT.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_ipv6.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_defrag_ipv6.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_log_ipv6.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_ipv6.ko
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_masquerade_ipv6.ko
    β”‚   β”‚   β”‚   β”‚   └── nf_reject_ipv6.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ sit.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ tunnel6.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xfrm6_mode_beet.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xfrm6_mode_transport.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xfrm6_mode_tunnel.ko
    β”‚   β”‚   β”‚   └── xfrm6_tunnel.ko
    β”‚   β”‚   β”œβ”€β”€ irda
    β”‚   β”‚   β”‚   └── irda.ko
    β”‚   β”‚   β”œβ”€β”€ mac80211
    β”‚   β”‚   β”‚   └── mac80211.ko
    β”‚   β”‚   β”œβ”€β”€ netfilter
    β”‚   β”‚   β”‚   β”œβ”€β”€ ipvs
    β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ip_vs.ko
    β”‚   β”‚   β”‚   β”‚   └── ip_vs_rr.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_amanda.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_broadcast.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_ftp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_h323.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_irc.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_netbios_ns.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_netlink.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_pptp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_proto_dccp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_proto_gre.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_proto_sctp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_proto_udplite.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_sane.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_sip.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_conntrack_tftp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_log_common.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_amanda.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_ftp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_irc.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_proto_dccp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_proto_sctp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_proto_udplite.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_redirect.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_sip.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nf_nat_tftp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nfnetlink_acct.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nfnetlink.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nfnetlink_log.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ nfnetlink_queue.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ x_tables.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_addrtype.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_CHECKSUM.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_CLASSIFY.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_comment.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_connbytes.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_connlimit.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_connmark.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_conntrack.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_ecn.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_hashlimit.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_helper.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_hl.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_IDLETIMER.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_iprange.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_ipvs.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_length.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_limit.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_LOG.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_mac.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_mark.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_multiport.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_nat.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_NFLOG.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_NFQUEUE.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_owner.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_physdev.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_pkttype.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_policy.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_quota2.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_quota.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_recent.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_REDIRECT.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_socket.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_state.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_statistic.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_string.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_TCPMSS.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_tcpudp.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_time.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_TPROXY.ko
    β”‚   β”‚   β”‚   β”œβ”€β”€ xt_TRACE.ko
    β”‚   β”‚   β”‚   └── xt_u32.ko
    β”‚   β”‚   β”œβ”€β”€ rxrpc
    β”‚   β”‚   β”‚   └── af-rxrpc.ko
    β”‚   β”‚   β”œβ”€β”€ sunrpc
    β”‚   β”‚   β”‚   └── xprtrdma
    β”‚   β”‚   β”‚       └── rpcrdma.ko
    β”‚   β”‚   β”œβ”€β”€ wireless
    β”‚   β”‚   β”‚   β”œβ”€β”€ cfg80211.ko
    β”‚   β”‚   β”‚   └── lib80211.ko
    β”‚   β”‚   └── xfrm
    β”‚   β”‚       └── xfrm_ipcomp.ko
    β”‚   └── sound
    β”‚       β”œβ”€β”€ ac97_bus.ko
    β”‚       β”œβ”€β”€ drivers
    β”‚       β”‚   β”œβ”€β”€ mpu401
    β”‚       β”‚   β”‚   └── snd-mpu401-uart.ko
    β”‚       β”‚   β”œβ”€β”€ opl3
    β”‚       β”‚   β”‚   └── snd-opl3-lib.ko
    β”‚       β”‚   └── snd-aloop.ko
    β”‚       β”œβ”€β”€ pci
    β”‚       β”‚   β”œβ”€β”€ ac97
    β”‚       β”‚   β”‚   └── snd-ac97-codec.ko
    β”‚       β”‚   β”œβ”€β”€ au88x0
    β”‚       β”‚   β”‚   └── snd-au8810.ko
    β”‚       β”‚   β”œβ”€β”€ emu10k1
    β”‚       β”‚   β”‚   └── snd-emu10k1x.ko
    β”‚       β”‚   β”œβ”€β”€ hda
    β”‚       β”‚   β”‚   └── snd-hda-intel.ko
    β”‚       β”‚   β”œβ”€β”€ mixart
    β”‚       β”‚   β”‚   └── snd-mixart.ko
    β”‚       β”‚   β”œβ”€β”€ nm256
    β”‚       β”‚   β”‚   └── snd-nm256.ko
    β”‚       β”‚   β”œβ”€β”€ oxygen
    β”‚       β”‚   β”‚   β”œβ”€β”€ snd-oxygen-lib.ko
    β”‚       β”‚   β”‚   └── snd-virtuoso.ko
    β”‚       β”‚   β”œβ”€β”€ snd-ad1889.ko
    β”‚       β”‚   β”œβ”€β”€ snd-atiixp.ko
    β”‚       β”‚   β”œβ”€β”€ snd-atiixp-modem.ko
    β”‚       β”‚   β”œβ”€β”€ snd-intel8x0.ko
    β”‚       β”‚   β”œβ”€β”€ snd-intel8x0m.ko
    β”‚       β”‚   β”œβ”€β”€ trident
    β”‚       β”‚   β”‚   └── snd-trident.ko
    β”‚       β”‚   └── ymfpci
    β”‚       β”‚       └── snd-ymfpci.ko
    β”‚       └── synth
    β”‚           └── snd-util-mem.ko
    β”œβ”€β”€ modules.alias
    β”œβ”€β”€ modules.alias.bin
    β”œβ”€β”€ modules.builtin
    β”œβ”€β”€ modules.builtin.bin
    β”œβ”€β”€ modules.dep
    β”œβ”€β”€ modules.dep.bin
    β”œβ”€β”€ modules.devname
    β”œβ”€β”€ modules.order
    β”œβ”€β”€ modules.softdep
    β”œβ”€β”€ modules.symbols
    β”œβ”€β”€ modules.symbols.bin
    └── source -> /home/factana/Linux_for_Tegra/source/public/kernel/kernel-4.9

And I also checked in other systems (ubuntu-desktop and ubuntu server in raspberry pi) but I did find squashfs file anywhere in kernel.

Please let me know if I’m missing something

Edit: cat /lib/modules/$(uname -r)/modules.builtin | grep squashfs kernel/fs/squashfs/squashfs.ko it is available here and why doesn’t work, I’m so confused.

From the edit it sounds like you have β€œsquashfs.ko”. Since it is a module it has to load before it works (dynamically loadable and unloadable). I’ll suggest this:

  1. β€œsudo depmod -a”
  2. β€œsudo modprobe squashfs”
  3. β€œlsmod | grep -i squash”

Does the modprobe step work? Does lsmod then show squash? FYI, there is some metadata sometimes generated upon boot or upon first installing a module, and the depmod command helps to find changes and deal with metadata. The modprobe is just one way to search for and load the module. If this works, then after this the module should load by itself.