39

I have a machine with a bootable ISO stored on it, and I have another blank machine, which I want to install the ISO on. They're both on the same LAN (attached to the same switch). How would I go about booting the blank machine from the ISO stored on my primary computer?

1
  • if you have the tutorials steps @George, perhaps you could share it here the links... coz i have the similar case for installing an ISO of Windows 8 into a blank computer that has no DVDRom attached to it instead a LAN connection only. :D
    – gumuruh
    Aug 9, 2016 at 22:57

4 Answers 4

12

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.

4
  • @datatoo - you're welcome, it was kind of self-serving - I've wondered about this before myself. Jun 30, 2011 at 22:33
  • @One of the great benefits to answering questions is the research process. You do tend to learn stuff, and that is good.
    – KCotreau
    Jun 30, 2011 at 23:09
  • Do these techniques work for any bootable ISO? I.e. a windows ISO? Or do they only work for linux distributions?
    – AaronLS
    Aug 5, 2012 at 22:09
  • @AaronLS - I don't know, but I'd expect it to work for all BIOS interfacing OSes. I'm less sure about EFI ones, but I could imagine the EFI ones generally work even better for this stuff. Hopefully someone actually tries it and comments! Aug 9, 2012 at 17:13
8

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

4

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.

3

I suggest various tools for this jobs if you are interested to extend this research:

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .