The Time Machine for Linux

 overview     status     changelog     donwload     installation     contact     credits  


2004-03-28 tml-1.0.0rc3 for Linux-2.4.18 ... 2.4.25.
2004-03-24 tml-1.0.0rc2 for Linux-2.4.18 ... 2.4.25.
2004-03-24 tmm-1.0.0rc2 for tml-1.0.0rc2.
2004-03-16 tml-1.0.0rc1 for Linux-2.4.18, 2.4.19, 2.4.20, 2.4.21, 2.4.22 2.4.23, 2.4.24 and 2.4.25 !!
2004-03-16 tmm-1.0.0rc1 for tml-1.0.0rc1.
2002-06-01 New release: tml-0.10.6a for Linux-2.4.18.
2002-04-15 First Time Machine Manager (tmm) public release, 0.1.7a., available
2002-04-15 New release: tml-0.10.5a for Linux-2.4.18.
2002-04-15 Home page updated.
2002-04-11 New release: tml-0.9.10a for Linux-2.4.18.
2002-04-10 Here you have very first public release of the Time Machine for Linux, v0.9.6a.
2002-04-09 Home page created.


This is the home page of the Time Machine for Linux. It is an experimental kernel patch that let users create their own Time Machines.

What is a Time Machine? ... it is a little artifact that offers the possibility to run processes on a different date or time than the current one, without having to change the global system date/time.

This project consist of two related parts: the kernel patch and the user command. That is, the Time Machine for Linux (AKA tml) and the Time Machine Manager (AKA tmm).

Some features of Time Machines (TMs) are:


These are latest releases of both tml and tmm.

Time Machine for Linux

      stable: tml-1.0.0rc3 for Linux-2.4.18 .. Linux-2.4.25 / 2004-03-28

Time Machine Manager

      stable: tmm-1.0.0rc2 for tml-1.0.0 / 2004-03-24



1.0.0rc3 1.0.0rc2 1.0.0rc1 0.10.6a 0.10.5a 0.9.10a 0.9.9a 0.9.6a


The following files were changed in the latest tml release:
   CREDITS                        |    8
   Documentation/   |   37 +
   Documentation/devices.txt      |    1
   Documentation/ioctl-number.txt |    1
   Documentation/tml.txt          |  155 +++++
   MAINTAINERS                    |    6
   arch/i386/kernel/apm.c         |    2
   drivers/char/         |   10
   drivers/char/Makefile          |    3
   drivers/char/tm.c              | 1111 +++++++++++++++++++++++++++++++++++++++++
   drivers/char/tm_proc.c         |  219 ++++++++
   fs/proc/array.c                |   17
   fs/proc/base.c                 |   11
   include/linux/miscdevice.h     |    1
   include/linux/sched.h          |   13
   include/linux/tm.h             |  188 ++++++
   include/linux/tm_proc.h        |   53 +
   kernel/exit.c                  |    4
   kernel/fork.c                  |    6
   kernel/time.c                  |   27
   20 files changed, 1859 insertions(+), 14 deletions(-)


1.0.0rc2 1.0.0rc1 0.1.7a


All you need to download is:
  1. A new, fresh copy of the latest kernel source code from your nearest kernel mirror. See for more information.

  2. A release of the Time Machine patch (tml) for your kernel version. Get it from here.

  3. The Time Machine Manager (tmm). Get it from here.


tml -- quick install --

  1. Get the TM patch corresponding to your kernel version.

  2. Apply it to the corresponding kernel and configure it.

  3. Under Code maturity level options, say Y to Prompt for development and/or incomplete code/drivers.

  4. Under Character devices, say Y to Time Machine Support (EXPERIMENTAL).

  5. Say Y to Time Machine /proc file system support.

  6. Say N to Time Machine debugging (adds 3K) unless you know what you are doing.
Proceed as usual to compile and boot your new kernel.


tmm installation procedure is really easy. Simply login as root, untar-gzip tmm source and run:
   # ./configure
   # make
   # make install
This will install tmm executable and its man page. Read it carefully to figure out what sort of things you can do with a time machine.

You need tml installed before installing tmm. Its configure script lets you specify an alternative path to your include/linux path. By default, it is supposed to be at /usr/include/linux.


Francesc Rocher is the author of the Time Machine for Linux. He can be reached (among others) at Feel free to send him comments, sugesstions, bug fixes, improvements, etc.


Many thanks goes to (in chronological order):


Finally, here you have a practical scheme of the Time Machine implementation. Read carefully instructions below to understand what the hell are these little artifacts of Figure 1.

Linux is the base of the Time Machine implementation, represented (on figure 1) by that stable, solid base. The shaded area represents the kernel space.

J and K are two different instances of Time Machines. The first one, J, is attached to process T which, in turn, is the parent process of process P. That process, P, is attached to the second instance of TM, K. For more clarity, follow the pointers on the figure.

G, V, E and A are kernel functions with little changes in order to allow process access their TMs. To be precise, these changes correspond to files time.c, sched.h, fork.c and exit.c (see diffstat above).

M is the main system time, which is not altered by the existence of as many Time Machines as you like.

C and B are internal routines of the main tml implementation, while F is the entry point of ioctl calls (note that TMs are connected to F through the device driver, represented by R).

In case of doubt, don't hesitate to look at the source code of the implementation.

Figure 1

Figure 1 Time Machine Implementation Scheme.

  Last update: 2016-05-31 Logo Donate to this project Valid HTML 4.01!