Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking for a solution (or at least for some guide/pathway/manual) to boot AND SYNCHRONISE Linux images from network. I already understand how network boot (PXE, DHCP, TFTP) works.

In my organisation we have many PC's with the same (or different too) hardware configuration with Linux (Ubuntu LTS). And when we make an upgrade I need to go and upgrade every PC manually. The same when somebody asks for software update (e.g., LibreOffice, Eclipse, VMware). Of course, I don't like to do it manually.

And now I'm looking for solution which will allow me to create a custom Linux image with custom software set and SYNCHRONISE it with users' PCs during boot process.

The goal is to have one OS on all (in one department) users' computers with the same configuration and software.

I'm NOT interested in Diskless Clients or Linux Terminal Server. And I'm looking NOT ONLY for network installation. I want to make a custom Linux image and then install it on the users' computers during boot - create a local installation on each user computer.

BUT THEN, if I change something (e.g., add new software into this image, or just run 'apt-get upgrade') in the image, I want these updates appear on users' computers during next network boot/synchronisation. I want to synchronise the system configuration (/etc, /usr, /opt, and others), without users' /home or data in /media.

Thank You very much in advance.

P.S. I'm also looking for option to support users computers with different hardware.

P.P.S. Another option is to synchronise custom manually preinstalled Linux with the image from network (image should overwrite custom installation).

P.P.P.S. I'm also dreaming doing the same for Windows.

share|improve this question
up vote 3 down vote accepted

Many of your problems are handled by configuration management tools like Puppet, Chef or cfengine. It works differently than you envision it, but it's the goal that matters, right?

With e.g. Puppet, you install the basic OS (might be from an image), with a Puppet client and then Puppet handles the installation/configuraton of the software.

To a degree, it's working with Windows too.

share|improve this answer
Thanks. I will also have a look at m23. – Andrey Sapegin May 9 '12 at 7:45

I've done this before with rsync. You just set up a "golden master" PC, install software onto that, then rsync it over. You will need the rsync -x option to avoid syncing across filesystems, then build up a list of other stuff not to sync, such as most of /var, /etc/hostname, and a few other things.

share|improve this answer
I thought about writing custom scripts inside initrd booted from tftp, but I suggest there could be too many problems and no support in case something fails... – Andrey Sapegin May 9 '12 at 7:45

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.