The Epoch Init System: A New Beginning.
All services and options go in one configuration file,
providing easy configuration and unrivaled control.
Built-in optional logging system capable of recording events
even before the filesystem is writable, WITHOUT an initial ramdisk.
Epoch provides it's own implementation of killall5 and wall,
though use of these is optional.
Epoch has no dependencies besides a linux kernel, libc, and pthreads,
and a working /bin/sh is suggested, but Epoch can be built to not require it.
Epoch's MountVirtual configuration attribute can be used to automatically mount
filesystems such as /dev/, /proc, /sys, /dev/pts, etc with the correct permissions,
before any services are launched.
Epoch has support for automatically restarting stopped services via the
Epoch provides service control through the 'epoch' command,
including start and stop, disable and enable, status, runlevel management,
and much more, all without dependencies such as dbus or piles of shell scripts.
Epoch tracks the PIDs of all services, supports PID files,
and supports sending signals to a PID to stop a service.
Epoch provides support for a boot banner greeting message with color support,
and the ability to read the banner from a file.
Epoch provides support for setting the hostname before any services are started,
optionally from a file.
Epoch uses a protocol called the membus to send information over shared memory,
making communication simple from Epoch's applets to init, and enabling the creation
of C/C++ third party configuration GUIs etc.
All Epoch applets besides the root 'epoch' executable are symbolic links,
meaning that you can choose which killall5 or wall binary you use, and that by
replacing the 'epoch' binary, you update the entire init system.
Epoch does not require a tree of complicated directories scattered
across the system to hold it's configuration and data, but rather
requires one directory in /etc for it's one configuration file,
and, if logging is desired, a location such as /var/log, though these options
can be changed at compile time.
Epoch supports pivot_root/exec fully.
Epoch supports user/group setting.
Epoch supports the equivalent of 'cmd&' without /bin/sh, as the FORK option.
Epoch supports stdout/stderr redirection.
Ever have a task get stuck forever when booting or shutting down?
Hit CTRL-ALT-DEL once to kill that pesky task, and hit it again
within five seconds to reboot. This is, as far as I know,
a unique and very useful feature.
One day in July 2013, I decided that I wanted to write an
init system to use with a custom linux system I was already working on,
since I didn't want anything big like Upstart or systemd
since this was a small system, and because none of the
alternatives met my desires either. I didn't want to use busybox init
because it wasn't featureful enough and to achieve the desired effect
would require miles of shell script, and what I did before
(using pure shell script with calls to the busybox binary for power control)
was hideous and unsafe. I decided that I wanted to write an init system
that kept things to the basics and kept size down, but had a reasonable amount
of features, one that would make it easy for me to configure every service
in a few minutes by hand, one that wouldn't require any real dependencies
so I could cram it into a 2MB ramdisk, and one that had good facilities
for managing services without actually having to open a
I wanted big init system features at a little init system price.
Since I couldn't think of any that met all of the criteria,
I pursued my little idea to write an init system of my own.
I originally intended to keep it as my little secret,
but since I greatly underestimated the work involved
in my little project, as the project grew, it became obvious that
hiding it wouldn't make much sense after all this work.
The core features I wanted were quickly determined,
and the new init system became functional around September 2013.
On January 24th 2014, the Epoch Init System version 1.0 "Sage" was released.
On February 23rd 2014, the Epoch Init System version 1.0.1 "Sage" was released.
Here is a list of notable features Epoch provides:
Configuration and Support
There is a basic configuration tutorial below,
and our irc channel is #epoch on irc.freenode.net.
Configuration File HOWTO
Epoch Init System FAQ
If you have other questions or need specific help, you can contact Subsentient here.
I'll usually be happy to reply.
Download the Epoch Init System
To download the Epoch Init System, see below.
Download 1.0.1 "Sage"
Download tar.gz of git/master
Epoch is public domain software. See unlicense.org.