Sep 012013
 

Latest version 1.0.0.14 now support ProxyDHCP features.

In short :

TinyPXE Server can now co exist « peacefully » with another dhcp server on the same LAN.
No more race conditions where first one (dhcp server) to answer wins the lease.

With ProxyDHCP option enable, TinyPXE Server will now « only » provide the boot file name information (and only to proxydhcp clients) : the client will then use/combine the dhcp offers from both servers (lease+boot file name).

Tested with success with the following boot straps : ipxe , gpxe , pxelinux , startrom.0 , pxeboot.com …

Discuss it here at reboot.pro.

More info around PXE here.

Cheers,
Erwan

tinypxeserver_proxydhcp

 Posted by at 21 h 02 min
Août 292013
 

Agenda

  • Prepare winpe (3 or 4) with QuickPE
  • Prepare the ipxe script
  • Prepare the PXE server with TinyPxe Server
  • Prepare the ISCSI target
  • Boot to winpe, prepare the drive, and Install windows
  • Reboot to your target !

Note that we have already covered installing win7 (or win8) directly to an ISCSI target : here.

However, there are times where yoy may not have a dvd drive or media available, or else, you may also want to perform some tasks before triggering the windows setup.

Prepare winpe (3 or 4) with QuickPE
You can either use MS WAIK (winpe3), or MS ADK (winpe4) or an existing windows setup DVD or ISO file.
Launch _run_me.cmd and make your choice.

quickpe_menu

Prepare the ipxe script
The following will attach an iscsi drive and will boot your winpe


#!ipxe
dhcp net0
set gateway 0.0.0.0
set keep-san 1
sanhook iscsi:192.168.1.248:tcp:3260:0:iqn.2000-01.com.synology:test
set boot-url http://${dhcp-server}
initrd ${boot-url}/images/winre.iso
kernel ${boot-url}/memdisk iso raw
boot

Prepare the PXE server with TinyPxe Server
Use ipxe-undionly.kpxe as « boot file name » and the above script (name it install.ipxe) as « filename if user-class=iPXE »

tinypxeserver

Prepare the ISCSI target
There you can either use starwind target free edition or any other target (many home nas device do have that feature also).
The target should be at least 8GB.

starwind_setup

Boot to Winpe, prepare the drive
Now lets network boot (pxe as first device in the bios).
Computer will pxe boot, load ipxe, then load your script.
The script will atatch your iscsi target and boot into winpe.
Note : you need one physical disk in your computer or else winpe might reboot in a loop. Also the windows setup will not go pass the disk selection if not physical disk is present.

Once in Winpe you should see your iscsi target listed as a physical drive : to check this, launch CloneDisk or diskpart.

Fist, lets create a disk, then lets create a (active) partition and finally lets format it : you can do all this with CloneDisk or diskpart.

clonedisk_iscsi
Then Lets also take care of the MBR and BS either with « bootsect.exe /nt60 c: /MBR » or with bootice or with CloneDisk.

Finally lets also create the bcd store with the following « bcdboot x:\windows /s c: ». C: is your iscsi disk, X: is your winpe disk.
Another alternative is to copy the bcd folder and the bootmgr file from your dvd to your target drive.
Then edit c:\boot\bcd with bootice or bcdedit and add a default win7 entry.

Now we are ready to perform the installation : map a drive thanks to PeNetwork (in the tinyshell launchbar) and either map a dvd shared over the network or an iso found in a network share.
Note : CloneDisk can also mount a virtual dvd driver from an iso file (only in winpe4).

Launch the windows setup and let it run : you should find your iscsi drive there.

screenshot.7

Boot to your ISCSI target via PXE
Here comes your second ipxe script, name it boot.ipxe and use it within Tiny PXE Server :
#!ipxe
dhcp net0
set gateway 0.0.0.0
set keep-san 1
sanboot iscsi:192.168.1.248:tcp:3260:0:iqn.2000-01.com.synology:test

Windows should the complete the installation, and reboot one last to your windows desktop.

 Posted by at 19 h 12 min
Août 132013
 

needed :
tiny pxe server
Partition Wizard

put pwhe8.iso in x:\pxe\iso

use the below ipxe script :

#!ipxe
set boot-url http://${dhcp-server}
initrd ${boot-url}/iso/pwhe8.iso
kernel ${boot-url}/memdisk iso
boot

name it pwhe8.ipxe and put it in x:\pxe

put ipxe-undionly.kpxe in x:\pxe

launch tiny pxe server with the following settings (leave other settings untouched) :
tick « httpd »
boot filename = ipxe-undionly.kpxe (use the browse files and folders « … » button)
tick « filename if user-class=gPXE or iPXE » = http://${dhcp-server}/pwhe8.ipxe.ipxe
push the online button

pxe boot your computer and here we go

homepw

 Posted by at 19 h 26 min
Août 132013
 

needed :
tiny pxe server
Clonezilla

open clonezilla.iso in winrar (or any other iso reading capable tool).
extract live folder to x:\pxe\iso\clonezilla

use the below ipxe script :

#!ipxe
set boot-url http://${dhcp-server}
kernel ${boot-url}/ISO/clonezilla/live/vmlinuz boot=live config noswap nolocales edd=on nomodeset vga=788 nosplash noprompt fetch=http://${dhcp-server}/ISO/clonezilla/live/filesystem.squashfs
initrd ${boot-url}/ISO/clonezilla/live/initrd.img
boot

name it clonezilla.ipxe and put it in x:\pxe

put ipxe-undionly.kpxe in x:\pxe

launch tiny pxe server with the following settings (leave other settings untouched) :
tick « httpd »
boot filename = ipxe-undionly.kpxe (use the browse files and folders « … » button)
tick « filename if user-class=gPXE or iPXE » = http://${dhcp-server}/clonezilla.ipxe
push the online button

pxe boot your computer and here we go

clonezilla

 Posted by at 19 h 20 min
Août 132013
 

needed :
tiny pxe server
winnfsd
redo backup recovery

open redobackup.iso in winrar (or any other iso reading capable tool).
extract casper folder to x:\pxe\iso\redobackup (or any path that suit you)

launch winnfsd with the following :
winnfsd.exe -id 0 0 x:\pxe\iso\redobackup
note : adapt the above path with your own path

use the below ipxe script :

#!ipxe
set boot-url http://${dhcp-server}
kernel ${boot-url}/iso/redobackup/casper/vmlinuz boot=casper netboot=nfs nfsroot=${dhcp-server}:/x/pxe/ISO/redobackup
initrd ${boot-url}/iso/redobackup/casper/initrd.lz
boot

note : adapt /x/pxe/ISO/redobackup to your own path.
name it redo.ipxe and put it in x:\pxe

put ipxe-undionly.kpxe in x:\pxe

launch tiny pxe server with the following settings (leave other settings untouched) :
tick « httpd »
boot filename = ipxe-undionly.kpxe (use the browse files and folders « … » button)
tick « filename if user-class=gPXE or iPXE » = http://${dhcp-server}/redo.ipxe
push the online button

pxe boot your computer and here we go

Redo-Backup-Recovery

 Posted by at 15 h 02 min
Août 122013
 

I have been playing with pxe booting for a while, first starting with pxelinux, then gpxe and lately with ipxe.

I am mostly a windows user and as an IT often needs a quick (=no install) and portable (=run from USB) dhcp server including a tftp server and a http server offering me then pxe booting.
I could use tftp32 or serva but i like to make my own tools and these 2 were missing some features here and there.

So here comes a small portable dhcp server including a tftp and a http server.

This is freeware (and will always be), should be opensource and the unique here idea is to share and contribute.

-dhcp daemon supports an alternative filename based on the user-class thus enabling chainloading (gpxe->pxelinux, ipxe->script, etc), and also support settings dhcp options (which can then be used by your boot loader)
-tftp daemon supports tsize and blksize commands.
-http daemon support head, range (mandatory for ipxe sanboot options) and over 2gb iso.
-new in version 1.0.0.7 : BINL (RIS & WDS) support
-new in version 1.0.0.10 : DNS daemon

The root home of tftp and http is the folder where you main pxe loader sits.
I put all my iso files in a sub folder called images.
I put all my wim files in a sub folder called sources.
I put all my other loaders, in case I want to chain load, in next to my main loader (bootmgr, pxelinux, gpxe, grldr, etc)

In the attached screenshot, i load ipxe then chainloads a script (menu.ipxe).
In the script 3 different methods : the classic memdisk, a newer approach with sanboot and a new kid on the block wimboot.

More info about these loading methods here :
http://www.syslinux.org/wiki/index.php/MEMDISK
http://ipxe.org/cmd/sanboot
http://ipxe.org/wimboot

Side note about ipxe+sanboot+http : I am big fan.
I have always been looking for a quick and efficient boot from lan methods and this is one is great : executes as it read and faster than memdisk since no preloading of the ISO is required.
iPXE reaches 50/60 MBits/secs on my lan.

« Voila ».

Download : http://reboot.pro/files/file/303-tiny-pxe-server/

Erwan

 Posted by at 13 h 38 min

How to create an image of a running windows (xp, 2003 and up) and boot it on SAN using an ISCSI target and gPXE

 

Steps:
1.Setup pxe server with gpxe
2.Setup iscsi target
3.Install new OS, or transfer existing OS, to a volume that will be shared over iscsi.
4.Install iscsi boot support
5.Boot over iscsi !
6.Summary :

Lets start!

1.Setup bootstrap loader with gpxe
using gpxe boot strap loader (for sanboot option)

Here below I use Tiny Pxe Server.


The root path : iscsi:192.168.1.100:tcp:3260:0:test
dhcp extra option : 175.6.1.1.1.8.1.1
we set keep-san=1 (in case we want to install directly to san) and dhcp priority=1 to over rule any dhcp server on your lan.

recommended: do not fill the router field due to a bug within ms iscsi initiator and the gateway (see here)

Note : as an option, you can skip the dhcp/tftp server by using a boot disk (floppy or cdrom) made by gpxe.

Go there Rom-o-matic.net,
-choose floppy image as output format (or cdrom),
-choose « all-drivers » as NIC Type,
-tick time_cmd and digest_cmd,
-and use the following embedded script :

#!gpxe
echo « Greetings! Hit Ctrl-C to bail out. »
sleep 5
echo « Going to DHCP on primary network adapter »
ifopen net0
dhcp net0
clear net0.dhcp/gateway:ipv4
sanboot iscsi:192.168.1.100::::xp

Use the generated boot disk on your physical computer or in your virtual image.

2.Setup iscsi target

iscsi cake can mount any thing like vhd, vmdk, disk, etc.
rocket division startwind can mount image files,disks, etc.
openfiler / freenas can also act as iscsi target but can « only » create disks, not mount them.

The iscsi target can be used either during the installation or for the transfer of an existing windows installation to an iscsi volume.

Here below a screenshot of one xp disk mounted in Starwind (free for one connection).


3.Install new OS, or transfer existing OS, to an image that will be shared over iscsi.

Installation choices :

-(1) install directly to an iscsi target (vista, windows 2008 or windows 7). see howto

-(2) have a vmdk point to a blank img file (monolithic vmdk option) and install thru vmware. See below how to.

Here below vmware settings to install xp on a physical device (choice 2 above).
Note that \\.\physicaldrive1 is actually a vmdk pointing to my disk image file (which we will use later in starwind).
See lower in that page on how to make that vmdk.


-(3) install to a local physical disk and clone it to an img file afterwards. See below how to.

If you have an existing windows, transfer it to an image file using a one to one disk cloning software.
Get clonedisk here : https://erwan.labalec.fr/clonedisk
Backup the physical drive, not the logical drive / partition.


Note1 : CloneDisk can create a vmdk file for you, pointing to the image file of your disk.
You may even be able to boot on your image file from within vmware server.
If so, dont forget to install the scsi vmware driver before cloning and to restart in safe mode on the target vm guest.



Note2 : QEMU can also use the raw image file.
Then apply this http://support.microsoft.com/kb/314082 before launching in QEMU to avoid a 0x7b BSOD.

4.Install iscsi boot support in your operating system (before cloning/transfer)

For xp : http://etherboot.org/wiki/sanboot/winnt_iscsi
Note : once the iscsi initiator installed on XP, dont forget to run the SAN Boot Configurator (http://www.etherboot.org/wiki/sanboot/winnt_iscsi_sanbootconf)

for w2k3: http://etherboot.org/wiki/sanboot/win2k3

Not needed for W2k8, Vista and Windows7 as they support natively iscsi boot.
Note : you have to set the msiscsi service to start=auto (and possibly to add the target to the iscsi initiator?).
(sc config MSiSCSI start= auto)

5.Boot over iscsi !

If not done yet, setup your iscsi target (see step 2) with a prepared image file.

Unless you have an hba with iscsi support or network card with gpxe built in, setup your pxe server (step 1).

Lets test it in vmware.

See below the vm settings (diskless!)


see below the disk seen from Windows , once booted over iscsi.


Constraint : network card needs to be the same before/after in order to boot.
You can add another network card before migrating to another computer, see here http://etherboot.org/wiki/appnotes/port_winnt_sanboot .

6.Summary :

-we have setup a pxe server (dhcp & tftp & gPXE)
-we have setup a scsi target
-we have installed windows to a flat file and served that file thru the iscsi target (in a vmware guest)
-we have setup iscsi boot support in our windows
-we have started a diskless computer (in a vmware guest)
-we have booted on san using the iscsi protocol thanks to gPXE

possible improvements:

-flash your network card with gPXE, turning it into a boot on san device.
see http://www.etherboot.org/wiki/romburning
In that case you dont need a pxe server anymore, config (target and rootpath) is saved directly in the network card.

-flash your motherboard network rom with gPXE.
see http://www.etherboot.org/wiki/biosext
Same idea as above.

-Use a gpxe nic rom in vmware to skip the dhcp/tftp part (nbios.filename vmx parameter).
Same idea as above but virtual…

 Posted by at 19 h 20 min

Install Windows 7 / 2008 (and up) directly to ISCSI with gPXE

 

Steps:
1.The bios Setup
2.The bootstrap loader
3.The ISCSI Target
4.Booting step 1
5.Booting step 2
6.Installing Windows
7.Completing the installation

1.The bios Setup
Configure bios in that order : network,cdrom,disk (or floppy, cdrom, disk if you go for the floppy bootstrap loader option).
Note :
-With vmware virtual server, you need to load your vmxnet driver in order to see your iscsi target.
-It is recommended to load also you vm scsi drivers.

2.The bootstrap loader
Setup a dhcp/pxe server with gpxe bootstrap loader and keep-san vendor option and root path set to iscsi.
(See note at the end of this bullet to go without a dhcp/tftp server)

->root path in my case was iscsi:192.168.1.100:tcp:3260:0:test.

->vendor option is 175.6.1.1.1.8.1.1 (etherboot length 6 code 1 length 1 value 1 code 8 length 1 value 1).
(more details here http://www.etherboot.org/wiki/dhcpd

->Here I use Tiny PXE Server under windows which supports the specific vendor and root-path options.

See discussion about this tool here.

ps : there is a bug with ms iscsi initiator and the gateway (see here http://reboot.pro/15965/) -> it is recommended not to fill in the router field as done in the picture above

*********** Note *******************************************
As an option, you can skip the dhcp/tftp server by using a boot disk (floppy or cdrom) made by gpxe.
See below.
Go to http://rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic ,
choose floppy image as output format / choose « all-drivers » as NIC Type / tick time_cmd and digest_cmd, and use the following embedded script :

#!gpxe
echo « Greetings! Hit Ctrl-C to bail out. »
sleep 5
echo « Going to DHCP on primary network adapter »
ifopen net0
dhcp net0
clear net0.dhcp/gateway:ipv4
set keep-san 1
echo « you may replace ${dhcp-server} by an hardcoded IP »
echo « you may replace windows by a specific target name »
sanboot iscsi:${dhcp-server}::::windows
boot

Use this boot disk on your physical computer or in your virtual image.
To make it easy on you, here are the image : floppy usb iso.
********** end of note ************************************************

3.The ISCSI Target
Setup an iscsi target with a blank image file (filled with zero).

->I use StarWind from RocketDivision.

4.Booting step 1
Launch computer : it will boot on network, load gpxe which in turn will try to boot on san (as defined in root path)

5.Booting step 2
Sanboot will fail to boot on the image file (since it is a blank one)

->gPXE/sanboot will then exit and computer will continue with boot from cdrom (as defined in bios)

6.Installing Windows
Windows 2008 setup should now see the iscsi target as a local disk (since we use the keep-san gPXE option).
If not, shift+f10 to go and command prompt and check your network with ipconfig /all .

7.Completing the installation
Next reboot will the computer boot directly on the iscsi target.

Gpxe page on w2k8 iscsi install : http://www.etherboot.org/wiki/sanboot/win2k8_iscsi_install

 Posted by at 21 h 25 min