Logo Passei Direto
Buscar
Material

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

config.ini
[arch]
;will over rule the bootp filename or opt67 if the client arch matches one of the below
;00006=bootia32.efi
;00007=bootx64.efi
;00009=bootx64.efi
[dhcp]
;below is applicable only if proxydhcp=0
rfc951=1
;needed to tell TFTPd where is the root folder
root=files
;bootp filename as in http://tools.ietf.org/html/rfc951
;filename=ipxe-undionly.kpxe
filename=ipxe.pxe
;alternative bootp filename if request comes from ipxe or gpxe
altfilename=menu.ipxe
;start HTTPd
httpd=1
binl=0
start=0
dnsd=0
;if you have a dhcp server on your lan, set proxydhcp=1
proxydhcp=0
;default=1
bind=1
;tftpd=1 by default
;will share (netbios) the root folder as PXE
smb=0
;will log to log.txt
log=0
;opt1=
;opt3=
;opt6=
;opt28=
;opt15=
;opt17=
;opt43=
;opt51=
;opt54=
;opt67=
;opt66=
;opt252=
;poolstart=
;poolsize=
;alternative bootp filename if request comes thru proxydhcp (udp:4011)
;proxybootfilename=
;any extra dhcp options
;my gpxe / ipxe dhcp options
optextra=175.6.1.1.1.8.1.1
;the below will be executed when clicking on the online button
;online=online.bat
;offline=offline.bat
;if log=1, will log to log.txt - not recommended, rather, use the syslog feature
log=0
;syslog=127.0.0.1
[web]
port=80
;php.exe file.php param1=value1
;download php from https://windows.php.net/downloads/releases/
;php-5.6.38-nts-Win32-VC11-x86 tested with success
php=c:\php\php.exe
;cscript.exe file.vbs param1=value1 //nologo
vbs=C:\Windows\System32\cscript.exe
js=C:\Windows\System32\cscript.exe
;python.exe file.py param1=value1
py=C:\Python27\python.exe
;the below will be used if you turn on dnsd
[mydomain.fr]
ip=10.0.0.254
[10.0.0.253]
host=mydomain2.fr
[frmDHCPServer]
top=182
left=182
discover.zip
discover.cmd
@echo off
for /f %%i in ('discover.exe') do set ip=%%i
echo %ip%
for /f %%i in ('discover.exe share_name') do set share_name=%%i
echo %share_name%
for /f %%i in ('discover.exe share_username') do set share_username=%%i
echo %share_username%
for /f %%i in ('discover.exe share_password') do set share_password=%%i
echo %share_password%
rem net use * /delete
rem net use z: /delete
echo mounting \\%ip%\%share_name%
net use z: \\%ip%\%share_name% /user:%share_username% %share_password%
discover.exe
discover.txt
discover.exe will look for Tiny PXE Server on the network.
discover.exe (no arguments) will send back the listening ip of Tiny PXE Server.
discover.exe argument will send back the ident value of argument in config.ini under dhcp section.
see discover.cmd as a script example running from a winpe booted over the network.
discoverX64.exe
files/chain.c32
files/grldr
files/grldr.mbr
files/grub.efi
files/grub.exe
files/grub.img
files/grubx64.efi
files/grub/grub.cfg
set timeout=15
set default=0 # Set the default menu entry
#set root='(tftp)'
set root='(http)'
menuentry "GRUB4DOS" {
	linux /grub.exe --config-file=/menu.lst
}	
menuentry "Wimboot EFI64" {
#loopback /something.iso
insmod wimboot
wimboot \
 @:boot.wim:/sources/x64/boot.wim \
 @:bootmgfw.efi:/efi/boot/bootx64.efi \
 @:bcd:/efi/microsoft/boot/bcd \
 @:boot.sdi:/boot/boot.sdi
 boot
}
 
menuentry "hd0" {
 insmod part_msdos
 insmod chain
 chainloader (hd0,1)+1
}	
menuentry "Windows 7 BIOS MBR hd0" {
 insmod part_msdos
 insmod ntldr
 insmod ntfs
 ntldr (hd0,msdos1)/bootmgr
}
menuentry "Windows XP BIOS MBR hd0" {
 insmod part_msdos
 insmod ntldr
 insmod ntfs
 ntldr (hd0,msdos1)/ntldr
}
menuentry "Windows 7 BIOS MBR cd" {
 insmod part_msdos
 insmod ntldr
 insmod ntfs
 ntldr (cd)/bootmgr
}
files/grub/grub2-readme.txt
download grub-2.02-for-windows.zip here ftp://ftp.gnu.org/gnu/grub/
or
download grub-2.0.5 from here https://github.com/aIive/builds
-place i386-pc and x86_64-efi folders in this grub folder
-place grub-mkimage.exe file in this grub folder
files/grub/make-grub-pxe.cmd
grub-mkimage.exe -o grub.img --format=i386-pc-pxe --prefix="(tftp)/grub" pxe tftp http
grub-mkimage.exe -o grubx64.efi --format=x86_64-efi --prefix="(tftp)/grub" efinet tftp http
grub-mkimage.exe -o grubi386.efi --format=i386-efi --prefix="(tftp)/grub" efinet tftp http
rem ./grub-mkimage -d ./grub-core -o bootx64.efi -O x86_64-efi -p "" fat iso9660 part_gpt part_msdos normal boot linux configfile loopback chain efifwsetup efi_gop efi_uga ls search search_label search_fs_uuid search_fs_file gfxterm gfxterm_background gfxterm_menu test all_video loadenv exfat ext2 ntfs btrfs hfsplus udf tftp efinet
pause
files/grub/menu.lst
# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.
color blue/green yellow/red white/magenta white/magenta
timeout 30
default /default
title find and load NTLDR of Windows NT/2K/XP
fallback 1
find --set-root --ignore-floppies /ntldr
chainloader /ntldr
savedefault --wait=2
title find and load BOOTMGR of Windows VISTA
fallback 2
find --set-root --ignore-floppies /bootmgr
chainloader /bootmgr
savedefault --wait=2
title find and load CMLDR, the Recovery Console of Windows NT/2K/XP
fallback 3
find --set-root --ignore-floppies /cmldr
chainloader /cmldr
#####################################################################
# write string "cmdcons" to memory 0000:7C03 in 2 steps:
#####################################################################
# step 1. Write 4 chars "cmdc" at 0000:7C03
write 0x7C03 0x63646D63
# step 2. Write 3 chars "ons" and an ending null at 0000:7C07
write 0x7C07 0x00736E6F
savedefault --wait=2
title find and load IO.SYS of Windows 9x/Me
fallback 4
find --set-root /io.sys
chainloader /io.sys
savedefault --wait=2
title boot from XPE.SDI
chainloader --sdi (pd)/sdi/xpe.sdi
boot
title Return to PXELinux
pxe keep
chainloader --force --raw (pd)/pxelinux.0
title Return to iPXE
pxe keep
chainloader --force --raw (pd)/ipxe.pxe
title Load grub.exe with PXE support
pxe keep
terminal console
kernel (pd)/grub.exe
title Load grldr with PXE support
pxe keep
terminal console
chainloader --force --raw (pd)/grldr
title BartPE
pxe keep
chainloader --raw (pd)/startrom.0 
title WinPE 
pxe keep
chainloader --raw (pd)/pxeboot.com
title Parted Magic 20130228
kernel (pd)/memdisk iso
initrd (pd)/images/pmagic/pmagic_2013_02_28.iso
#Use grldr as the pxe boot file, and you can map an ISO to memory and boot from it:
title boot from 7pe_x86.iso
map --mem (pd)/images/7pe_x86.iso (0xff)
map --hook
chainloader (0xff)
boot
#Use grldr as the pxe boot file, and you can map an image to memory and boot from it:
title boot from xpe.img
map --mem (pd)/images/256_xpe.img (hd0)
map --hook
chainloader (hd0)+1
#boot
title wimboot
kernel /wimboot200
initrd @bcd=/boot/bcd @boot.sdi=/boot/boot.sdi @bootmgr=/bootmgr @boot.wim=/sources/boot.wim
title grubfm
map --mem /grubfm.iso (0xff)
map --hook
chainloader (0xff)	
title commandline
commandline
title floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)
title back to dos
quit
title reboot
reboot
title halt
halt
files/hdt.c32
files/ini.vbs
Function ReadIni( myFilePath, mySection, myKey )
 ' This function returns a value read from an INI file
 '
 ' Arguments:
 ' myFilePath [string] the (path and) file name of the INI file
 ' mySection [string] the section in the INI file to be searched
 ' myKey [string] the key whose value is to be returned
 '
 ' Returns:
 ' the [string] value for the specified key in the specified section
 '
 ' CAVEAT: Will return a space if key exists but value is blank
 '
 ' Written by Keith Lacelle
 ' Modified by Denis St-Pierre and Rob van der Woude
 Const ForReading = 1
 Const ForWriting = 2
 Const ForAppending = 8
 Dim intEqualPos
 Dim objFSO, objIniFile
 Dim strFilePath, strKey, strLeftString,
strLine, strSection
 Set objFSO = CreateObject( "Scripting.FileSystemObject" )
 ReadIni = ""
 strFilePath = Trim( myFilePath )
 strSection = Trim( mySection )
 strKey = Trim( myKey )
 If objFSO.FileExists( strFilePath ) Then
 Set objIniFile = objFSO.OpenTextFile( strFilePath, ForReading, False )
 Do While objIniFile.AtEndOfStream = False
 strLine = Trim( objIniFile.ReadLine )
 ' Check if section is found in the current line
 If LCase( strLine ) = "[" & LCase( strSection ) & "]" Then
 strLine = Trim( objIniFile.ReadLine )
 ' Parse lines until the next section is reached
 Do While Left( strLine, 1 ) <> "["
 ' Find position of equal sign in the line
 intEqualPos = InStr( 1, strLine, "=", 1 )
 If intEqualPos > 0 Then
 strLeftString = Trim( Left( strLine, intEqualPos - 1 ) )
 ' Check if item is found in the current line
 If LCase( strLeftString ) = LCase( strKey ) Then
 ReadIni = Trim( Mid( strLine, intEqualPos + 1 ) )
 ' In case the item exists but value is blank
 If ReadIni = "" Then
 ReadIni = " "
 End If
 ' Abort loop when item is found
 Exit Do
 End If
 End If
 ' Abort if the end of the INI file is reached
 If objIniFile.AtEndOfStream Then Exit Do
 ' Continue with next line
 strLine = Trim( objIniFile.ReadLine )
 Loop
 Exit Do
 End If
 Loop
 objIniFile.Close
 Else
 WScript.Echo strFilePath & " doesn't exists. Exiting..."
 Wscript.Quit 1
 End If
End Function
Sub WriteIni( myFilePath, mySection, myKey, myValue )
 ' This subroutine writes a value to an INI file
 '
 ' Arguments:
 ' myFilePath [string] the (path and) file name of the INI file
 ' mySection [string] the section in the INI file to be searched
 ' myKey [string] the key whose value is to be written
 ' myValue [string] the value to be written (myKey will be
 ' deleted if myValue is <DELETE_THIS_VALUE>)
 '
 ' Returns:
 ' N/A
 '
 ' CAVEAT: WriteIni function needs ReadIni function to run
 '
 ' Written by Keith Lacelle
 ' Modified by Denis St-Pierre, Johan Pol and Rob van der Woude
 Const ForReading = 1
 Const ForWriting = 2
 Const ForAppending = 8
 Dim blnInSection, blnKeyExists, blnSectionExists, blnWritten
 Dim intEqualPos
 Dim objFSO, objNewIni, objOrgIni, wshShell
 Dim strFilePath, strFolderPath, strKey, strLeftString
 Dim strLine, strSection, strTempDir, strTempFile, strValue
 strFilePath = Trim( myFilePath )
 strSection = Trim( mySection )
 strKey = Trim( myKey )
 strValue = Trim( myValue )
 Set objFSO = CreateObject( "Scripting.FileSystemObject" )
 Set wshShell = CreateObject( "WScript.Shell" )
 strTempDir = wshShell.ExpandEnvironmentStrings( "%TEMP%" )
 strTempFile = objFSO.BuildPath( strTempDir, objFSO.GetTempName )
 Set objOrgIni = objFSO.OpenTextFile( strFilePath, ForReading, True )
 Set objNewIni = objFSO.CreateTextFile( strTempFile, False, False )
 blnInSection = False
 blnSectionExists = False
 ' Check if the specified key already exists
 blnKeyExists = ( ReadIni( strFilePath, strSection, strKey ) <> "" )
 blnWritten = False
 ' Check if path to INI file exists, quit if not
 strFolderPath = Mid( strFilePath, 1, InStrRev( strFilePath, "\" ) )
 If Not objFSO.FolderExists ( strFolderPath ) Then
 WScript.Echo "Error: WriteIni failed, folder path (" _
 & strFolderPath & ") to ini file " _
 & strFilePath & " not found!"
 Set objOrgIni = Nothing
 Set objNewIni = Nothing
 Set objFSO = Nothing
 WScript.Quit 1
 End If
 While objOrgIni.AtEndOfStream = False
 strLine = Trim( objOrgIni.ReadLine )
 If blnWritten = False Then
 If LCase( strLine ) = "[" & LCase( strSection ) & "]" Then
 blnSectionExists = True
 blnInSection = True
 ElseIf InStr( strLine, "[" ) = 1 Then
 blnInSection = False
 End If
 End If
 If blnInSection Then
 If blnKeyExists Then
 intEqualPos = InStr( 1, strLine, "=", vbTextCompare )
 If intEqualPos > 0 Then
 strLeftString = Trim( Left( strLine, intEqualPos - 1 ) )
 If LCase( strLeftString ) = LCase( strKey ) Then
 ' Only write the key if the value isn't empty
 ' Modification by Johan Pol
 If strValue <> "<DELETE_THIS_VALUE>" Then
 objNewIni.WriteLine strKey & "=" & strValue
 End If
 blnWritten = True
 blnInSection = False
 End If
 End If
 If Not blnWritten Then
 objNewIni.WriteLine strLine
 End If
 Else
 objNewIni.WriteLine strLine
 ' Only write the key if the value isn't empty
 ' Modification by Johan Pol
 If strValue <> "<DELETE_THIS_VALUE>" Then
 objNewIni.WriteLine strKey & "=" & strValue
 End If
 blnWritten = True
 blnInSection = False
 End If
 Else
 objNewIni.WriteLine strLine
 End If
 Wend
 If blnSectionExists = False Then ' section doesn't exist
 objNewIni.WriteLine
 objNewIni.WriteLine "[" & strSection & "]"
 ' Only write the key if the value isn't empty
 ' Modification by Johan Pol
 If strValue <> "<DELETE_THIS_VALUE>" Then
 objNewIni.WriteLine strKey & "=" & strValue
 End If
 End If
 objOrgIni.Close
 objNewIni.Close
 ' Delete old INI file
 objFSO.DeleteFile strFilePath, True
 ' Rename new INI file
 objFSO.MoveFile strTempFile, strFilePath
 Set objOrgIni = Nothing
 Set objNewIni = Nothing
 Set objFSO = Nothing
 Set wshShell = Nothing
End Sub
files/ipxe-i386.efi
files/ipxe-snponly-i386.efi
files/ipxe-snponly-x86-64.efi
files/ipxe-undionly.kpxe
files/ipxe-x86_64.efi
files/ipxe.iso
files/ipxe.lkrn
files/ipxe.pxe
files/ipxe.usb
files/iscsi.ipxe
#!ipxe
dhcp
set keep-san 1
sanboot iscsi:192.168.1.100::::iqn.2008-08.com.starwindsoftware:windows
files/iso.ipxe
#!ipxe
set boot-url http://${dhcp-server}
#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
sanhook ${boot-url}/_images/hd.img
#initrd ${boot-url}/images/7pe_x86_e.iso
#initrd ${boot-url}/images/winpe4.iso
#initrd ${boot-url}/images/winpe3.iso
initrd ${boot-url}/images/winre.iso
kernel ${boot-url}/memdisk iso raw
boot
files/isosan.ipxe
#!ipxe
set boot-url http://${dhcp-server}
#sanhook --drive 0x81 ${boot-url}/_images/hd.img
#sanboot --no-describe ${boot-url}/images/winre.iso
sanboot --drive 0x80 ${boot-url}/_images/xp.img
files/mboot.c32
files/memdisk
files/memdisk.php
<?php
#you can use mklink /j link c:\xxx\target to create a junction in your hosting folder
#will accept an absolute path or relative path 
#ex : c:/_quickpe or
_pxe/quickpe - use // at the end of the path to include only dirs below the target
echo "#!ipxe\n";
echo "set boot-url http://\${next-server}\n";
#echo "show platform\n";
echo ":start\necho Boot menu\nmenu Selection\n";
if ($argc>1) {$root = $argv[1];}
if ($root=="") {
	$ini = parse_ini_file("config.ini");
	#current directory + root variable from config.ini
	$root=getcwd()."/".$ini['root']."//";
	#echo $root."\n";
}
$directory = new RecursiveDirectoryIterator($root);
$display = Array ( 'iso' ); #could be Array ( 'iso', 'raw' ) 
$count = 0;
foreach(new RecursiveIteratorIterator($directory) as $file)
{
 if (in_array(strtolower(array_pop(explode('.', $file))), $display))
 echo "item ". $count . " " . array_pop(explode("/", $file)) . "\n";
 $count += 1;
}
echo "item back back\n";
echo "choose os && goto \${os}\n";
$count = 0;
foreach(new RecursiveIteratorIterator($directory) as $file)
{
 if (in_array(strtolower(array_pop(explode('.', $file))), $display)){
		$filename= array_pop(explode("/", $file));
		$filename = ltrim($filename, chr(92)); 			
		echo ":". $count."\n";
		#memdisk, memdisk iso, or memdisk raw ?
		$pos = strpos($file, '.iso');
		if ($pos !== false) {
		echo "kernel \${boot-url}/memdisk iso\n";
		} else {
		echo "kernel \${boot-url}/memdisk raw\n";
		}
		echo "initrd \${boot-url}/".$filename."\n";
		echo "boot\n";
}
		$count += 1;
}
echo ":back\nchain menu-php.ipxe\n";
?>
files/memdisk.vbs
Option Explicit 
on error resume next
' ********************* functions ***********************
Sub Include (strFile)
	'Create objects for opening text file
	dim objFSO
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	dim objTextFile
	Set objTextFile = objFSO.OpenTextFile(strFile, 1)
	'Execute content of file.
	ExecuteGlobal objTextFile.ReadAll
	'CLose file
	objTextFile.Close
	'Clean up
	Set objFSO = Nothing
	Set objTextFile = Nothing
End Sub
Sub getInfo(pCurrentDir,s)
dim aItem
For Each aItem In pCurrentDir.Files
 'wscript.Echo aItem.Name
 If LCase(Right(Cstr(aItem.Name), 3)) = "iso" Then
 c=c+1
 if s=1 then wscript.echo "item " & c & chr(9) & aItem.name 
	dim path
	path=replace(replace(aItem.path,strweb,""),"\","/")
	path=replace(path,"#","%23")
	path=replace(path," ","%20")
	if s=2 then 
		wscript.echo ":" & c 
		wscript.echo "kernel ${boot-url}/memdisk iso"
		wscript.echo "initrd ${boot-url}/" & path
		wscript.echo "boot"
	end if
 End If
Next
For Each aItem In pCurrentDir.SubFolders
 'wscript.Echo aItem.Name & " passing recursively"
 call getInfo(aItem,s)
Next
End Sub
'************************************************
dim fso
Set FSO = CreateObject("Scripting.FileSystemObject")
dim ScriptPath
ScriptPath= Wscript.ScriptFullName
dim objFile
Set objFile = FSO.GetFile(ScriptPath)
dim ScriptFolder
ScriptFolder = FSO.GetParentFolderName(objFile) 
'wscript.echo "strFolder:" & strFolder
Include(ScriptFolder & "\ini.vbs")
dim CurrentDirectory
CurrentDirectory = fso.GetAbsolutePathName(".")
'wscript.echo "CurrentDirectory:" & CurrentDirectory
dim root
root= ReadIni( CurrentDirectory & "\config.ini", "dhcp", "root" )
'wscript.echo "root:" & root
dim strweb
if instr(root,"\")>0 then strweb = root
if instr(root,"\")=0 then strweb = CurrentDirectory & "\" & root
'wscript.echo "strweb:" & strweb
dim objDir
Set objDir = FSO.GetFolder(strweb)
'***************** lets generate the ipxe script **************
wscript.echo "#!ipxe"
wscript.echo "set boot-url http://${next-server}"
wscript.echo "set iscsi-server ${next-server}"
wscript.echo "set iqn iqn.2008-08.com.starwindsoftware:target1"
wscript.echo "set iscsi-target iscsi:${iscsi-server}::::${iqn}"
wscript.echo "set menu-timeout 5000"
wscript.echo "set submenu-timeout ${menu-timeout}"
wscript.echo "isset ${menu-default} || set menu-default exit"
wscript.echo ":start"
wscript.echo "menu Welcome to iPXE's Boot Menu"
'wscript.echo "item"
'wscript.echo "item --gap -- ------------------------- ISO ------------------------------"
dim c
c=0
call getInfo(objDir,1)
wscript.echo "item top back to top menu"
wscript.echo "choose --default exit --timeout 30000 target && goto ${target}"
c=0
call getInfo(objDir,2)
wscript.echo ":top chain menu-vbs.ipxe"
wscript.echo "goto start"
files/menu-php.ipxe
#!ipxe
set boot-url http://${next-server}
# Setup some basic convenience variables
set menu-timeout 5000
set submenu-timeout ${menu-timeout}
# Ensure we have menu-default set to something
isset ${menu-default} || set menu-default exit
######## MAIN MENU ###################
:start
menu Welcome to iPXE's Boot Menu
item
item sanboot_php look for iso files and boot via sanboot
item memdisk_php look for iso files and boot via memdisk
item wimboot_php look for wim files and boot via wimboot 
item --gap -- ------------------------------ Advanced ---------------------------------
item config Configure settings
item shell Enter iPXE shell
item reboot Reboot
item exit Exit (boot local disk)
choose --default exit --timeout 30000 target && goto ${target}
########## UTILITY ITEMS ####################
:shell
echo Type exit to get the back to the menu
shell
set menu-timeout 0
goto start
:failed
echo Booting failed, dropping to shell
goto shell
:reboot
reboot
:exit
exit
 
:config
config
goto start
###########################################################
:sanboot_php
chain ${boot-url}/sanboot.php?files// || goto failed
goto start 
:memdisk_php
chain ${boot-url}/memdisk.php?files// || goto failed
goto start 
:wimboot_php
chain ${boot-url}/wimboot.php || goto failed
#chain ${boot-url}/wimboot.php?files// || goto failed
goto start 
goto start
files/menu-vbs.ipxe
#!ipxe
#set boot-url http://${proxydhcp}/next-server
set boot-url http://${next-server}
# Setup some basic convenience variables
set menu-timeout 5000
set submenu-timeout ${menu-timeout}
# Ensure we have menu-default set to something
isset ${menu-default} || set menu-default exit
######## MAIN MENU ###################
:start
menu Welcome to iPXE's Boot Menu
item
item sanboot-iso Boot ISO via sanboot
item memdisk-iso Boot ISO via memdisk
item wimboot-wim	Boot WIM
item --gap -- ------------------------------ Advanced ---------------------------------
item config Configure settings
item shell Enter iPXE shell
item reboot Reboot
item exit Exit (boot local disk)
choose --default exit --timeout 30000 target && goto ${target}
########## UTILITY ITEMS ####################
:shell
echo Type exit to get the back to the menu
shell
set menu-timeout 0
goto start
:failed
echo Booting failed, dropping to shell
goto shell
:reboot
reboot
:exit
exit
:cancel
echo You cancelled the menu, dropping you to a shell
 
:config
config
goto start
 
:back
set submenu-timeout 0
clear submenu-default
goto start
########################################
:sanboot-iso
chain ${boot-url}/sanboot.vbs
goto start
:memdisk-iso
chain ${boot-url}/memdisk.vbs
goto start
:wimboot-wim
chain ${boot-url}/wimboot.vbs
goto start
goto start
files/menu.c32
files/menu.ipxe
#!ipxe
#set boot-url http://${proxydhcp}/next-server
set boot-url http://${next-server}
set iscsi-server ${next-server}
set iqn iqn.2008-08.com.starwindsoftware:target1
set iscsi-target iscsi:${iscsi-server}::::${iqn}
set nfs-server ${next-server}
set cifs-server //${next-server}
# Setup some basic convenience variables
set menu-timeout 5000
set submenu-timeout ${menu-timeout}
# Ensure we have menu-default set to something
isset ${menu-default} || set menu-default exit
######## MAIN MENU ###################
:start
menu Welcome to iPXE's Boot Menu
item
item --gap -- ------------------------- Utilities ------------------------------
#item bootsan Boot On San (${iscsi-target})
item bootaoe Boot On AOE (e0.0)
#item iscsi	setup, sanhook or sanboot iscsi
item iscsi	Boot On San
item pxelinux pxelinux
item grub4dos grub4dos
item grub2 grub2
#item grub_cd		boot to dvd (via grub4dos)
#item grub_startrom		boot to startrom.0 (via grub4dos)
item grub_floppy		boot floppy (via grub4dos)
item grub_hd0		boot to hd0 (via grub4dos)
item hdt hdt
#item netbootme	Netboot.Me
#item undi_dos undi_dos
item disk_util Disk Utilities
item winpe Live Systemes
item linux Install Linux Distros
item --gap -- ------------------------------ Advanced ---------------------------------
item config Configure settings
item shell Enter iPXE shell
item reboot Reboot
item exit Exit (boot local disk)
choose --default exit --timeout 30000 target && goto ${target}
########## UTILITY ITEMS ####################
:shell
echo Type exit to get the back to the menu
shell
set menu-timeout 0
goto start
:failed
echo Booting failed, dropping to shell
goto shell
:reboot
reboot
:exit
exit
:cancel
echo You cancelled the menu, dropping you to a shell
 
:config
config
goto start
 
:back
set submenu-timeout 0
clear submenu-default
goto start
################################ disk utilities
:disk_util
menu Disk Utilities
item disk Boot a disk img (memdisk)
item flash Flash Bios (memdisk)
item macrium Boot macrium linux (sanboot)
item grubfm Boot grubfm (sanboot)
item hbcd Boot hbcd (memdisk)
item partlogic Boot partlogic (memdisk)
item pmagic Boot pmagic (memdisk)
item systemrescuecd Boot systemrescuecd via HTTP
item gparted Boot gparted via http
item redobackup Boot redobackup via NFS 
item clonezilla Boot clonezilla via HTTP
item partition_wizard Boot Partition Wizard (memdisk)
item acronis Boot Acronis True Image 2013 (memdisk)
item back Back to top menu...
iseq ${menu-default} menu-recovery && isset ${submenu-default} && goto menu-recovery-timed ||
choose selected && goto ${selected} || goto start
:menu-recovery-timed
choose --timeout ${submenu-timeout} --default ${submenu-default} selected && goto ${selected} || goto start
:disk
initrd /images/disk.img
kernel /memdisk raw || goto failed
boot || goto failed
goto start
:flash
initrd ${boot-url}/images/5CJ977A.iso
kernel ${boot-url}/memdisk iso || goto failed
boot || goto failed
goto start
:macrium
sanboot --no-describe ${boot-url}/_iso/rescue.iso
goto start
:grubfm
sanboot --no-describe ${boot-url}/grubfm.iso
goto start
:gparted
kernel ${boot-url}/_ISO/gparted/vmlinuz boot=live config union=aufs noswap noprompt vga=788 fetch=${boot-url}/_ISO/gparted/filesystem.squashfs || goto failed
initrd ${boot-url}/_ISO/gparted/initrd.img || goto failed
boot || goto failed
goto start
:systemrescuecd
kernel ${boot-url}/_ISO/sysrcd-4.1.0/isolinux/rescue32 dodhcp netboot=${boot-url}/_ISO/sysrcd-4.1.0/sysrcd.dat || goto failed
#kernel ${boot-url}/_ISO/sysrcd-4.1.0/isolinux/rescue32 dodhcp netboot=http://192.168.1.248/sysrcd.dat || goto failed
#kernel ${boot-url}/_ISO/sysrcd-4.1.0/isolinux/rescue32 dodhcp nfsboot=${next-server}:/g/_ISO/sysrcd-4.1.0 || goto failed
initrd ${boot-url}/_ISO/sysrcd-4.1.0/isolinux/initram.igz || goto failed
boot || goto failed
goto start
:partlogic
initrd ${boot-url}/images/partlogic-0.71.img
kernel ${boot-url}/memdisk || goto failed
boot || goto failed
goto start
:pmagic
#sanboot ${boot-url}/images/pmagic/pmagic_2013_02_28.iso || goto failed #halts on "probing EDD"
#dhcp net0 #if chainloaded
#initrd ${boot-url}/images/pmagic/pmagic_2013_02_28.iso #last public iso
kernel ${boot-url}/memdisk iso || goto failed
initrd ${boot-url}/images/pmagic/pmagic_2014_04_28.iso
boot || goto failed
goto start
:partition_wizard
initrd ${boot-url}/_iso/pwhe8.iso
kernel ${boot-url}/memdisk iso || goto failed
boot || goto failed
goto start
:redobackup
kernel ${boot-url}/_ISO/redobackup/casper/vmlinuz boot=casper netboot=nfs nfsroot=${nfs-server}:/g/_ISO/redobackup
#kernel ${boot-url}/_ISO/redobackup/casper/vmlinuz boot=casper netboot=cifs nfsroot=${cifs-server}/PXE/redobackup NFSOPTS=-ouser=erwan,pass=xxxx,ro ip=dhcp ro
#kernel ${boot-url}/_ISO/redobackup/casper/vmlinuz boot=casper netboot=nfs #you then need to specify /g/_ISO/redobackup in option 17
initrd ${boot-url}/_ISO/redobackup/casper/initrd.lz
boot || goto failed
goto start
:clonezilla
initrd ${boot-url}/_ISO/clonezilla/live/initrd.img || goto failed
kernel ${boot-url}/_ISO/clonezilla/live/vmlinuz boot=live config noswap nolocales edd=on nomodeset vga=788 nosplash noprompt fetch=${boot-url}/_ISO/clonezilla/live/filesystem.squashfs || goto failed
boot || goto failed
goto start
:hbcd
#open iso with iso editor and remove pmagic to make it ligther
initrd ${boot-url}/images/hbcd152.iso
kernel ${boot-url}/memdisk iso raw || goto failed
boot || goto failed
goto start
:acronis
#open iso with iso editor and remove pmagic to make it ligther
initrd ${boot-url}/_iso/acronismedia.iso
kernel ${boot-url}/memdisk iso raw || goto failed
boot || goto failed
goto start
################################# winpe
:winpe
menu Boot WinPe
#item xpe Boot xpe
#item openthinclient Boot Openthinclient
#item puppy Boot puppy linux
item xpcli xpcli
item memdisk_winpe memdisk
item sanboot_winpe Boot winpe via sanboot 
item wimboot Boot winpe via wimboot
item startrom Boot startrom.0 (edit winnt.sif)
item ubuntu-live ubuntu-live (nfs)
#item ubuntu-live-ftp ubuntu-live (ftp)
item centos centos (ftp)
item ubuntu-cifs ubuntu-live (cifs)
item dsl Damn Small Linux
item grml grml (nfs)
#item archlinux archlinux
item mint mint (nfs)
item mint-cifs mint (cifs)
item back Back to top menu...
iseq ${menu-default} menu-recovery && isset ${submenu-default} && goto menu-recovery-timed ||
choose selected && goto ${selected} || goto start
:menu-recovery-timed
choose --timeout ${submenu-timeout} --default ${submenu-default} selected && goto ${selected} || goto start
:xpcli
initrd ${boot-url}/_images/xpcli.vhd
chain ${boot-url}/memdisk raw || goto failed 
goto start 
:wimboot
 kernel ${boot-url}/wimboot
 #initrd ${boot-url}/BOOTMGR BOOTMGR
 #initrd ${boot-url}/bootmgfw.efi	bootmgfw.efi
 iseq ${platform} pcbios && initrd -n bootmgr.exe ${boot-url}/BOOTMGR.EXE bootmgr.exe ||
 iseq ${platform} efi && initrd -n bootmgfw.efi ${boot-url}/bootmgfw.EFI bootmgfw.efi ||
 #initrd ${boot-url}/BOOT/BCD BCD
 #initrd ${boot-url}/EFI/MICROSOFT/BOOT/BCD BCD
 iseq ${platform} pcbios && initrd -n bcd ${boot-url}/BOOT/BCD bcd ||
 iseq ${platform} efi && initrd -n bcd ${boot-url}/EFI/MICROSOFT/BOOT/BCD bcd || 
 initrd ${boot-url}/BOOT/BOOT.SDI BOOT.SDI
 iseq ${platform} pcbios && initrd -n boot.wim ${boot-url}/SOURCES/X86/BOOT.WIM BOOT.WIM ||
 iseq ${platform} efi && initrd -n boot.wim ${boot-url}/SOURCES/x64/BOOT.WIM BOOT.WIM || 
 #initrd ${boot-url}/SOURCES/x86/BOOT.WIM BOOT.WIM
 #initrd ${boot-url}/SOURCES/x64/BOOT.WIM BOOT.WIM
 #initrd ${boot-url}/SOURCES/BOOT.WIM BOOT.WIM
 boot || goto failed
 goto start
 
:startrom
chain ${boot-url}/startrom.0 || goto failed 
goto start 
:xpe
initrd ${boot-url}/images/256_xpe.img
chain ${boot-url}/memdisk raw || goto failed 
goto start 
:memdisk_winpe
#initrd ${boot-url}/images/winpe_${buildarch}.iso
initrd ${boot-url}/images/winpe.iso
chain ${boot-url}/memdisk iso raw || goto failed #loads but halts after windows logo
goto start 
 
:sanboot_winpe
#sanboot --no-describe ${boot-url}/images/winpe_${buildarch}.iso || goto failed
sanboot --no-describe ${boot-url}/images/winpe.iso || goto failed
goto start 
:archlinux
kernel ${boot-url}/_ISO/archlinux/vmlinuz archisobasedir=arch archiso_http_srv=${boot-url}/_ISO/archlinux/ ip=dhcp
initrd ${boot-url}/_ISO/archlinux/archiso.img 
boot || goto failed
goto start
:mint-cifs
kernel ${boot-url}/_ISO/mint/casper/vmlinuz
showmounts toram root=/dev/cifs boot=casper netboot=cifs nfsroot=${cifs-server}/pxe/mint NFSOPTS=-ouser=test,pass=p@ssw0rd,ro ip=dhcp ro
initrd ${boot-url}/_ISO/mint/casper/initrd.lz
boot || goto failed
goto start
:mint
kernel /_ISO/mint/casper/vmlinuz root=/dev/nfs boot=casper netboot=nfs nfsroot=${nfs-server}:/g/_ISO/mint quiet splash
initrd /_ISO/mint/casper/initrd.lz
boot || goto failed
goto start
:ubuntu-cifs
#sec=ntlmssp ?
#works only with 12.10, not 13.04
kernel ${boot-url}/ubuntu.12.10/casper/vmlinuz showmounts toram root=/dev/cifs boot=casper netboot=cifs nfsroot=${cifs-server}/pxe/ubuntu.12.10 NFSOPTS=-ouser=test,pass=p@ssw0rd,ro ip=bootp ro
initrd ${boot-url}/ubuntu.12.10/casper/initrd.lz 
boot || goto failed
goto start
:ubuntu-live
kernel ${boot-url}/_ISO/ubuntu.13.04/casper/vmlinuz root=/dev/nfs boot=casper netboot=nfs nfsroot=${nfs-server}:/g/_ISO/ubuntu.13.04 quiet splash
initrd ${boot-url}/_ISO/ubuntu.13.04/casper/initrd.lz
boot || goto failed
goto start
:centos
kernel ${boot-url}/_ISO/centos/isolinux/vmlinuz0 root=/dev/ram0 ramdisk_size=100000 ksdevice=eth0 ip=dhcp url --url ${boot-url}/_ISO/centos/ ks=${boot-url}/_ISO/centos/centos.cfg
initrd ${boot-url}/_iso/centos/isolinux/initrd0.img
boot || goto failed
goto start
:puppy
kernel ${boot-url}/_ISO/puppy/vmlinuz PDEV1=rootfs init=/sbin/init ip=dhcp root=/dev/nfs rw nfsroot=${nfs-server}:/g/_ISO/puppy noapic acpi=off
initrd ${boot-url}/_ISO/puppy/initrd.gz
boot || goto failed
goto start
:grml
initrd ${boot-url}/_iso/grml/boot/grml32small/initrd.img
chain ${boot-url}/_iso/grml/boot/grml32small/vmlinuz root=/dev/nfs rw nfsroot=${nfs-server}:/g/_ISO/grml/live/grml32-small live-media-path=/ boot=live lang=us nomce apm=power-off noprompt noeject vga=791
 
:dsl
kernel ${boot-url}/images/dsl4410/linux24 ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=789 nomce noapic quiet nopcmcia noagp noswap base
initrd ${boot-url}/images/dsl4410/minirt24.gz
boot || goto failed
goto start
################################# linux
:linux
menu Install Linux
item ubuntu-installer-bionic		ubuntu-installer-bionic over internet (memdisk)
item ubuntu-installer-focal		ubuntu-installer-focal over internet (memdisk)
item debian-installer		debian-installer over internet (memdisk)
item centos-installer		centos-installer over internet (memdisk)
item opensuse-installer		opensuse-installer over internet (sanboot)
item fedora-installer		fedora-installer bfo (memdisk)
item debian-installer-sanboot	debian-installer-sanboot
item ubuntu-installer-sanboot	ubuntu-installer-sanboot
item back Back to top menu...
iseq ${menu-default} menu-recovery && isset ${submenu-default} && goto menu-recovery-timed ||
choose selected && goto ${selected} || goto start
:menu-recovery-timed
choose --timeout ${submenu-timeout} --default ${submenu-default} selected && goto ${selected} || goto start
#http://no.archive.ubuntu.com/ubuntu/dists/
#https://doc.ubuntu-fr.org/versions
:ubuntu-installer-bionic
cpuid --ext 29 && set arch amd64 || set arch i386
initrd http://no.archive.ubuntu.com/ubuntu/dists/bionic/main/installer-${arch}/current/images/netboot/mini.iso
chain ${boot-url}/memdisk iso || goto failed
#or
#kernel http://no.archive.ubuntu.com/ubuntu/dists/bionic/main/installer-${arch}/current/images/netboot/ubuntu-installer/${arch}/linux
#initrd http://no.archive.ubuntu.com/ubuntu/dists/bionic/main/installer-${arch}/current/images/netboot/ubuntu-installer/${arch}/initrd.gz
boot || goto failed
goto start
:ubuntu-installer-focal
initrd http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso
chain ${boot-url}/memdisk iso || goto failed
boot || goto failed
goto start
:debian-installer
cpuid --ext 29 && set arch amd64 || set arch i386
#sanboot --no-describe --keep ${boot-url}/debian-installer/i386/mini.iso || goto failed
#or
initrd http://debian.mirrors.ovh.net/debian/dists/stable/main/installer-${arch}/current/images/netboot/mini.iso
chain ${boot-url}/memdisk iso raw || goto failed
#or
#kernel http://debian.mirrors.ovh.net/debian/dists/stable/main/installer-${arch}/current/images/netboot/debian-installer/${arch}/linux
#initrd http://debian.mirrors.ovh.net/debian/dists/stable/main/installer-${arch}/current/images/netboot/debian-installer/${arch}/initrd.gz
:centos-installer
initrd ${boot-url}/centos-installer/i386/CentOS-6.4-i386-netinstall.iso
chain ${boot-url}/memdisk iso || goto failed
#kernel ${boot-url}/centos-installer/i386/vmlinuz
#initrd ${boot-url}/centos-installer/i386/initrd.img
#boot
goto start
:opensuse-installer
sanboot --no-describe --keep ${boot-url}/opensuse-installer/openSUSE-12.3-NET-i586.iso || goto failed
#initrd ${boot-url}/opensuse-installer/openSUSE-12.3-NET-i586.iso
#chain ${boot-url}/memdisk iso raw || goto failed
goto start
:fedora-installer
#sanboot --no-describe --keep ${boot-url}/fedora-installer/i386/Fedora-18-i386-netinst.iso || goto failed
#or
#initrd ${boot-url}/fedora-installer/i386/Fedora-18-i386-netinst.iso
#chain ${boot-url}/memdisk iso || goto failed
#or
#kernel ${boot-url}/fedora-installer/i386/vmlinuz
#initrd ${boot-url}/fedora-installer/i386/initrd.img
#boot
kernel ${boot-url}/memdisk
initrd ${boot-url}/fedora-installer/i386/bfo.dsk
boot || goto failed
goto start
:debian-installer-sanboot
cpuid --ext 29 && set arch amd64 || set arch i386
#sanboot http://ftp.fr.debian.org/debian/dists/Debian9.1/main/installer-amd64/current/images/netboot/mini.iso
sanboot http://ftp.fr.debian.org/debian/dists/stable/main/installer-${arch}/current/images/netboot/mini.iso
boot || goto failed
:ubuntu-installer-sanboot
#sanboot http://archive.ubuntu.com/ubuntu/dists/zesty/main/installer-amd64/current/images/netboot/mini.iso
sanboot http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/mini.iso
boot || goto failed
######################## other items
:pxelinux
#dhcp
dhcp net0
set 210:string tftp://${next-server}/
#set 210:string tftp://${dhcp-server}/
chain ${210:string}pxelinux.0 || goto failed
goto start
#use menu.ipxe as alt boot file name, not http://${dhcp-server}/menu.ipxe
:grub4dos
dhcp net0
#set netX/next-server 192.168.1.100
set 210:string tftp://${dhcp-server}/
chain ${210:string}grldr || goto failed
goto start
:grub2
#needs bootp with proxydhcp disabled unless you reset next-server
dhcp net0
#set 210:string tftp://${next-server}/
set netX/next-server ${next-server}
set 210:string ${boot-url}/
iseq ${platform} pcbios && chain ${210:string}grub.img ||
iseq ${platform} efi && chain ${210:string}grubx64.efi ||
goto start
:grub_cd
chain ${boot-url}/grub.exe --config-file="cdrom --init;map --hook;root (cd0);chainloader (cd0)" || goto failed
goto start
:grub_startrom
chain ${boot-url}/grub.exe keeppxe --config-file="pxe detect;chainloader --force --raw (pd)/startrom.0" || goto failed
goto start
:grub_floppy
chain ${boot-url}/grub.exe keeppxe --config-file="map --mem (pd)/images/98.ima (fd0);map --hook;root (fd0);chainloader+1;boot" || goto failed
goto start
:grub_hd0
chain ${boot-url}/grub.exe --config-file="rootnoverify (hd0);chainloader +1" || goto failed
goto start
:undi_dos
kernel ${boot-url}/memdisk keeppxe ACTION=install NETSHARE=sharename 
initrd ${boot-url}/images/undis3c.imz
boot || goto failed
goto start
:bootsan
#sanhook --drive 0x81 ${root-path} #hook a drive
#sanboot --no-describe iscsi:10.0.4.1:::1:iqn.2010-04.org.ipxe.dolphin:liveinstall #boot from another media
dhcp net0
set keep-san 1
#sanboot iscsi:${iscsi-server}:tcp:3260:0:${iqn}
sanboot iscsi:${iscsi-server}::::${iqn}
#boot || goto failed
goto start
:bootaoe
dhcp net0
set keep-san 1
sanboot aoe:e0.0
#boot || goto failed
goto start
:hdt
sanboot --no-describe ${boot-url}/_iso/hdt-0.5.2.iso || goto failed
goto start
:netbootme
imgfree
chain http://static.netboot.me/gpxe/netbootme.kpxe
#######################################################
:iscsi
menu iscsi
item define_ define iscsi-target
item show_ show iscsi-target
item sanhook_ sanhook ${iscsi-target}
item sanhook_nodescribe sanhook --no-describe ${iscsi-target}
item sanboot_ sanboot --keep ${iscsi-target}
item back Back to top menu...
iseq ${menu-default} menu-recovery && isset ${submenu-default} && goto menu-recovery-timed ||
choose selected && goto ${selected} || goto start
:menu-recovery-timed
choose --timeout ${submenu-timeout} --default ${submenu-default} selected && goto ${selected} || goto start
:define_
echo -n iscsi-target: && read iscsi-target
goto start
:show_
echo ${iscsi-target}
prompt a key to continue
goto start
:sanhook_
sanhook ${iscsi-target} || goto failed
prompt a key to continue
goto start
:sanhook_nodescribe
sanhook --no-describe ${iscsi-target} || goto failed
prompt a key to continue
goto start
:sanboot_
sanboot --keep ${iscsi-target} || goto failed
goto start
goto start
#######################################################
 
#Memdisk via iPXE vs. ISO Boot HTTP via iPXE:
#
#Memdisk via iPXE does the following things: 
#1) Emulates a CD-ROM allowing a Network-Based Install. 
#2) Masks actual system RAM because the environment memdisk creates "hides" a certain amount of RAM to allow for the ISO - This amount is generally 2x ISO Size (Maximum 2GB - I think).
#3) Preloads the ISO into memory before executing the ISO. This slows boot time a bit.
#
#ISO Boot over HTTP via iPXE:
#1) Does not emulate a CD-ROM. It is a Block Device.
#2) Does not mask system RAM.
#3) Executes as it reads: Faster than memdisk and no "preloading" of the ISO is required.
#4) Does not hold the ISO as a readable device once the ISO is loaded unless loaded into the iBFT.
files/menuconf/bootutil.conf
label grub
MENU LABEL GRUB
kernel memdisk
append initrd=images\grub.img
label supergrub
MENU LABEL SUPERGRUB
kernel memdisk
append initrd=images\sgrub.img
label AllInOne
MENU LABEL AllInOne
kernel memdisk
append initrd=images\allinone.img
label GAG
MENU LABEL GAG
kernel memdisk
append initrd=images\gag.dsk
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/centos.conf
label centos
kernel centos-installer/vmlinuz
append initrd=centos-installer/initrd.img
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/debian.conf
DISPLAY debian-installer/i386/boot-screens/boot.txt
F1 debian-installer/i386/boot-screens/f1.txt
F2 debian-installer/i386/boot-screens/f2.txt
F3 debian-installer/i386/boot-screens/f3.txt
F4 debian-installer/i386/boot-screens/f4.txt
F5 debian-installer/i386/boot-screens/f5.txt
F6 debian-installer/i386/boot-screens/f6.txt
F7 debian-installer/i386/boot-screens/f7.txt
F8 debian-installer/i386/boot-screens/f8.txt
F9 debian-installer/i386/boot-screens/f9.txt
F0 debian-installer/i386/boot-screens/f10.txt
DEFAULT install
LABEL install
	kernel debian-installer/i386/linux
	append vga=normal initrd=debian-installer/i386/initrd.gz -- 
LABEL linux
	kernel debian-installer/i386/linux
	append vga=normal initrd=debian-installer/i386/initrd.gz -- 
LABEL expert
	kernel debian-installer/i386/linux
	append priority=low vga=normal initrd=debian-installer/i386/initrd.gz -- 
LABEL rescue
	kernel debian-installer/i386/linux
	append vga=normal initrd=debian-installer/i386/initrd.gz rescue/enable=true -- 
LABEL auto
	kernel debian-installer/i386/linux
	append auto=true priority=critical vga=normal initrd=debian-installer/i386/initrd.gz -- 
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default	
PROMPT 1
TIMEOUT 0
files/menuconf/diskutil.conf
ALLOWOPTIONS 0
PROMPT 0
MENU TITLE Kiwi Menu - Utilitaires disques dur
LABEL hddMaxtor
	MENU LABEL Maxtor
	kernel memdisk
	append initrd=images/hdd/hddMaxtor.imz
LABEL hddIBMhita
	MENU LABEL IBM - Hitachi
	kernel memdisk
	append initrd=images/hdd/hddIBMhita.imz
LABEL hddFujitsu
	MENU LABEL Fujitsu
	kernel memdisk
	append initrd=images/hdd/hddFujitsu.imz
LABEL hddSamsung
	MENU LABEL Samsung
	kernel memdisk
	append initrd=images/hdd/hddSamsung.imz
	
LABEL hddWD
	MENU LABEL Western Digital
	kernel memdisk
	append initrd=images/hdd/hddWD.imz bigraw
LABEL hddSeagate
	MENU LABEL Seagate
	kernel memdisk
	append initrd=images/hdd/hddSeagate.imz
	
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/dsl.conf
label dsl4410
KERNEL images/dsl4410/linux24
APPEND ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 initrd=images/dsl4410/minirt24.gz nomce noapic quiet BOOT_IMAGE=knoppix
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/fc6.conf
DEFAULT install
LABEL install
	kernel fedora-installer/i386/vmlinuz
	append initrd=fedora-installer/i386/initrd.img
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default	
PROMPT 1
TIMEOUT 0
files/menuconf/floppies.conf
ALLOWOPTIONS 0
PROMPT 0
MENU TITLE Floppies
LABEL Menuet32
	MENU LABEL Menuet32
	kernel memdisk
	append initrd=images/M32-084.IMG
LABEL XPQuick
	MENU LABEL XPQuick
	kernel memdisk
	append initrd=images/xpquick.ima	
LABEL ghostUSB
	MENU LABEL ghostUSB
	kernel memdisk
	append initrd=images/ghostUSB.img
LABEL Bart
	MENU LABEL Bart
	kernel memdisk
	append initrd=images/bart.ima
LABEL DosW98
	MENU LABEL DosW98
	kernel memdisk
	append initrd=images/98.ima
	
LABEL Undi
 MENU LABEL Bootdisk with keeppxe Option
 kernel memdisk
	#arguments can get retrieved thru getargs.com
 append keeppxe initrd=images/undis3c.imz ACTION=install NETSHARE=sharename
 
 
label LinuxBoot
 kernel images/linuxboot/bzImage
# Add options (z_user=..., z_path=..., etc.) to this line.
 append initrd=images/linuxboot/initrd.gz z_user=guest z_pass=guest z_path=\\192.168.1.100\_partage 	
	
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/freebsd.conf
default install-freebsd
LABEL install-freebsd
 KERNEL memdisk
 APPEND initrd=images/boot.flp 
files/menuconf/gpxe.conf
LABEL GPXE Kernel
	MENU LABEL GPXE Kernel
	kernel GPXE.KRN
LABEL GPXE Kernel and a script
	MENU LABEL GPXE Kernel
	kernel GPXE.KRN
	append initrd=http.gpxe
	
#need for gpxelinux.0
LABEL DosW98
	MENU LABEL DosW98 Http
	kernel http://192.168.1.100/memdisk
	append initrd=http://192.168.1.100/images/98.ima
	
#need for gpxelinux.0	
label slitaz
	kernel http://192.168.1.100/images/slitaz/bzImage
	append initrd=http://192.168.1.100/images/slitaz/rootfs.gz rw root=/dev/null vga=normal lang=fr kmap=be	
#need for gpxelinux.0
#format for root-path "iscsi:"<servername>":"<protocol>":"<port>":"<LUN>":"<targetname>
label san-booting-example-1
 kernel sanboot.c32
 append iscsi:192.168.1.100:tcp:3260:0:test
 
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default		
files/menuconf/install.conf
LABEL ubuntu
	MENU LABEL > install ubuntu
	KERNEL menu.c32
	APPEND menuconf/ubuntu.conf
	
LABEL suse
	MENU LABEL > install OpenSuse
	KERNEL menu.c32
	APPEND menuconf/suse.conf
	
LABEL centos
	MENU LABEL > install Centos
	KERNEL menu.c32
	APPEND menuconf/centos.conf	
LABEL debian
	MENU LABEL > install Debian
	KERNEL menu.c32
	APPEND menuconf/debian.conf
	
LABEL fedora
	MENU LABEL > install Fedora
	KERNEL menu.c32
	APPEND menuconf/fc6.conf	
	
label android_live
	 MENU LABEL > Android Live
 kernel /_ISO/android.44/kernel
 append androidboot.hardware=android_x86 video=-16 ip=dhcp root=/dev/nfs rw nfsroot=192.168.1.100:/_ISO/android.44/ DEBUG=1 initrd=/_ISO/android.44/initrd.img	
 
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default	
files/menuconf/ipxe.conf
label ipxe
 menu label iPXE loading menu.ipxe
 kernel ipxe.lkrn
 append initrd=menu.ipxe
 
label ipxe without any parameter
 menu label iPXE without any
parameter
 kernel ipxe.lkrn
 
 label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default		
files/menuconf/livecds.conf
label bpe
MENU LABEL BartPE CD
KERNEL startrom.0
label xpe
KERNEL /xpe/startrom.n12
label winpe
KERNEL /winpe3/pxeboot.n12
label SDI
kernel sdi.c32 http://192.168.1.100/sdi/xpe.sdi
#label NLITE
#kernel sdi.c32 http://192.168.1.100/sdi/nlite.sdi
label puppy216
kernel images/puppy/vmlinuz
append root=/dev/ram0 initrd=images/puppy/initrd.gz
LABEL grml09
menu LABEL grml_big (nfs)
KERNEL images/grml/linux26
APPEND ramdisk_size=16384 root=/dev/ram0 rw init=/etc/init nfsdir=192.168.1.252:/volume1/public/grml09 nodhcp noprompt noeject noautoconfig apm=power-off nomce initrd=images/grml/minirt26.gz vga=791 ssh=123
label slax
kernel images/slax/vmlinuz
append tftpmoduleslst=images/slax/modules.lst max_loop=255 initrd=images/slax/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw
LABEL dsl
 KERNEL menu.c32
 APPEND menuconf/dsl.conf 
 
LABEL finnix
KERNEL images/finnix/linux
APPEND apm=power-off vga=791 initrd=images/finnix/minirt quiet nfsroot=192.168.1.100:/pub/finnix nfsif=eth0 nfsip=192.168.1.40 nfsnetmask=255.255.255.0 nfsvers=2
LABEL xpud
KERNEL images/xpud/boot/xpud noisapnp quiet
APPEND initrd=images/xpud/opt/media lang=en kmap=us 
LABEL 7pe
KERNEL memdisk
APPEND iso raw initrd=http://192.168.1.100/images/7pe_x86.iso
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/part.conf
label partlogic
MENU LABEL partlogic
kernel memdisk
append initrd=images\partlogic-0.69.img
label PQMagic
MENU LABEL PQMagic
kernel memdisk
append initrd=images\pqm.ima
label Clonezilla Live
MENU LABEL Clonezilla Live
kernel /images/clonezilla/vmlinuz1
append initrd=/images/clonezilla/initrd1.img boot=live union=aufs noswap noprompt vga=788 fetch=http://192.168.1.100/images/clonezilla/filesystem.squashfs
 
label Parted Magic 
 kernel /_iso/pmagic/bzImage
 append initrd=/_iso/pmagic/PMAGIC_2014_01_04.SQFS load_ramdisk=1 prompt_ramdisk=0 rw sleep=10 max_loop=512
label Parted Magic memdisk + http
KERNEL memdisk
APPEND iso initrd=http://192.168.1.100/_ISO/pmagic_2014_01_04.iso
label _Parted Magic memdisk + http
KERNEL memdisk
APPEND iso initrd=http://192.168.1.100/images/pmagic/pmagic_2013_02_28.iso
 
label GParted Live
MENU LABEL GParted Live
kernel http://192.168.1.100/images/gparted/live/vmlinuz
append initrd=http://192.168.1.100/images/gparted/live/initrd.img boot=live union=aufs noswap noprompt vga=788 fetch=http://192.168.1.100/images/gparted/live/filesystem.squashfs
 
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/rescue.conf
DEFAULT menu.c32
PROMPT 0
MENU TITLE RIPLinuX
LABEL Boot Linux rescue system!
KERNEL images/riplinux/kernel
APPEND vga=normal initrd=images/riplinux/rootfs.cgz root=/dev/ram0 rw
LABEL Boot Linux rescue system! (skip keymap prompt)
KERNEL images/riplinux/kernel
APPEND vga=normal nokeymap initrd=images/riplinux/rootfs.cgz root=/dev/ram0 rw
LABEL Boot Linux rescue system to X!
KERNEL images/riplinux/kernel
APPEND vga=normal xlogin initrd=images/riplinux/rootfs.cgz root=/dev/ram0 rw
LABEL Boot Linux rescue system to X! (skip keymap prompt)
KERNEL images/riplinux/kernel
APPEND vga=normal xlogin nokeymap initrd=images/riplinux/rootfs.cgz root=/dev/ram0 rw
LABEL Boot MBR on first hard drive!
KERNEL chain.c32
APPEND hd0 0
LABEL Boot partition #1 on first hard drive!
KERNEL chain.c32
APPEND hd0 1
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/suse.conf
DEFAULT linux
label linux
 kernel opensuse-installer/linux
 append initrd=opensuse-installer/initrd splash=silent showopts
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
PROMPT 1
TIMEOUT 0
files/menuconf/sysutils.conf
LABEL memtest
MENU LABEL Mem^test86 3.2
kernel images/mem/memtest
LABEL memtestp
MENU LABEL MemTest86^+ 1.65
kernel images/mem/memtestp
label ntpasswd
MENU LABEL ntpasswd
kernel images/ntpassword/vmlinuz
append rw vga=1 init=/linuxrc initrd=images/ntpassword/initrd.cgz,images/ntpassword/scsi.cgz
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
files/menuconf/ubuntu.conf
DISPLAY ubuntu-installer/i386/boot-screens/boot.txt
F1 ubuntu-installer/i386/boot-screens/f1.txt
F2 ubuntu-installer/i386/boot-screens/f2.txt
F3 ubuntu-installer/i386/boot-screens/f3.txt
F4 ubuntu-installer/i386/boot-screens/f4.txt
F5 ubuntu-installer/i386/boot-screens/f5.txt
F6 ubuntu-installer/i386/boot-screens/f6.txt
F7 ubuntu-installer/i386/boot-screens/f7.txt
F8 ubuntu-installer/i386/boot-screens/f8.txt
F9 ubuntu-installer/i386/boot-screens/f9.txt
F0 ubuntu-installer/i386/boot-screens/f10.txt
DEFAULT install
LABEL install
	kernel ubuntu-installer/i386/linux
	append vga=normal initrd=ubuntu-installer/i386/initrd.gz --
LABEL linux
	kernel ubuntu-installer/i386/linux
	append vga=normal initrd=ubuntu-installer/i386/initrd.gz --
LABEL server
	kernel ubuntu-installer/i386/linux
	append base-installer/kernel/linux/extra-packages-2.6= tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=normal initrd=ubuntu-installer/i386/initrd.gz --
LABEL expert
	kernel ubuntu-installer/i386/linux
	append priority=low vga=normal initrd=ubuntu-installer/i386/initrd.gz --
LABEL server-expert
	kernel ubuntu-installer/i386/linux
	append base-installer/kernel/linux/extra-packages-2.6= tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false priority=low vga=normal initrd=ubuntu-installer/i386/initrd.gz --
LABEL rescue
	kernel ubuntu-installer/i386/linux
	append vga=normal initrd=ubuntu-installer/i386/initrd.gz rescue/enable=true --
label up
MENU LABEL ..
kernel menu.c32
append pxelinux.cfg/default
PROMPT 1
TIMEOUT 0
files/pxelinux.0
files/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
ALLOWOPTIONS 0
TIMEOUT 100
#NOESCAPE 1
#MENU SHIFTKEY 1
MENU TITLE PXE Boot Menu
LABEL local
MENU LABEL Local Boot
MENU DEFAULT
localboot -1
#The argument 0 means perform a normal boot. 
#The argument 4 will perform a local boot with the Universal Network Driver Interface (UNDI) driver still resident in memory. Finally, 
#the argument 5 will perform a local boot with the entire PXE stack, including the UNDI driver, still resident in memory
#The special value -1 causes ISOLINUX to report failure to the BIOS, which, on recent BIOSes, should mean that the next boot device in the boot sequence should be activated.
LABEL floppies
	MENU LABEL > Floppies
	KERNEL menu.c32
	APPEND menuconf/floppies.conf
LABEL bootutils
	MENU LABEL > Utilitaires de ^boot
	KERNEL menu.c32
	APPEND menuconf/bootutil.conf
LABEL Install
	MENU LABEL > Install CD's
	KERNEL menu.c32
	APPEND menuconf/install.conf
	
#LABEL hddUtils
#	MENU LABEL > Utilitaires de ^disques dur
#	KERNEL menu.c32
#	APPEND menuconf/diskutil.conf
	
LABEL part
 MENU LABEL > Partition Tools
 KERNEL menu.c32
 APPEND menuconf/part.conf 
LABEL sysUtils
 MENU LABEL > Utilitaires ^systemes
 KERNEL menu.c32
 APPEND menuconf/sysutils.conf 
LABEL LiveCDs
 MENU LABEL > Live CDs
 KERNEL menu.c32
 APPEND menuconf/LiveCDs.conf 
 
LABEL Rescue
 MENU LABEL > Rescue
 KERNEL menu.c32
 APPEND menuconf/rescue.conf 
 
LABEL gPXE
 MENU LABEL > gPXE
 KERNEL menu.c32
 APPEND menuconf/gpxe.conf 
 
LABEL iPxe
 MENU LABEL > ipxe
 KERNEL menu.c32
 APPEND menuconf/ipxe.conf 
LABEL startrom.0
 MENU LABEL > startrom.0
 KERNEL startrom.0
	
LABEL pxeboot.0
 MENU LABEL > pxeboot.0
 KERNEL pxeboot.0	
 
label reboot
MENU LABEL ^Redemarrer
kernel reboot.c32
label shutdown
MENU LABEL ^Eteindre
kernel halt.c32
files/reboot.c32
files/reboot.com
files/sanboot.c32
files/sanboot.php
<?php
#you can use mklink /j link c:\xxx\target to create a junction in your hosting folder
#will accept an absolute path or relative path 
#ex : c:/_quickpe or _pxe/quickpe - use // at the end of the path to include only dirs below the target
echo "#!ipxe\n";
echo "set boot-url http://\${next-server}\n";
echo ":start\necho Boot menu\nmenu Selection\n";
if ($argc>1) {$root = $argv[1];}
if ($root=="") {
	$ini = parse_ini_file("config.ini");
	#current directory + root variable from config.ini
	$root=getcwd()."/".$ini['root']."//";
	#echo $root."\n";
}
$directory = new RecursiveDirectoryIterator($root);
$display = Array ( 'iso' );
$count = 0;
foreach(new RecursiveIteratorIterator($directory) as $file)
{
 if (in_array(strtolower(array_pop(explode('.', $file))), $display))
 echo "item ". $count . " " . array_pop(explode("/", $file)) . "\n";
 $count += 1;
}
echo "item back back\n";
echo "choose os && goto \${os}\n";
$count = 0;
foreach(new RecursiveIteratorIterator($directory) as $file)
{
 if (in_array(strtolower(array_pop(explode('.', $file))), $display)){
		$filename= array_pop(explode("/", $file));
		$filename = ltrim($filename, chr(92)); 		
		#$pos = strpos($file, ':');
		#if ($pos !== false) {
		##absolute path
		#echo ":". $count ."\nsanboot \${boot-url}/". substr($file,3) . "\ngoto start\n";	
		#	} else {
		##relative path
		#echo ":". $count ."\nsanboot \${boot-url}/". substr($file,0) . "\ngoto start\n";		
		#}
		echo ":". $count ."\nsanboot --no-describe \${boot-url}/".$filename. "\ngoto start\n";		
}
		$count += 1;
}
echo ":back\nchain menu-php.ipxe\n";
?>
files/sanboot.vbs
Option Explicit 
on error resume next
' ********************* functions ***********************
Sub Include (strFile)
	'Create objects for opening text file
	dim objFSO
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	dim objTextFile
	Set objTextFile = objFSO.OpenTextFile(strFile, 1)
	'Execute content of file.
	ExecuteGlobal objTextFile.ReadAll
	'CLose file
	objTextFile.Close
	'Clean up
	Set objFSO = Nothing
	Set objTextFile = Nothing
End Sub
Sub getInfo(pCurrentDir,s)
dim aItem
For Each aItem In pCurrentDir.Files
 'wscript.Echo aItem.Name
 If LCase(Right(Cstr(aItem.Name), 3)) = "iso" Then
 c=c+1
 if s=1 then wscript.echo "item " & c & chr(9) & aItem.name 
	dim path
	path=replace(replace(aItem.path,strweb,""),"\","/")
	path=replace(path,"#","%23")
	path=replace(path," ","%20")
	if s=2 then wscript.echo ":" & c & chr(9) & "sanboot --no-describe ${boot-url}" & path
 End If
Next
For Each aItem In pCurrentDir.SubFolders
 'wscript.Echo aItem.Name & " passing recursively"
 call getInfo(aItem,s)
Next
End Sub
'************************************************
dim fso
Set FSO = CreateObject("Scripting.FileSystemObject")
dim ScriptPath
ScriptPath= Wscript.ScriptFullName
dim objFile
Set objFile = FSO.GetFile(ScriptPath)
dim ScriptFolder
ScriptFolder = FSO.GetParentFolderName(objFile) 
'wscript.echo "strFolder:" & strFolder
Include(ScriptFolder & "\ini.vbs")
dim CurrentDirectory
CurrentDirectory = fso.GetAbsolutePathName(".")
'wscript.echo "CurrentDirectory:" & CurrentDirectory
dim root
root= ReadIni( CurrentDirectory & "\config.ini", "dhcp", "root" )
'wscript.echo "root:" & root
dim strweb
if instr(root,"\")>0 then strweb = root
if instr(root,"\")=0 then strweb = CurrentDirectory & "\" & root
'wscript.echo "strweb:" & strweb
dim objDir
Set objDir = FSO.GetFolder(strweb)
'***************** lets generate the ipxe script **************
wscript.echo "#!ipxe"
wscript.echo "set boot-url http://${next-server}"
wscript.echo "set iscsi-server ${next-server}"
wscript.echo "set iqn iqn.2008-08.com.starwindsoftware:target1"
wscript.echo "set iscsi-target iscsi:${iscsi-server}::::${iqn}"
wscript.echo "set menu-timeout 5000"
wscript.echo "set submenu-timeout ${menu-timeout}"
wscript.echo "isset ${menu-default} || set menu-default exit"
wscript.echo ":start"
wscript.echo "menu Welcome to iPXE's Boot Menu"
'wscript.echo "item"
'wscript.echo "item --gap -- ------------------------- ISO ------------------------------"
dim c
c=0
call getInfo(objDir,1)
wscript.echo "item top back to top menu"
wscript.echo "choose --default exit --timeout 30000 target && goto ${target}"
c=0
call getInfo(objDir,2)
wscript.echo ":top chain menu-vbs.ipxe"
wscript.echo "goto start"
files/sdi.c32
files/wimboot
files/wimboot.252
files/wimboot.260
files/wimboot.272
files/wimboot.i386
files/wimboot.ipxe
#!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}
 kernel ${boot-url}/wimboot
 initrd ${boot-url}/BOOTMGR BOOTMGR
 initrd ${boot-url}/BOOT/BCD BCD
 initrd ${boot-url}/BOOT/BOOT.SDI BOOT.SDI
 initrd ${boot-url}/SOURCES/BOOT.WIM BOOT.WIM
 boot
files/wimboot.php
<?php
#you can use mklink /j link c:\xxx\target to create a junction in your hosting folder
#will accept an absolute path or relative path 
#ex : c:/_quickpe or _pxe/quickpe - use // at the end of the path to include only dirs below the target
echo "#!ipxe\n";
echo "set boot-url http://\${next-server}\n";
echo ":start\necho Boot menu\nmenu Selection\n";
if ($argc>1) {$root = $argv[1];}
if ($root=="") {
	$ini = parse_ini_file("config.ini");
	#current directory + root variable from config.ini
	$root=getcwd()."/".$ini['root']."//";
	#echo $root."\n";
}
$directory = new RecursiveDirectoryIterator($root);
$display = Array ( 'wim' );
$count = 0;
foreach(new RecursiveIteratorIterator($directory) as $file)
{
 if (in_array(strtolower(array_pop(explode('.', $file))), $display))
 echo "item ". $count . " " . array_pop(explode("/", $file)) . "\n";
 $count += 1;
}
echo "item back back\n";
echo "choose os && goto \${os}\n";
$count = 0;
foreach(new RecursiveIteratorIterator($directory) as $file)
{
 if (in_array(strtolower(array_pop(explode('.', $file))), $display)){
		$filename= array_pop(explode("/", $file));
		$filename = ltrim($filename, chr(92)); 
		echo ":". $count."\n";
		#use the below if you want to attach a drive to install windows
		#echo "sanhook --drive 0x86 iscsi:\${next-server}::::iqn-1991-05.com.microsoft:target1/n";
		echo "kernel \${boot-url}/wimboot\n";
		#use the below if you want to launch windows install via script rather than manually
		#if the below do not exist, it is fine? seems not->bac cpio magic
		#echo "initrd \${boot-url}/winpeshl.ini winpeshl.ini ||\n";
		#echo "initrd \${boot-url}/install.bat install.bat ||\n";
		echo "iseq \${platform} pcbios && initrd -n bootmgr.exe \${boot-url}/BOOTMGR.EXE bootmgr.exe ||\n";		
		echo "iseq \${platform} efi && initrd -n bootx64.efi \${boot-url}/EFI/BOOT/BOOTX64.EFI bootx64.efi ||\n";				
		#echo "initrd \${boot-url}/BOOTMGR.EXE bootmgr.exe\n";				
		echo "iseq \${platform} pcbios && initrd -n bcd \${boot-url}/BOOT/BCD bcd ||\n";		
		echo "iseq \${platform} efi && initrd -n bcd \${boot-url}/EFI/MICROSOFT/BOOT/BCD bcd ||\n";	
		#echo "initrd \${boot-url}/BOOT/BCD bcd\n";		
		echo "initrd -n boot.sdi \${boot-url}/BOOT/BOOT.SDI boot.sdi\n";	
		echo "initrd -n boot.wim \${boot-url}/".$filename." boot.wim\n";
		echo "boot\n";
}
		$count += 1;
}
echo ":back\nchain menu-php.ipxe\n";
?>
files/wimboot.vbs
Option Explicit 
on error resume next
' ********************* functions ***********************
Sub Include (strFile)
	'Create objects for opening text file
	dim objFSO
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	dim objTextFile
	Set objTextFile = objFSO.OpenTextFile(strFile, 1)
	'Execute content of file.
	ExecuteGlobal objTextFile.ReadAll
	'CLose file
	objTextFile.Close
	'Clean up
	Set objFSO = Nothing
	Set objTextFile = Nothing
End Sub
Sub getInfo(pCurrentDir,s)
dim aItem
For Each aItem In pCurrentDir.Files
 'wscript.Echo aItem.Name
 If LCase(Right(Cstr(aItem.Name), 3)) = "wim" Then
 c=c+1
 if s=1 then wscript.echo "item " & c & chr(9) & replace(replace(aItem.path,strweb,""),"\","/") 
	dim path
	path=replace(replace(aItem.path,strweb,""),"\","/")
	path=replace(path,"#","%23")
	path=replace(path," ","%20")
	if s=2 then 
		wscript.echo ":" & c 
		wscript.echo "kernel ${boot-url}/wimboot"
		wscript.echo "iseq ${platform} pcbios && initrd -n bcd ${boot-url}/BOOT/BCD bcd ||"		
		wscript.echo "iseq ${platform} efi && initrd -n bcd ${boot-url}/EFI/MICROSOFT/BOOT/BCD bcd ||"
		wscript.echo "initrd -n boot.sdi ${boot-url}/BOOT/BOOT.SDI boot.sdi"
		wscript.echo "initrd -n boot.wim ${boot-url}" & path & " boot.wim"
		wscript.echo "boot"
	end if
 End If
Next
For Each aItem In pCurrentDir.SubFolders
 'wscript.Echo aItem.Name & " passing recursively"
 call getInfo(aItem,s)
Next
End Sub
'************************************************
dim fso
Set FSO = CreateObject("Scripting.FileSystemObject")
dim ScriptPath
ScriptPath= Wscript.ScriptFullName
dim objFile
Set objFile = FSO.GetFile(ScriptPath)
dim ScriptFolder
ScriptFolder = FSO.GetParentFolderName(objFile) 
'wscript.echo "strFolder:" & strFolder
Include(ScriptFolder & "\ini.vbs")
dim CurrentDirectory
CurrentDirectory = fso.GetAbsolutePathName(".")
'wscript.echo "CurrentDirectory:" & CurrentDirectory
dim root
root= ReadIni( CurrentDirectory & "\config.ini", "dhcp", "root" )
'wscript.echo "root:" & root
dim strweb
if instr(root,"\")>0 then strweb = root
if instr(root,"\")=0 then strweb = CurrentDirectory & "\" & root
'wscript.echo "strweb:" & strweb
dim objDir
Set objDir = FSO.GetFolder(strweb)
'***************** lets generate the ipxe script **************
wscript.echo "#!ipxe"
wscript.echo "set boot-url http://${next-server}"
wscript.echo "set iscsi-server ${next-server}"
wscript.echo "set iqn iqn.2008-08.com.starwindsoftware:target1"
wscript.echo "set iscsi-target iscsi:${iscsi-server}::::${iqn}"
wscript.echo "set menu-timeout 5000"
wscript.echo "set submenu-timeout ${menu-timeout}"
wscript.echo "isset ${menu-default} || set menu-default exit"
wscript.echo ":start"
wscript.echo "menu Welcome to iPXE's Boot Menu"
'wscript.echo "item"
'wscript.echo "item --gap -- ------------------------- ISO ------------------------------"
dim c
c=0
call getInfo(objDir,1)
wscript.echo "item top back to top menu"
wscript.echo "choose --default exit --timeout 30000 target && goto ${target}"
c=0
call getInfo(objDir,2)
wscript.echo ":top chain menu-vbs.ipxe"
wscript.echo "goto start"
files/winnt.sif
[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\i386\System32\"
OsLoadOptions = "/fastdetect /minint /noguiboot /rdexportascd /rdpath=images\BARTXPE.ISO"
files/winnt_ris.sif
[data]
floppyless = "1"
msdosinitiated = "1"
; Needed for second stage
OriSrc = "\\192.168.1.100\RemInst\windows\i386"
OriTyp = "4"
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1
[SetupData]
OsLoadOptions = "/fastdetect"
; Needed for first stage
SetupSourceDevice = "\Device\LanmanRedirector\192.168.1.100\RemInst\windows"
[RemoteInstall]
; Avoid automatic format/repartition
Repartition = No
UseWholeDisk = No
[UserData]
ComputerName = *
ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
files/_install.bat
ping -n 5 127.0.0.1 > NUL
rem probably win7 only and useful if you pushed a sanhook command
rem drvinst.exe msscsi
rem ping -n 5 127.0.0.1 > NUL
rem provide a sharename and credentials pointing to your windows install files
net use z: \\1.2.3.4\sharename /user:username password
z:
setup.exe
files/_winpeshl.ini
;[LaunchApp]
;%SYSTEMDRIVE%\windows\explorer++.exe
[LaunchApps]
%SYSTEMDRIVE%\Windows\system32\startnet.cmd
%SYSTEMDRIVE%\_install.bat
filter.sample
01-02-03-04-05-06
aa-bb-cc-dd-ee-ff
08-00-27-4C-A8-A7
ISCSIConsole_1.5.1.zip
ISCSIConsole.exe
mono.txt
If you encounter issues with dotnet (not installed, etc), use the alternative mono.
See below for steps (http://reboot.pro/topic/22026-sanboot-windows-on-uefi-system/page-4#entry211448) :
Step 1 - Download the iSCSI Console executable - lets say to C:\iSCSIConsole\ISCSIConsole.exe.
Step 2 - Download the packaged mono - direct download http://vm1.duckdns.o.../Mono-3.2.3.zip
Step 3 - Extract the contents of Mono-3.2.3.zip (downloaded in the previous step) to C:\iSCSIConsole\
Note - you should have the following directory structure -
C:\iSCSIConsole\
C:\iSCSIConsole\x86
C:\iSCSIConsole\x64
C:\iSCSIConsole\lib.
Step 4 - run the following command from a command-line (adjusting path to mono depending on whether your Host OS is 32 or 64-bit)
C:\iSCSIConsole\x64\mono.exe C:\iSCSIConsole\ISCSIConsole.exe.
Enjoy. 
Please note that when launching mono.exe it will search for library dependency files using the relative path "..\lib" - e.g. if mono.exe is in the path "C:\iSCSIConsole\mono.exe" then it will search for the library files using the path "C:\lib"
Readme.md
About iSCSI Console:
====================
iSCSI Console is a Free, Open Source, User-Mode iSCSI Target Server written in C#. 
iSCSI Console is cross-platform, portable and requires no installation. 
iSCSI Console can serve physical and virtual disks to multiple clients. 
About the iSCSI library:
========================
The iSCSI library utilized by iSCSI Console was designed to give developers an easy way to serve block storage via iSCSI. 
Any storage object you wish to share needs to implement the abstract Disk class, and the library will take care of the rest. 
The library was written with extensibility in mind, and was designed to fit multitude of projects. 
iSCSI Console is merely a demo project that exposes some of the capabilities of this library. 
Notes:
------
In addition to a full fledged iSCSI Target server implementation, the iSCSI library also contain a very basic iSCSI initiator implementation.
What this program can do:
===================================
1. Serve virtual disks (VHD / VMDK / IMG).
2. Serve physical disks.
3. Serve basic volumes as disks.
4. Serve dynamic volumes as disks.
5. Create VHDs.
6. Could run from Windows PE using Mono.
7. Could run from Linux / OSX using Mono (Download the Cross Platform Edition) 
![iSCSI Console UI](ISCSIConsole_UI.png)
Contact:
========
If you have any question, feel free to contact me. 
Tal Aloni <tal.aloni.il@gmail.com>
licensing.txt
License for Tiny PXE Server
=======
This utility is released as freeware, i.e not sold. 
You are allowed to freely use this software for profesionnal and non profesionnal reasons.
You are allowed to freely distribute this utility via Internet, or in any other way. 
If you distribute this utility, you must include all files in the distribution package, without any modification !
You are NOT allowed to modify the binary.
You are NOT allowed to sell this software for whatever reasons.
The zip package includes other softwares, please refer to the respective web sites to learn more about these softwares licensing.
-ipxe : http://etherboot.org/wiki/index.php
-gpxe : http://etherboot.org/wiki/index.php
-syslinux : http://www.syslinux.org/wiki/index.php/The_Syslinux_Project
-winnfsd : http://sourceforge.net/projects/winnfsd/
Disclaimer
==========
The software is provided "AS IS" without any warranty, either expressed
or implied, including, but not limited to, the implied warranties of
merchantability and fitness for a particular purpose. The author will not
be liable for any special, incidental, consequential or indirect damages
due to loss of data or any other reason.
nics.sample
1022 2000 pcntpci5.sys PCnet
10b7 6055 EL556ND5.sys EL556ND5
10b7 6056 EL556ND5.sys EL556ND5
8086 100E e1000325.sys E1000
pxesrv-faq.xhtml
 
Table des matières
		1.how to pxe boot pxelinux
		2.how to pxe boot
grub4dos
		3.how to pxe boot ipxe+menu 
		4.how to pxe boot ipxe+pxelinux 
		5.how to pxe boot ipxe+iscsi thru rootpath 
		6.how to pxe boot ipxe + g4dos 
		7.how to pxe boot winpe3 (wim) thru WDS
		8.how to pxe boot xp installation thru RIS
		9.how to pxe boot winpe3 (wim) thru ipxe+wimboot 
		10.how to pxe boot an iso file thru ipxe + memdisk
		11.how to pre load settings in Tiny PXE Server 
		12.how to serve only specified mac addresses (and ignore others)
		13.how to keep most recent used settings
		1.how to pxe boot pxelinux 
enter pxelinux.0 as boot filename 
put pxelinux.cfg/default as boot menu in root folder (see example in zip file)
note : put menu.c32 in root folder
 
		2.how to pxe boot grub4dos 
enter grldr as boot filename 
put menu.lst/default as boot menu in root folder  (see example in zip file)
note : use (pd) as pxe device
 
		3.how to pxe boot ipxe+menu  
enter ipxe-undionly.kpxe as boot filename 
enter menu.ipxe as user-class boot filename 
put menu.ipxe in root folder   (see example in zip file)
note : use ipxe variable ${dhcp-server} to dynamically retrieve the ip of the boot server
 
 
		4.how to pxe boot ipxe+pxelinux  
enter ipxe-undionly.kpxe as boot filename 
enter pxelinux.0 as user class boot filename 
put pxelinux.cfg/default as boot menu in root folder  (see example in zip file)
note : put menu.c32 in root folder
 
		5.how to pxe boot ipxe+iscsi thru rootpath  
enter ipxe-undionly.kpxe as boot filename 
enter iscsi path in root path 
execute iscsi target (example : iscsi:192.168.1.100:tcp:3260:0:test)
 
		6.how to pxe boot ipxe + g4dos  
enter ipxe-undionly.kpxe as boot filename 
enter grldr as user class boot filename 
put menu.lst/default as boot menu in root folder  (see example in zip file)
note : use (pd) as pxe device
 
		7.how to pxe boot winpe3 (wim) thru WDS 
enter wdsnbp.com as boot filename
enter pxeboot.com as proxydhcp boot filename
enter boot\bcd as proxydhcp option 252
note : put bootmgr.exe in root folder, boot.wim in sources folder and boot.sdi in boot folder
note: wds files can be found in boot.wim of windows7/2008 installation files (\windows\boot\pxe)
note: see here how to customize a winpe http://ipxe.org/howto/winpe 
		8.how to pxe boot xp installation thru RIS 
enter startrom.0 as boot filename
put winnt.sif as unattended installation file in root folder  (see example in zip file)
put ntldr (renamed setupldr), ntdetect.com in root folder
share the root folder (windows shared, nullsessions enabled) containing a subfolder XP (installation cd files)
extract all inf files from lan driverpacks to INF folder in root folder
extract all sys files from lan driverpacks to XP\I386 folder in root folder
 
		9.how to pxe boot winpe3 (wim) thru ipxe+wimboot  
enter ipxe-undionly.kpxe as boot filename 
enter wimboot.ipxe as user-class boot filename 
put wimboot.ipxe in root folder   (see example in zip file)
note : use ipxe variable ${dhcp-server} to dynamically retrieve the ip of the boot server
(example: http://${dhcp-server}/wimboot.ipxe)
note: see here how to customize a winpe http://ipxe.org/howto/winpe 
note: tick httdp tickbox
 
		10.how to pxe boot an iso file thru ipxe + memdisk 
enter ipxe-undionly.kpxe as boot filename 
enter menu.ipxe as user-class boot filename 
put iso.ipxe in root folder   (see example in zip file)
note : use ipxe variable ${dhcp-server} to dynamically retrieve the ip of the boot server
 
		11.how to pre load settings in Tiny PXE Server  
rename config,sample into config,ini
uncomment (remove; in front of the line) the needed lines & set the option(s)
 
		12.how to serve only specified mac addresses (and ignore others) 
rename filter.sample to filter.txt and input specific mac address(es)
 
		13.how to keep most recent used settings 
use the MRU combobox fields: user class boot filename, option 17 and extra option
pxesrv.exe
pxesrv.txt
1.0.0.2
modified : pxe options hidden by default
modified : altfilename hidden by default
fixed : form no more stays on top
fixed : form position is default
1.0.0.3
fixed : auto add character '/' when requesteddocument is a folder
1.0.0.4
fixed : bug in tftpd daemon : blksize was not handled when tsize was set. would not affect all clients, but would affect wds
1.0.0.5
modified : change of name for Tiny PXE Server
1.0.0.6
added : binl active if at least one of the binl fields is field (wdsnbp.com will query a new boot file name and bcd file name (option 252))
1.0.0.7
added : BINL checkbox (will actually enable proxy dhcp on udp:4011)
added : support for NCQ requests, will send back NCR answers with correct driver details : enabling RIS/XP network installation
1.0.0.8
fixed : in dhcp, answer.flags=query.flags now
added : more debugging
1.0.0.9
fixed : random timeouts on tftp. oack return moved to thread.execute rather than thread.create
1.0.0.10
added : will use datas from config.ini, if any (see sample)
added : auto start of services possible
added : about box
added : forms will remember last top/left position
fixed : working/current directory
1.0.0.11
added : dns server (will send back A/PTR records only, use the windows hosts file to add records)
1.0.0.12
added : can use @mac or @ip in the filename to send back the requester mac or ip as part of the filename/path
1.0.0.13
added : ability to filter (inclusive) mac addresses
added : quick and dirty faq that will evolve as it goes
1.0.0.14
added : proxydhcp option in the gui
added : proxydhcp option in config.ini
modified : cleaner log
added : verbose option in config.ini
fixed (again) : unicast/broadcast will match the query
added : log option in config.ini to log to a file
1.0.0.15
added : option (smb) in config.ini to create auto a windows share named PXE pointing to boot folder
fixed : in proxydhcp mode, will not send a dhcp_offer if query is not coming from a PXEClient
1.0.0.16
fixed: remoteport=4011 when srcport=4011 -> was preventing some ipxe client to boot (uefi for exemple)
changed: opt60='' by default when using opt67 (was 'PXEClient' before) -> was preventing ipxe client to boot with opt67
changed: opt60='PXEClient' when proxydhcp=1 (was hardcoded before) -> more flexible
fixed: xid is now displayed correctly -> was reversed order
fixed: was sending an empty boot filename in proxydhcp in the dhcp_offer stage -> removed, was preventing proxydhcp+opt67
changed: bind=true by default when multiple interfaces detected -> was preventing pxe boot with multiple interfaces when bind=false
1.0.0.17
fixed : should detect if a socket is already in use
fixed : messages sent from threads would not always reach the memo box
added : will execute an executable/batch if cmd parameter is present in config.ini
fixed : httpd will now handle both non keep-alive (default) and keep-alive http requests
fixed : would create crashes (under certain conditions) if the root path was incorrect
fixed : would not start tftpd if not set in config.ini
added : support for dhcp-relay (handle giaddr)
added : opt252 in config file
1.0.0.18
added : @arch variable can be used in the altfilename (next to @mac and @ip). 00000 = bios, 00006=efi32, etc ... see https://www.rfc-editor.org/rfc/rfc4578.txt
fixed : tftpd will also bind if option is checked
modified : if the root folder in config.ini is incorrect, it will be set to the exe current directory
modified : if the filename cannot be resolved (like when using @arch or @mac), it will not prevent execution
modified : tftp will display the full path (within root) for a file request
added : @arch will also be used in opt252
fixed : opt67 in the config.ini would not set the root folder
added : [arch] section in config.ini optional, applies to filename and opt67. ex values -> 00006=bootia32.efi, 00007=bootx64.efi, etc ...
added : support for nics.txt for BINL (overule the inf parsing)
fixed : opt13 was incorrect when
loading a filename thru config.ini
fixed : opt13 was incorrect when using arch=00007/00006
fixed : when using opt67, would crash if [arch] section was missing
added : can re load settings from config.ini
added : can save settings to config.ini
added : smb checkbox
fixed : httpd uses fmShareDenyWrite to allow multiple i/o to one file
added : sent bootp packet will be word aligned
added : will replace \0 by null char for opt60,66,67 (some pxe clients require a null terminated string there)
added : attempt to support rfc951 = boot request will be handled as dhcp request (rfc951=1 in config.ini)
added : no_hostname=1 in config.ini to skip the server hostname field
changed : if opt54='0.0.0.0' then skip in makebootp_vend (useless?)
added : no_opt13=1 in config.ini to skip option 13
changed : opt53 skipped if bootp request (i.e not a dhcp request) to be compatible with bootp clients
1.0.0.19
added : root can be an http url (netboot for debian, ubuntu, ...)
fixed : stream.free on udp transfer complete
added : can log to a syslog server (add syslog=host in config.ini)
fixed : non critical udp socket errors would stop the dhcp daemon
added : in analysedata, will exit loop as soon as a dhcp message is found
added : in analysedata, will prevent (byte)offset>255
added : offline button will terminatethread if still active (53,67,4011)
fixed : no more high cpu usage on random occasions
added : new options skip_dhcp_inform & skip_dhcp_discarded
added : forcerenew dhcp messages logged
1.0.0.20
added : new option wsMinimized in config.ini to start the app minimized
fixed : @mac,@ip,@arch added to dhcp_offer (was only dhcp_ack before)
fixed : pool start correct when opt54 set in ini file
todo : send arch in dhcp offer
added : @opt54 variable next to @mac,@ip,@arch -> similar to ${next-server} in ipxe
fixed : next server passed to send_dhcpoffer and send_dhcpack
added : will add a scrollbar when active monitor height <=600
added : vscroll=1 in config.ini will force a vertical scrollbar
fixed : option 6 dns server was wrong when choosing a different NIC
added : arch will be taken into account in the dhcp offer as well
fixed : tftpd can be disabled again in config.ini
added : will select the active nic in the opt54 combo box
modified : 2 more fields hidden and moved to the advanced part of the form
fixed : log to file is disabled
added : a syslog server is included in the zip file (syslog=127.0.0.1 in the config.ini)
1.0.0.21
modified : dns proxy will read entries from config.ini (section=hostname,ident=ip or section=ip,ident=host), no more from hosts file
added : right click open config.ini
added : right click open root_path
fixed : share folder will now add everyone read-only on share permissions
added : share is created with STYPE_TEMPORARY flag, i.e will not survive a reboot
added : TPS will answer to specific 'discovery' messages (see discover.zip)
fixed : wsMinimized=1 was preventing form_show and load_config
added : each daemon will report on which ip it is listening (useful to troubleshoot)
added : syslogd will read ip under [syslog] in config.ini if one wants to bind to a specific interface (instead of 0.0.0.0 by default)
fixed : error handling in log_memo to avoid a possible date bug
fixed : httpd could not list files/folder in a non indexed folder
modified : ucimp.pas uses winsock, not wsck
modified : iphlpapi_helper.pas uses winsock, not wsck
modified : usnoop uses winsock, not wsck
modified : iptypes uses winsock, not wsck
modified : removed ipheader unit in main form
modified : TPS does not use wsck unit anymore
1.0.0.22
added : CTRL+R to refresh interfaces
added : [map] section, before=after
fixed : free stream after transfercomplete
added : safety counter when downloading from remote http server (udp to http)
added : /config:x:\path\config.ini 
added : pick up another config file (menu)
added : CTRL+I to display current config file path
1.0.0.23
added: php,vbs,py files can be processed server side using php, vbs, py entries under web section
added : will notify in the log window if another dhcp server exists on the LAN
added : if index.html exists, http will display this file instead of listing directory
added : httpd will be bound to one interface (or binded...) if bind option is selected
fixed : http server now supports bigger than 2gb
fixed : minor bug in dnsd where the daemon would stop unexpectedly under some circumstances
fixed : https://my.web.site as root will work (next to http)
added : js files will be parsed/interpreted (similar to vbs)
syslogd.exe
Tiny PXE Server Guide.url
[InternetShortcut]
URL=http://mistyrebootfiles.altervista.org/documents/TinyPXEServer/
version.txt
pxesrv.exe 
1.0.0.23
02/03/2021 13:52 
F5844CBA41FFEF4DDC8724C993B4E0A6
WinNFSd-2.0.zip
license.txt
		 GNU GENERAL PUBLIC LICENSE
		 Version 2, June 1991
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
			 Preamble
 The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
 When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
 To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
 For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
 We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
 Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
 Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
 The precise terms and conditions for copying, distribution and
modification follow.
		 GNU GENERAL PUBLIC LICENSE
 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this
General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
 1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
 2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
 a) You must cause the modified files to carry prominent notices
 stating that you changed the files and the date of any change.
 b) You must cause any work that you distribute or publish, that in
 whole or in part contains or is derived from the Program or any
 part thereof, to be licensed as a whole at no charge to all third
 parties under the terms of this License.
 c) If the modified program normally reads commands interactively
 when run, you must cause it, when started running for such
 interactive use in the most ordinary way, to print or display an
 announcement including an appropriate copyright notice and a
 notice that there is no warranty (or else, saying that you provide
 a warranty) and that users may redistribute the program under
 these conditions, and telling the user how to view a copy of this
 License. (Exception: if the Program itself is interactive but
 does not normally print such an announcement, your work based on
 the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
 3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
 a) Accompany it with the complete corresponding machine-readable
 source code, which must be distributed under the terms of Sections
 1 and 2 above on a medium customarily used for software interchange; or,
 b) Accompany it with a written offer, valid for at least three
 years, to give any third party, for a charge no more than your
 cost of physically performing source distribution, a complete
 machine-readable copy of the corresponding source code, to be
 distributed under the terms of Sections 1 and 2 above on a medium
 customarily used for software interchange; or,
 c) Accompany it with the information you received as to the offer
 to distribute corresponding source code. (This alternative is
 allowed only for noncommercial distribution and only if you
 received the program in object code or executable form with such
 an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
 4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
 5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
 6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
 7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution
of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
 8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
 9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
 10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
			 NO WARRANTY
 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
readme.txt
WinNFSd is a Network File System (NFS) server for Windows. 
You can use any NFS client to mount a directory of Windows
and read/write files via NFS protocol. 
It is useful when you usually access files of Windows on Linux.
[Usage]
	winnfsd.exe [-id <uid> <gid>] [-log on | off] <export path>
	uid: The user id of the directory and all files under this directory, used by the client. Default is 0 (uid of root).
	gid: The group id of the directory and all files under this directory, used by the client. Default is 0 (gid of root).
	log: If on, WinNFSd will print messages. Default is on.
	export path: The path on Windows which you want to export. The client can read/write files under this path.
	 For example, C:\work\cpp. The client must mount it using /C/work/cpp.
[History]
	2005/9/13 v2.0
		+ Support NFS version 3 (RFC 1813)
		+ Add some commands in user interface.
		+ Improve performance.
	2005/5/9 v1.0
		+ Support RPC version 2 (RFC 1057) and NFS version 2 (RFC 1094)
		+ Command-mode interactive user interface.
		+ Warn if there are clients still mount when you quit the server.
[Contact]
	http://sourceforge.net/projects/winnfsd
	vincent0629@gmail.com
winnfsd.exe
__offline.bat
taskkill /IM notepad.exe /F /T
__online.bat
rem vblade.exe -r -b 65 0 0 "\device\NPF_{A91B63C5-B714-403C-9D7F-C0ED85D6244C}" "C:\usb.img"
c:\windows\notepad.exe
ipxe.iso

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina