Duplicate a Linux System
Carbon Copy is a tool for installing and configuring Linux on a number of roughly identical x86 machines, based on a prototype machine. The basic idea is to set up the prototype as needed, then make backups of the major filesystems on that machine (i.e. /, /usr, /var, and any others that should be installed on the remaining machines). Then, using etherboot and root-over-NFS, boot the machines to be installed with a miniature, installation, root and run a script to partition, initialize, restore the backups, and finish configuring the machine.
Carbon Copy has been evolving since approximately 1997 in the Department of Computer Science at UT Austin, and has been used to install several hundred machines. It is written using Expect.
The process is not for the faint-hearted or non-Linux-savvy. It will probably require some understanding of Linux, the x86 boot process, network booting, NFS, and TCL programming. On the other hand, it works pretty well.
Carbon Copy consists of two packages, makeinstallroot and doinstall.
makeinstallroot creates a small, simple installation root directory, that can be NFS exported. This directory can be used with doinstall below or as an emergency administration aid. It is currently being used with etherboot, to provide boot disks to download and start the Linux kernel, and the ISC DHCP server to provide the IP addresses.
makeinstallroot is configured using Autoconf and installed on the installation machine. It is executed to create the installation root.
doinstall is an Expect script that calls fdisk to repartition a machine, then creates filesystems and calls small "update scripties" to restore filesystem contents and configure the machine.
To install doinstall, create an installation root and untar the doinstall package in it. Directions to configure it are in its README.
- 31 May 2005: Move to SourceForge.
- 15 Oct 2001: doinstall-1.1 and makeinstallroot-1.1: Small bug fixes and new update scripts.
- 12 Aug 2001: doinstall-1.0 and makeinstallroot-1.0: Initial public release.
GNU General Public License, Version 2
We may be getting some HP IA-64 machines and be changing Carbon Copy to handle them. Since it appears to use parted (which is much easier to drive programatically than fdisk), doinstall will have to become even more parameterized. I expect makeinstallroot to get weird, too.
Update: 2003. Ok, so that didn't happen.