On-demand image deployment at boot time?

  • Hi,

    Apologies if this post is in the wrong section.

    I’m looking for a certain function and I’m wondering if FOG would be capable of doing it or even part of it OR if anyone is aware of an alternative solution.

    I work for a university. We have ~100 computers on a separate subnet that require a unique functionality. When the computer boots the user should be shown a list of operating systems. The selected OS should then be deployed and booted.

    We currently have a system that does this but it has been built in-house using various tools and scripts to get it working. I’m wondering if there is a better way.

    This is the current process:

    Build and Capture

    1. Install an OS onto a computer and customise it as necessary
    2. PXE boot into Debian to run Image for Linux (by Terrabyte) to capture the OS image. Image is saved to a server.
    3. Repeat steps 1 and 2 for additional OSs

    Deploy Imaging Environment and OS Images

    1. PXE boot the target computers and deploy a small Debian environment and a copy of all the OS images to the first SSD

    Show OS selection screen and deploy

    1. User turns on computer and the Debian environment is booted. The only thing the user sees is a menu listing the OS images located on the first SSD
    2. User selects an OS and clicks “Deploy”. Image for Linux restores the requested OS to the second SSD using the image file located on the first SSD.
    3. The GRUB config is modified to boot from the second SSD on next boot. The computer restarts and boots into the new OS. If the computer is restarted again, the OS selection screen is displayed.

    The current system works well but it is difficult to maintain and is not well documented. A multi-boot system would not fit our requirements as the OS images are updated regularly and we don’t want persistence between reboots for security reasons. Students should have the ability to destroy the OS and then reimage it easily with a reboot. A VM approach also isn’t suitable because we need unrestricted access to network interfaces when using Kali, etc.

    The primary goal is to allow students to select an OS and image their computer in the least amount of time, and allow administrators to easily capture new images. At the moment, deploying a 35GB Windows image takes about 2 - 3 minutes.

    We are looking at either replacing the current system or rebuilding it. Is anyone aware of something capable of this? Or something that accomplishes part of it? Any comments or thoughts?


  • Developer

    @MediumToast i thought this might interest you https://forums.fogproject.org/post/123288

  • Developer

    here’s a demo video using standard 1GbE, a server with a hard disk RAID array (no SSDs), to a Dell Optiplex 3020 with a cheap SSD. https://youtu.be/gHNPTmlrccM

  • Moderator

    @MediumToast On a well managed 1GbE network with a server class FOG server you should get transfer rates around 6.1 GB per minute deploying to a modern target computer (< 4 years old) with SSD/NVMe drive. So for a 25GB reference image, image push times are just over 4 minutes from the fog server to the target computer.

    In my environment running the fog server on a large VM host server with a 10 GB core network, we see 12-13 GB/minute transfer rates to the newest target hardware computers.

  • Thanks for the replies, @george1421 and @Junkhacker !

    The teacher and student machines are on the same subnet by design and we don’t have any reason to restrict the images available to either so showing them the same list is ok.

    @Junkhacker You are correct, FOG server could definitely replace part of the system without too much hassle. I’m intrigued by your claim that FOG can deploy that quickly over a the network. That is extremely impressive. I have to admit that I haven’t experimented with FOG yet so this gives me a very good reason to. Thank you!

    I’ll get some hands on experience with FOG first and get back to you.

  • Developer

    @george1421 it doesn’t sound like they’re using fog elsewhere, so it doesn’t sound like this would be needed

  • Developer

    another note, the deploy times when using fog should be similar to what you’re seeing now, if you put those SSD drives in the fog server instead of as a second SSD in the PCs

    alternatively, if the current system is working for you and your difficulty in maintaining the current system is in part updating the “imaging” drive of the systems, fog could be used to push out update images to the first drive of the systems.

  • Moderator

    @Junkhacker I’ve been thinking about this, it would also be possible with a master->master configuration to have a students FOG server and a teachers FOG server. Where the students fog server might have a subset of the images sync’d from the teacher’s fog server. The only gotcha is that the teachers and students computers would need to be on two different subnets or do some really creating dhcp filtering/scripting.

  • Developer

    @george1421 it sounds like the fog server would be exclusively for the lab, so the list of images available shouldn’t be an issue, and they could even set the default iPXE menu item to “deploy image”

  • Moderator

    FOG can do this with a few caveats, but I think they can be resolved.

    Out of the box, when you pxe boot into the FOG iPXE menu you are presented with several options one of those options are “Deploy Image” (old name Quick Image). That menu item when selected will show you a list of all images on the FOG server. IT techs can pick an image from this list to deploy to the local computer. There is an option to only show the assigned image for that computer too. But its all or nothing. You either get a complete list of (active) images on that server or you get the only defined image for that target computer. You can hide all other non-value added menu items.