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.
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!
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.