Announcing the FUD PC

30 April 2015

The FUD is proud to announce the FUD PC. The FUD PC will be the default PC installation for all future FUD workstations.

The following software will be available on the FUD PC:


Are you annoyed by your userland? Are you annoyed by the systemd vs. sysvinit debate? Are you annoyed by all the pachting and updating of your userland? Are you annoyed by the shared libarary hell and the dll hell?

The FUD presents a novel solution: Userland-Less Linux (abbreviated UseLess Linux).


Q: Which software does UseLess Linux support?
A: Here is a complete list: [python 2.7.9]

Q: What about mv, cd, rm, cat, ls?
A: These legacy programs to manage your userland are no longer necessary. Only python 2.7.9 is supported.

Q: Can I run UseLess Linux on my machine?
A: Yes, we provide installation instructions below.


Building and Deploying UseLess Linux

Here is a guide to build and deploy Userland-Less Linux. Compiling on your own is also the preferred way the FUD system administration expects you to obtain the system.

Step 1: Compiling a Kernel

Compile your favorite Linux kernel. Procedure obvious. We use /boot/fudlinuz

Step 2: Build the Userland

We compile the userland. The ./configure options for python are self-explanatory.
$ wget -q --no-check-certificate -O- https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz | tar xJv
$ cd Python-2.7.9/
$ LINKFORSHARED="-static" SO=".penis" CCSHARED="-static" LDSHARED='$(CC) -static' ./configure --disable-ipv6 --with-suffix=.fud --with-doc-strings --disable-shared LDFLAGS="-static -static-libgcc" CPPFLAGS="-static"
$ make
$ sha1sum python.fud
8d193d3a8a445ab3fea81ef5e4d1790a5bce56de  python.fud
You should get the same sha1sum. Make sure to use the corresponding tool chain and set your system clock appropriately.

Step 3: Test the Userland

$ ./python.fud 
Python 2.7.9 (default, Apr 29 2015, 02:33:16) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "Welcome to the FUD PC"
Welcome to the FUD PC
>>> def f(x):
... 	return 4+x
... 
>>> f(8)
12
>>> 2**3
8
>>> import math
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named math
>>> 3*math.pi
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'math' is not defined
>>> import socket
Traceback (most recent call last):
  File "", line 1, in 
  File "/home/diekmann/Downloads/Python-2.7.9/Lib/socket.py", line 47, in 
    import _socket
ImportError: No module named _socket
Works like charm.

Step 4: Deploy

The system can now be deployed to the target machine.
$ sudo loadkeys de #important!
$ cd Python-2.7.9/
$ mv python.fud init
$ cd ..
$ cd Python-2.7.9/
$ find . | cpio --quiet --dereference -o -H newc | gzip -9 > ~/fudinitrd
$ cd ..
$ sudo cp -i fudinitrd /boot/
$ sudo vim /etc/grub.d/40_custom
Add the following. We assume you are running the kernel fudlinuz.
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "Useless Linux" {
	linux	/boot/fudlinuz
	initrd	/boot/fudinitrd
}
$ sudo update-grub
You can now remove all deprecated parts of your legacy system. $ ls -R / should only report: /boot/fudlinuz /boot/fudinitrd.

Step 5: Enjoy

Boot into your freshly installed UseLess Linux and enjoy!


Serious note: if you compile python the normal way (not static), check the so dependencies and the expected paths with `ldd' and copy those files to your initrd, you actually get a working python!