If you’re using an ultra-low power system with a VIA x86-64 CPU for Tiny Core Linux, chances are the video chip is also made by VIA. There are no hardware-accelerated display drivers readily available for the pure 64-bit version of Tiny Core Linux, however, it is possible to build a 64-bit version from source and install them on a real machine.
Tiny Core Linux does have all the packages required to build kernel (operating system core) modules from source. This means we can build them on a Virtual Machine, package them up, and then transfer them to a real computer:
Built OpenChrome Binaries for x64 Linux
Throughout this build, if you want to review package installations, you can use the tce-ab
command with no arguments, then follow the on-screen instructions.
Fetch the Latest Drivers from Source
Firstly, let’s use Git to clone the latest drivers:
tce-load -wi git
git clone https://github.com/freedesktop/openchrome-xf86-video-openchrome.git
cd openchrome-xf86-video-openchrome/
Working Through the Configuration Dependency Tree
The goal is to get autogen.sh
(which runs configure
) to set up the build environment, so we can then make the binaries and package them into a SquashFS archive for installation on a real machine. If you run autogen now, you’ll find it returns:
./autogen.sh: line 9: autoreconf: not found
To sort out the initial dependency issues, run:
tce-load -wi autoconf automake m4 util-macros libtool-dev gcc sed
Trying autogen again results in:
configure: error: C compiler cannot create executables
See 'config.log' for more details
Checking the logs and scrolling back reveals:
/usr/local/bin/ld: cannot find crt1.o: No such file or directory
In addition to that:
/usr/local/bin/ld: cannot find crti.o: No such file or directory
To get these missing files, we should install the missing libc-dev dependencies:
tce-load -wi glibc_base-dev
The configuration will now complete with a syntax error, but this is caused by the prior issues with a missing pkg-config. We can resolve those problems by entering:
tce-load -wi pkg-config
Next packages like xorg-server
, xproto
, fontsproto
and glproto
are not found. We can satisfy all of these by installing the Xorg (GUI) development packages:
tce-load -wi xorg-server-dev
This also installs other packages we need, i.e. xproto
, fontsproto
, glproto
, randrproto
, renderproto
, videoproto
, xextproto
and libX11-dev
.
Another attempt at autogen.sh
nearly finishes, but results in Package 'dri' (...) not found
, which can be found in Xorg’s development kit for hardware acceleration:
tce-load -wi Xorg-7.7-3d-dev
The configuration will now get further. However, now the C pre-processor sanity check fails, and checking config.log again reveals this is because some kernel header files are missing. To get these, run:
tce-load -wi compiletc
./autogen.sh
Finally, autogen completes, and we didn’t have to alter any C code or fix any build scripts!
Make the Project
Next, we need to compile and link the C project, and build the binaries. We’ll run autogen again, but with compilation flags optimised for faster execution. We want our drivers to be as fast as possible:
mkdir /tmp/build
make clean
CFLAGS="-O3" ./autogen.sh --prefix=/tmp/build
make
Compiling OpenChrome Binaries for x64 Linux
Install the Project
Now, we should separate the binaries and install them in the build folder:
sudo make install
You can now find the files in /tmp/build
.
Build a Tiny Core Linux TCZ Extension
You can create a Tiny Core Linux extension (a SquashFS image) like this:
tce-load -wi squashfs-tools
cd /tmp
mksquashfs build/ openchrome.tcz
The new extension will now be at /tmp/openchrome.tcz
. This can now be installed and used on a real computer.
For me, the completed OpenChrome driver archive was exactly 200KB.