Linux on IOXO CloudReady Chromebook: Patched Kernel

Intro

Hello all! It's been a while since I made the original post, and while I shelved the idea, it's resurfaced. I was able to locate the commit on Neverware's kernel with the fix - and after figuring out how to compile my own kernel, am now successfully running Linux on the Chromebook with a touchpad.

neverware: fix the touchpad in the IOXO M133-N · neverware/kernel@ca97a9d
This is a weird device; it is missing almost all DMI info so there'snot much to match against to figure out when to enable this quirk, buthopefully the fact that (almost) everything is set to...
9/9/23: The above repository has vanished, I was able to locate a fork including the commit here. I also have at standalone diff here.

While I am a software developer, my primary focus is web backend development, so kernels are out of scope for me. I was able to, however, download the kernel source, apply those changes, and compile the kernel.

I use the XanMod kernel, so I applied the changes from the commit and compiled it for Debian. I'm sure there are better, more permanent ways, to do this, however once I figured it out I was able to compile it fairly easily. I will say, don't try to compile it on the IOXO device - the CPU isn't fast enough. Took mine 12+ hours before I gave up. Took a few minutes on my daily driver.

On a fresh install of ElementaryOS I simply installed the kernel, updated initramfs (update-initramfs -u -k all), and rebooted into the new kernel. The touchpad worked. Success!

0:00
/

Compiled Kernel

Disclaimer: While I've included the kernel I compiled, for security I would recommend compiling it yourself.

Compilation Instructions

These instructions are for XanMod, and may not work with the generic kernel - Ubuntu has a guide, but you may have to figure it out for your specific distro / kernel. If you're on Ubuntu you can definitely use their guide to make sure you install all the prerequisites.

Start off by cloning the kernel source on the version desired. I would recommend making a folder, e.g. "kernel", then cloning inside that folder, as the build process places the output into ../.

git clone https://github.com/xanmod/linux --depth 1 -b 5.10.109-xanmod1

Then apply the changes from the commit manually. In some cases, you could use a .patch file (just a diff), however I just manually applied the changes.

Copy the standard config to .config for use during compilation.

cp CONFIGS/xanmod/gcc/config .config

I also had to change from zstd to gzip using make menuconfig, then in the menu, "General setup" -> "Kernel compression mode", selecting gzip.

Finally it's time to compile it!

make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-ioxo

Once done (depending on your system this may take a few minutes or 12+ hours), your kernel packages are located in the parent folder - there should be 3. Simply get them over to the IOXO Chromebook and install them with dpkg -i *.deb, update-initramfs -u -k all, and update-grub. Reboot, select the patched kernel, and ensure everything is working.