2

I installed Ubuntu on my Acer Chromebook via crouton, and am having a hell of a time getting my Wacom Intuos CTL-490 working.

It's not recognized at all, either for cursor movement or for clicking, so I started following the instructions here, however the very first step is giving me problems.

sudo apt-get install linux-headers-$(uname -r) build-essential

Outputs the following:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package linux-headers-3.18.0-17554-g9194949d4df2
E: Couldn't find any package by glob 'linux-headers-3.18.0-17554-g9194949d4df2'
E: Couldn't find any package by regex 'linux-headers-3.18.0-17554-g9194949d4df2'

It's shown above, but just to be clear, the output of uname -r is:

3.18.0-17554-g9194949d4df2

I tried editing my /etc/apt/sources.list such that it looks like this:

deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse contrib non-free
deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse

I added contrib non-free to the end of the first line.

I went ahead and tried to continue following the instructions linked above, but eventually after running the following:

if test -x ./autogen.sh; then ./autogen.sh; else ./configure; fi && make && sudo make install || echo "Build Failed"

I got the following build error (at the end of other output that looks to be successful):

checking for kernel source/headers... not found
configure: WARNING: Unable to find build config in any of:
      [/lib/modules/3.18.0-17554-g9194949d4df2/source],
      [/lib/modules/3.18.0-17554-g9194949d4df2/build],
      [/usr/src/linux],
      [/usr/src/linux-3.18.0-17554-g9194949d4df2],
      [/usr/src/linux-2.6]


configure: WARNING: Kernel directory does not appear to have needed config files
checking kernel version... 
configure: WARNING: Spcified '3.18.0-17554-g9194949d4df2' kernel, but found '' instead
configure: error: We could not find the development environment to build modules for the '3.18.0-17554-g9194949d4df2' kernel within the '' directory. Please install the kernel source or the kernel development package and try again.
Build Failed

Which I'm assuming is because I was unable to install the linux-headers... dependency from above.

If anyone has any insight on this it would be greatly appreciated, this is so frustrating all I want to do is draw pictures.

7
  • Linux v3.18? I'm surprised you can even boot Ubuntu with such an old kernel. Where did you get that? Please try with boot a supported kernel. On Xenial that's currently either the v4.4 (linux-generic), v4.13 (linux-generic-hwe-16.04), or v4.15 (linux-generic-hwe-16.04-edge) series. Jul 8 '18 at 19:51
  • Good to know, I just followed the instructions here: tutorials.ubuntu.com/tutorial/install-ubuntu-on-chromebook#0
    – saricDen
    Jul 9 '18 at 7:18
  • 1
    Right, sometimes I forget that Crouton is a thing. That's the kernel of the Android system on your Chromebook then and you can't really change it. Since (input) device drivers are a kernel matter I'm afraid your question is off topic since the Android kernel "borrowed" by Ubuntu running via Crouton is not considered part of the Ubuntu ecosystem when it comes to the scope of Ask Ubuntu. It would be on topic over Unix & Linux and you can flag your question for moderator attention to request a migration. Jul 9 '18 at 9:06
  • Wow this is very good information to know. All makes sense and is a bit of bad news for me, however everything is a learning experience I suppose. I wasn't aware that Android's kernel was so far behind the current Linux kernels or that Chromebooks use the Android kernel and not the regular Linux kernels, still it's very interesting. Thank you for taking the time to share your knowledge on this. I'm going to look into ways of updating the kernel on my Chromebook, if possible without causing chaos for ChromeOS.
    – saricDen
    Jul 9 '18 at 12:33
  • Android uses the “same” Linux kernel, just one with some (heavy) modifications compared to the “vanilla” Linux kernel by Linus Torvalds and much older than those in Ubuntu. There are ongoing efforts to merge changes from the Android kernel back into the “vanilla” Linux kernel which would render them more interchangeable. Jul 9 '18 at 13:35
1

NOTE: I don't own a Chromebook and hence I've not tested any of the below steps. Attempt this after making a backup of your important data


Step 1 :: Build Kernel Headers

All commands to be performed in the chrooted Ubuntu Shell

a) Get Kernel Sources

Install the following packages to get kernel sources:

sudo apt-get install git-core make kernel-package bc

Now pull chromeos-3.18 from the kernel repo:

git clone https://chromium.googlesource.com/chromiumos/third_party/kernel -b chromeos-3.18

Now there are possibly multiple versions of kernels that can be under the 3.18 version (which is what the numbers after 3.18 specify in uname - r

So perform the following steps:

cd kernel
./chromeos/scripts/prepareconfig chromeos-intel-pineview
make oldconfig
make kernelrelease

If the version from the uname command above does not match what is displayed, and is instead a later version, you need to figure out the right commit from which your kernel was built, to do that

git reset --hard origin/chromeos-3.18
git checkout HEAD~[commits-before]
./chromeos/scripts/prepareconfig chromeos-intel-pineview
make oldconfig
make kernelrelease

Replace [commits-before] with a number. You might have to do this multiple times until you get to the right kernel version specified by uname -r

b) Make the kernel image and headers

Disable halting on warnings by:

cd kernel && sed -i s/CONFIG_ERROR_ON_WARNING=y/CONFIG_ERROR_ON_WARNING=n chromeos/config/base.config

Now make the kernel by

./chromeos/scripts/prepareconfig chromeos-intel-pineview
make oldconfig

Now we must create deb packages of the kernel-image and headers by using

sudo make-kpkg --rootcmd fakeroot kernel_image kernel_headers

Ensure that the .debs are made by using ls ~/linux-*.deb

Do not install them yet as that will lead to ChromeOS becoming unbootable as /lib/modules is still mounted within the chroot

Create the following /etc/rc.local or add this to your /etc/rc.local if you already have one.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# umount bindmounts /lib/modules from enter-chroot
for m in `cat /proc/mounts | /usr/bin/cut -d ' ' -f2 | grep /lib/modules| grep -v "^/$" `; do
        umount "$m"
done
# try to load wacom drivers
if [ `find /sys/module/ -name "wacom*" -type d` ]; then
    # check if module_locking is disabled
    if ! grep -q "module_locking=0" /proc/cmdline; then
        exit 2
    fi
    modprobe wacom
    modprobe wacom_w8001
fi

exit 0

Mark it as an excecutable by sudo chmod +x /etc/rc.local and logout and log back in. Check if everything in /lib/modules is umounted so we can install our two deb files:

cat /proc/mounts | grep /lib/modules

Now install our debs by

sudo dpkg -i linux-*.deb

Reboot and proceed


Step 2 :: Install wacom drivers

Download the sources for the wacom driver:

git clone https://github.com/linuxwacom/input-wacom

Now install the drivers:

cd input-wacom && if test -x ./autogen.sh; then ./autogen.sh; else ./configure; fi && make && sudo make install || echo "Build Failed"

The updated driver should automatically load after rebooting the system.


Sources: Installing VirtualBox on Crouton

Installing Wacom modules for old linux kernels

4
  • Just to clarify before I attempt this: when you say chrooted Ubuntu Shell, are you referring to the terminal within Ubuntu running in Crouton? Or are you referring to the terminal running in Chrome OS? --Just want to make sure I don't perform any of this incorrectly and risk bricking my Chromebook!
    – saricDen
    Jul 15 '18 at 12:38
  • The terminal within ubuntu
    – Amith KK
    Jul 15 '18 at 12:53
  • Cheers. Will give this a try shortly and report my results.
    – saricDen
    Jul 15 '18 at 13:01
  • @saricDen As a precaution backup your data as anything kernel level has a possibility of preventing your Chromebook from booting. It can of course be restored as mentioned in the source but if you do restore it you will lose data
    – Amith KK
    Jul 15 '18 at 19:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.