GoalRoadmapDocumentationGet Involved

Futaba Linux


The goal of Futaba Linux is to create a minimal lightweight Linux distribution that challenges some of the standards we have in place today. The other goal, because of personal interests in embedded development, will be to keep the distro suitable for embedded devices with full ARM repositories and minimal bloat.


Coming Soon


The general system design as of now is to use uClibc instead of glibc, busybox instead of GNU coreutils (And to use asm utils where applicable for the installer), and EXTLinux (syslinux) as the default boot loader.

The package manager will be a somewhat simple shell script compatible with the Almquist shell (ash). Several must have features for the package manager are to be user-runnable, installing programs into ~/.bin, ~/.lib, etc. for when the package manager is not ran as root. We also want to be able to run multiple instances of the package manager where it doesn't conflict.

The installer will use menuconfig (or nconfig) for a familiar and readymade curses interface. We plan on providing saner although less standardized options for users. For example, on deciding how to manage your device nodes, along with the 'standard' udevd method, you can choose to either have a completely static /dev, use mdev, or use a static /dev with mdev for just hotplugging.

All system utilities will be compiled static, why distros stopped statically compiling core utilities is beyond me.

We will also be looking into running init differently. While daemon supervising looks flexible and convenient in many ways, and Deny from the uClibc team certainly makes a good argument for it, I don't want to require anyone to have to run extra daemons and I don't personally want to run extra daemons. My problems with the current /etc/{rc.d | init.d} system are:

1.) I don't think it's correct to keep executables in /etc. When we think of /etc we think of configuration files, not executables.
2.) We don't type out the full path to any other executable, so why is it we execute service scripts this way? Why do we type /etc/{init.d | rc.d}/servicename {start | stop | restart} when we have such luxuries as $PATH?

My solution to this is to get rid of /etc/{init.d | rc.d} and move those scripts to /sbin. I think /sbin is more correct since it's a place for system executables and executables that should be ran as root, both descriptions service scripts fit. In this system service scripts will begin with "rc.", so to restart postfix you would simply type "rc.postfix restart". Getting a list of services would be as easy as typing rc. and tabbing twice, if you have tab completion.

Init has been replaced with a simple shell script that runs basic commands, waits for signals, and restarts a getty, making init itself the configuration file for your hostname, time settings, and so forth. Don't be afraid, this isn't a lenghty script like /etc/rc.sysinit- it's very simple.

Wiki coming soon.

Get Involved

Mailing lists will be coming eventually, as of now you can join in on discussions and meet the developers at #futaba on the Rizon IRC network.