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.
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.
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.