Is it possible to boot from an ISO over the network, and how?
Solution 1:
I think you want a means of pxe booting from ISO images. I searched for a little bit and found this article. I believe that method should work for any bootable ISO image you may have. This is another similar article.
Finally, it appears that this article discusses how to do this from a PXE (Pre-boot eXecution Environment) server you run from Windows.
Solution 2:
Yes, it is very much possible. The type of system you can boot will depend on how said system works.
Usually, you will find that very simple systems (like DOS or Win98) and very complex systems (like modern Linux distros) are easily bootable over the network.
The way to accomplish this on the two types of systems is very different.
Let's see both ways in more detail. I'm assuming you already have a PXE boot server setup; if you don't, go ahead and do it, it's quite easy.
I'm also assuming a dnsmasq
setup on a Linux server with the tftproot in /var/lib/tftpboot
, but you should be able to adapt the instructions to any other setup.
For simple systems
For simple systems, you simply load the image (ISO) into RAM, and trick the system into believing it is an actual unit. This is done with a little help from the BIOS and a software module called memdisk.
The system you want to load over the network is freedos:
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT freedos
LABEL freedos
MENU LABEL FreeDOS
KERNEL /syslinux/memdisk
INITRD /freedos.iso iso
That's pretty much it. The first few lines are menu boilerplate; the important bits are the last four lines: load memdisk with the given ISO.
For complex systems
Modern systems with fancy stuff like good memory management and proper hardware detection pretty much ignore anything the BIOS has to say.
This renders the memdisk
approach used above pretty much useless, because if you loaded the ISO that way, once the kernel was read from the ISO and loaded into memory (this is done by the bootloader in the ISO; bootloaders do pay attention to the BIOS), the ISO data would be gone.
What do you do then? Well, you don't actually load the ISO from the network, but instead tell the system it can access the required files from there.
For Linux systems, extract the ISO contents somewhere in the tftproot and load the kernel and initrd directly, then leaving it up to them to find the root filesystem and mount it.
Here's an example using the amazing System Rescue CD. I actually extracted the whole ISO onto the root of the TFTP server, because it fit right in with my directory structure, so the kernels are in /syslinux
.
# /var/lib/tftpboot/pxelinux.cfg/default
UI vesamenu.c32
PROMPT 0
TIMEOUT 0
MENU DEFAULT sysrescd64
LABEL sysrescd64
MENU LABEL 1) SysResCD 4.2.0 (x64)
KERNEL /syslinux/rescue64
APPEND setkmap=us nomodeset netboot=nbd://pxe:sysrcd.dat
INITRD /syslinux/initram.igz
The most important bit here is the APPEND
line. See the netboot=
at the end? That's how the OS knows where its root filesystem is. The syntax is <protocol>://<server>:<path>
.
I had conveniently set a DNS name pxe
for my server.
If you don't have that you would use an IP address for the server.
Also, sysresccd is one of the easiest because it uses a squashfs image for its root filesystem, which can be easily downloaded and loaded to RAM with any method. Here I use nbd; you can also use tftp, nfs and http.
For other distros, like Ubuntu, I think you can only use nfs.
For Windows systems it is a bit more complex to do. The outline is:
- Have a Windows 7 install on a shared folder on the server
- Have a full Windows PE environment on the server in your TFTP root
- Have the client machine load the WinPE over the network and press F12 to get a command prompt
- Map the shared folder with the Windows 7 install to a drive letter
- Start installation from the mapped folder
I have never tried this, and it seems it doesn't work for some people. For NT versions older than Vista I think it's not even possible. For pre-NT Windows (95, 98, ME, etc) you can use the memdisk approach, but booting those is bad for your health :-p
Solution 3:
The Ultimate Deployment Appliance offers what you require. Their homepage describes its functionality; it's reformatted here for convenience:
What is the Ultimate Deployment Appliance?
- Unattended OS installations (Windows, Linux, ESX, Solaris) over the network set-up in minutes!
- Publish your favorite recovery/system maintenance tools over the network!
- PXE Booting, Remote Installation Services, Kickstart, Jumpstart, Autoyast in a box!
When would you use this?
- When you are trying to install a system that doesn't have a CDROM drive, but does have a network card (these days ultra-thin laptops and such don't have an optical drive)
- When you have to install an operating system on different pieces of hardware.
- When you have to install systems and want things to go automated and reproducible.
- When you go to your friends house to fix his/her computer you want to be prepared. Instead of removing all that unwanted stuff you might as well start fresh. Bring your own system (laptop?), hook it up to the messed up system with a cross-cable and start re-install the system from scratch fully unattended. Head for the fridge...
- When you need to do maintenance on your system without the need to carry around a stack of live CD's.
- When you want to do this without paying lots of money for commercial products.
How Does it work?
- Unattended Install The appliance mounts an iso file with a distribution of you favorite operating system and imports the necessary (network) boot-files. It creates a default configuration file for your automated installation and starts hosting the operating system distribution files for network booting.
- System Tool Publishing Live CD's and other tools are imported entirely to the Ultimate Deployment appliance and are published for booting over the network trough PXE.
UDA has a YouTube channel, where you can find a video of them installing Windows 7 as an example from setup within UDA to Windows completely installed.
Solution 4:
I suggest various tools for this jobs if you are interested to extend this research:
- FOG: http://www.fogproject.org/
- cobbler: http://www.cobblerd.org/
- DRBL: http://drbl.sourceforge.net/