I have a host which contains ISOs of CentOS, FreeBSD and other OSes.
Is iPXE capable of loading an ISO over HTTP so that I can install the OS from the ISO? Would loading the ISO image into a memdisk be an option? My machines have 4GB of RAM or more.
It looks like it's possible to do this, but I have been unable to find a solid example which shows how to do this.
iPXE looks very useful. Thank you for providing it.
-= Stefan
My example script provides examples of a lot of different things you can do with iPXE:
https://gist.github.com/2234639
Be aware that the install ISO must be capable of network booting for things to work or must be completely initrd-based (that is, the entire installer is loaded into memory immediately). Whenever the OS kernel has booted up iPXE is no longer in control and all file fetching must be handled by the OS kernel. Look carefully at the Ubuntu installer and live entries in the menu. They show how you can make debian-installer and casper able to read its files from the network (I use NFS).
The RedHat-based distributions I don't have a lot of experience with.
(2012-08-01 14:53)robinsmidsrod Wrote: [ -> ]My example script provides examples of a lot of different things you can do with iPXE: https://gist.github.com/2234639
Your script is full of great examples. However, it relies on Sanbooting and I am not booting from a San. I am trying to load an ISO over HTTP, and I'm just not sure how to proceed.
But thank you for the example script!
Just chiming in on this one, you don't need to be running a san 'per se'. It just uses the san interface to load the ISO over http.
examples from robinsmidsrob include the following:
Code:
# Start Windows 7 installer DVD
sanboot --no-describe --drive 0x81 ${boot-url}/windows-7/ultimate-x64.iso || goto failed
goto start
:macrium-winpe
sanboot --no-describe ${boot-url}/macrium-5.0/macrium-5.0-rescue-winpe-3.1.iso || goto failed
goto start
Both of those examples are booting ISO's over http without loading them into a local memdisk first. The boot-url variable would usually be the address for your webserver. ie:
http://bootserver.local
Otherwise load it into a memdisk if you've got plenty of ram.
Code:
initrd ${boot-url}/windows-7/winpe-x64.iso
chain ${boot-url}/memdisk iso raw || goto failed
goto start
the examples are actually pretty comprehensive if you read through them. the memdisk option requires taking the memdisk from the syslinux file set.
Jp.
I also want to mention that your web server must support keep-alive and ranged requests to work properly with the
sanboot command. The default configuration of Apache on most Linux distributions has the right setup.
Great! Exactly what I need. I can now load the iso over HTTP. Now I just need to figure my way through memdisk/syslinux issues. I read that some people use grub4dos instead of memdisk.
> Just chiming in on this one, you don't need to be running a san 'per se'. It just uses the san interface to load the ISO over http.
Ah! I see, it is called 'sanboot' but it doesn't require a san at all. I just used it to load a 200MB boot .iso over the LAN. Excelent!
> the examples are actually pretty comprehensive if you read through them. the memdisk option requires taking the memdisk from the syslinux file set.
Yes, they are. And thanks again for the example. It's just hard to wrap my head around the concepts.
(2012-10-12 21:09)stefanlasiewski Wrote: [ -> ]Great! Exactly what I need. I can now load the iso over HTTP. Now I just need to figure my way through memdisk/syslinux issues. I read that some people use grub4dos instead of memdisk.
> Just chiming in on this one, you don't need to be running a san 'per se'. It just uses the san interface to load the ISO over http.
Ah! I see, it is called 'sanboot' but it doesn't require a san at all. I just used it to load a 200MB boot .iso over the LAN. Excelent!
> the examples are actually pretty comprehensive if you read through them. the memdisk option requires taking the memdisk from the syslinux file set.
Yes, they are. And thanks again for the example. It's just hard to wrap my head around the concepts.
You can also look into different distributions, and they will usually offer instructions on how to load their installers over PXE. For example, I setup Debian AMD64 and i386 installers following their directions. Especially if they offer it without requiring a NFS share, it normally loads everything via the initrd.