Kernel configuration for EOS Kernels/Developer Box


#1

Hi, are the configuration parameters for the EOS Kernels available somewhere in the system? The usual suspects, like:

  • /proc/config.gz
  • /boot/config…

aren’t available. Im interested in this, because i want to compile a new kernel module for EOS which exactly matches the currently running kernel.

Additional question: Is there a way to put a EOS Installation into some kind of Developer Mode and use native (e.g. non-sandboxed) compilers to build stuff? For my current journey (getting Anbox running) i compile everything (Kernel, Libraries…) inside the Freedesktop SDK Sandbox and moving binaries out, which is probably not the correct way to go.


#2

You should be able to find the real /boot folder in the deployment under /ostree/deploy/, with a kernel config included.

If you build and install your own kernel, be aware that it will be quietly dropped next time you do an OS update; custom kernels is not something we officially support.

The closest we have to a developer mode is via the new container support in EOS-3.6.0 (now in beta). I haven’t tried this yet so I’d be curious to hear how you get on. I’m not sure if there are any featuers in place there to make it easier to pull things in and out of the container.


#3

Thanks for the information, will try this and post any news on the progress in this thread.

/update 2019-06-11:
It works :slight_smile: I was able to compile a loadable Kernel Module with the following procedure:

    wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.0.tar.gz     
    gzip -dc linux-5.0.tar.gz | tar -xvf -
    cd linux-5.0
    cp /ostree/deploy/eos/deploy/$(ostree admin status help | grep "*" | awk '{print $3}')/boot/config-$(uname -r) .config
    flatpak run --command=sh --filesystem=home org.freedesktop.Sdk//18.08
        make oldconfig       
        // Add CONFIG_VERSION_SIGNATURE="Ubuntu 5.0.0-15.16+dev147.ed6bc99beos3.6.2-generic 5.0.6" to .config        
        // (or whatever in your .config.old is)        
        //
        // Add CONFIG_LOCALVERSION="-15-generic"
        //
        // Comment out:
        // CONFIG_SYSTEM_TRUSTED_KEYRING=y
        // CONFIG_SYSTEM_TRUSTED_KEYS="certs/endless.pem"
        make -j $(nproc)

This builds the Kernel. Then when building the Out-of-Tree Kernel module, specify:

export KERN_DIR=~/tmp/k/linux-5.0
export KERN_VER=5.0.0-15-generic
make -j $(nproc)

This will now yield the .ko file, which can be loaded with insmod into the running kernel.