User Tools

Site Tools


Crossfire Server on Puppy Linux

Woof Woof is explained here at it's “official” Kennel Pages

It has a Wiki on

And as all young pets, it may not do what you want.

Never the less, it runs on my 2nd-hand PCs since the year 2010.
No fancy HP / Dell / Mac full featured super-dooper PC in sight.

Puppy is by many uttering on the net considered a RAM-only OS,
but I run it as traditional full installation.


Compiling the server is described generally here on the page for Server Compiling .

Puppy needs the DEVELOPER'sX devx additionally downloaded and installed.
This devx contains the GNU compiler and tools for Source Versioning Control; usually GIT .
It may contain SVN , possibly Mercurial and FOSSIL, and it's own WOOF formerly known as BONES .
So, it may be necessary to build SVN beforehand, when SVN access is desired.

But SourceForge has also releases of the server source code available, thus making SVN not necessary.


Puppy Linux by default is a so-called root-distribution, giving “absolute powers” to it's users.
It is not intended to be the main OS on some university cluster, managing dozens of logons and logouts each second;
with giving users access to other harddrives and many partitions and whatever there in Ixalovh's Realm may exist.

And what do these nasty paranoid Crossfire programmers, who expect everyone being much more intelligent than they are, do ?
They of course implement a disturbing check for ROOT since version 1.50 of the server !
But they are not alone, the FreeCiv programmers did that too .
These FreeCiv programmers but had put in a DEFINE named ALWAYS_ROOT, thinking of the poor little
bone nagging Puppy Linux users not being excluded and banned from the Flight from Reality.

And this ALWAYS_ROOT define we put also into the check for root in server/server/server.c
in function int server_main(int argc, char * *argv) :

#if !defined(WIN32) && !defined(ALWAYS_ROOT)
    /* Here we check that we aren't root or suid */
    if (getuid() == 0 || geteuid() == 0) {
        fputs("Don't run crossfire as root, it is unsupported.\n", stderr);
        fputs("Instead run it as a normal unprivileged user.\n", stderr);
        fputs("Aborting...\n", stderr);
        return 1;

And then run ./configure CFLAGS=“-DALWAYS_ROOT” ;-)

Understood ?

server/linux/puppy_linux.txt · Last modified: 2018/04/10 14:42 by karl