Other articles

  1. Linux module dependencies

    With the imminent release of kmod 33, I thought it’d be good to have a post about the different types of module dependencies that we have in the Linux kernel and kmod. The new version adds another type, weak dependency, and as the name implies, is the weakest of all. But let’s revisit what are the other types first.


    Hard (symbol) dependency

    This is the first dependency that every appeared in kmod (and module-init-tools). A hard (or as some call, “symbol”) dependency occurs when your module calls or uses an exported symbol of another module. The most common …

    read more
  2. Tracepoints and kernel modules

    Tue 15 March 2022 | tags: Linux

    While debugging, it’s invaluable to be able to trace functions in the Linux kernel. There are several tools for that task: perf, ftrace (with helper tool like trace-cmd), bpftrace, etc.

    For my own debug of kernel internals and in the last few years to debug the i915 module for Intel graphics, I usually use tracepoints or dynamic tracepoints (with perf probe) as the trigger for something I want to trace.

    One question I get some times is “how do I trace the initial probe of a kernel module?”. At that time you (usually) don’t yet have the module …

    read more
  3. Using evemu to simulate input devices

    I’m doing some experiments to make the remote controller of Parrot’s Disco drone (SkyController 2) to work with ArduPilot. I will talk more about this in another post. This one is basically about a nifty tool I’ve found that I didn’t know existed: evemu. I always used evtest to debug the input system in Linux.

    SkyController 2 runs Linux and exposes all the sticks and buttons as an evdev device. I developed a tool to serve as a general-purpose software to be used in this kind of device: dema-rc. Ultimate goal is to have a software …

    read more
  4. git helper for “recursive rebase”

    Very often I’m in the middle of an interactive rebase and while editing a commit I remember I should have changed a commit that I initially didn’t mark on the rebase todo. If you tried to git-rebase again you would notice it’s not possible due to git’s bookkeeping of the current rebase.

    In the past what I usually did was to either 1) Continue the rebase and then rebase again to fix the previous commit or 2) Create a fixup commit with git commit --fixup and then rebase again with --auto-squash.

    Now I have a helper …

    read more
  5. Throw away” linux images in seconds

    Generating a new rootfs from scratch in order to test changes to early parts of the software stack or just to have a pristine environment is something I needed several times in the past.

    Since I use Archlinux in my desktop something that I like is to have a similar environment in the target test rootfs. I decided to re-use and improve a script from Kay Sievers to create an installer that can be booted as a VM, as a container or in bare metal: arch-installer.sh. Originally  it was a script to bootstrap a Fedora image and I think …

    read more

blogroll

social