Version 28 (modified by Daniel Kahn Gillmor, 11 years ago) (diff)



cereal is a serial terminal management system. cereal provides a framework to easily set up and maintain automated, timestamped logs of serial lines, while simultaneously allowing end user access to them. This is probably most useful for providing automated, logged access to remote serial consoles.

cereal can control an arbitrary number of independently monitored and logged lines. Direct access to the monitored lines is allowed only to a specific user (who doesn't necessarily otherwise have access to the direct serial line), but logs can be made available to any group. Logs are rotated automatically and their total space can be limited in size.

cereal uses GNU screen as the terminal interface to the serial lines. cereal attaches a screen session to a specified serial terminal, and then monitors the screen session with runit. Any activity on that screen session is written to a log file.

cereal was conceived as a way to manage the monitoring of serial consoles on other machines. Other than network connections, serial lines are the most useful way to interact with a machine. All legitimate BIOS, bootloaders, and operating systems can provide console/terminal access through a serial line. In a high-density environment, such as a rack, all machines can be configured with their consoles on a serial line. A serial console server can then be setup with a high number of serial ports to monitor the serial consoles of all the machines in the rack. Serial monitoring requires less space, and is more flexible and convenient that typical KVM systems. cereal can be used on the serial console server to manage all the serial connections to the machines in the rack.

cereal is available under the GNU General Public License, v3 or later.


  • a "session" connects a "terminal", with screen, to a "host" (serial console) via serial "line"
  • one can "attach" to enabled session
  • one can "follow" enabled session (read logs)


cereal depends on runit and GNU screen.


cereal is particularly useful on machines with large numbers of serial ports, acting as a console server. How can you make it so that your machine has a large number of serial ports for a reasonable price?

  • the Octopus-550, an 8-port PCI card. These work well under linux, and CMRG has lots of experience with them. search around a bit for the best prices. Highly recommended.
  • 8-port serial adapter -- this claims to use the Prolific chipset (pl2303), which has robust driver support in Linux. Doesn't require external power or a hub for 8 ports, which could be nice. Never tried it, though.


cereal is now a part of Debian!

The latest version of cereal is available from CMRG in source or .deb form, or from the CMRG apt repository by adding the following to your /etc/apt/sources.list:

deb unstable cereal
deb-src unstable cereal

The latest version of cereal no longer works on etch because of changes in runit. If you want to use cereal on an etch system, please put the following lines in /etc/apt/sources.list instead:

deb etch cereal
deb-src etch cereal

Note: these repositories are signed by dkg's GPG key. You can import this key for apt if you want cryptographic verification of these packages.

Anonymous, read-only access to the source is available via svn:

svn co

You can also browse the source on this site.

open issues

coax screen into logging to stdout or stderr
cereal bash completion
create /usr/bin/cereal-shell
cereal attach fails if there are other sessions named similarly
cereal failing to destroy stopped sessions
add ability to change session parameters