Compare commits

..

30 Commits

Author SHA1 Message Date
root
df690d47cf .. 2023-04-18 15:38:46 +02:00
root
582077c7ec changes 2023-04-18 15:00:05 +02:00
root
a4b09dc07c Auf Branch main
Ihr Branch ist auf demselben Stand wie 'origin/main'.

 Zum Commit vorgemerkte Änderungen:
	geändert:       conf.d/service_10_main.conf.sh
	geändert:       conf.d/service_30_nfs.conf.sh
	geändert:       conf.d/service_40_smbd.conf.sh
	geändert:       settings.sh

 Unversionierte Dateien:
	resrc.d/default-minimal.txt
2023-04-18 14:59:12 +02:00
root
ce4f185331 . 2023-04-18 14:06:17 +02:00
root
7fd9ca7edd new approach 2023-04-18 13:41:50 +02:00
root
002116e26a saving changes 2023-04-15 16:06:05 +02:00
root
624b78cc2b saving changes 2023-04-15 16:05:21 +02:00
77600d99e0 „todo.md“ ändern 2023-04-14 22:59:12 +00:00
3b9a9d5699 „todo.md“ ändern 2023-04-14 22:38:13 +00:00
root
0246c43200 ... 2023-04-15 00:28:26 +02:00
root
052c402829 complete start over... 2023-04-15 00:23:32 +02:00
ce15b23cbd „README.md“ ändern 2023-04-14 22:19:52 +00:00
root
7f7d4d818a new thoughts... 2023-04-15 00:17:39 +02:00
p_reichart
5e1b7a40b4 ... 2023-04-13 21:58:04 +00:00
technik
db9d8d5522 fixing stuff 2023-04-13 21:24:44 +00:00
p_reichart
ca1b340fd7 minor changes 2023-04-13 13:25:21 +00:00
p_reichart
70d3fc5421 Merge branch 'main' of https://support.ostrachhelp.de/p_reichart/pxe-bootserver
merge
2023-04-13 13:02:03 +00:00
p_reichart
26311dec4e ... 2023-04-13 13:01:39 +00:00
ccb06c3051 „resources/winpestart.bat“ ändern 2023-04-13 12:59:21 +00:00
9ba6cfb96b „configure-windows-pxeboot.sh“ ändern 2023-04-13 12:58:23 +00:00
26a5d2355d „resources/winpestart.bat“ hinzufügen
WinPE Startfile
2023-04-13 12:56:07 +00:00
p_reichart
ab99f46cfb added windows stuff 2023-04-13 12:39:20 +00:00
root
a5e1720463 refining scripts, adding winpe boot 2023-04-13 12:28:53 +00:00
root
454bce2beb developing windows boot settings... 2023-04-13 10:08:48 +00:00
root
2a1e6ec4f4 bugs corrected 2023-04-13 07:08:58 +00:00
technik
5f06210f58 wallpapers 2023-04-13 02:45:34 +00:00
technik
94dc9a91c9 added FreeDOS 2023-04-13 02:11:42 +00:00
960e8af0b6 „README.md“ ändern 2023-04-13 01:37:41 +00:00
technik
0530ba1edf added clonezilla 2023-04-13 01:33:18 +00:00
technik
a3f0309eab corrections... 2023-04-13 00:45:23 +00:00
48 changed files with 1709 additions and 236 deletions

34
README.md Normal file → Executable file
View File

@@ -1,33 +1,3 @@
# PXE Boot-Server How To
# PXE Boot-Server
How to build a PXE Server as a helpful Tool
Debian 11 Server with:
* TFTP Server
* NFS Server
* a ready to use Bootmenue
* some free Tools (Bootmanagers, Debian Installer, Knoppix, ...)
* how to's for non free Tools (Acronis true Image)
1. Install a minimal Debian System and login as root
2. install git:
```
apt install -y git
```
3. clone this Repository:
```
cd ~
git clone https://support.ostrachhelp.de/p_reichart/pxe-bootserver
cd pxe-bootserver
```
4. Install needed Packages:
```
./install-debian-Packages.sh
```
5. Setup a minimal Confiration:
```
./configure-debian-system.sh
```
Now you should have a Server with NFS, TFTP and HTTP Support and a minimal Configuration
with PXELINUX and some Demo entries with iPXE
This Project aims to provide a set of scripts to build a modular PXE TFTP Server and is under heavy construction.

View File

@@ -0,0 +1,220 @@
#!/bin/sh
. ./settings.sh
#
# Menue configuration
#
M_ENABLED=Yes
M_NAME="default"
if ! [ "$(echo $M_ENABLED | tr A-Z a-z)" = "yes" ]; then
exit 0
fi
echo "Menue $M_NAME is enabled..."
M_PAYLOAD="
rootprompt 0
path bios/
default bios/vesamenu.c32
#TIMEOUT 300
MENU TITLE Default Menu
MENU BACKGROUND splash.png
MENU ROWS 15
MENU TABMSGROW 20
MENU TIMEOUTROW 22
LABEL disk0
localboot 0
MENU LABEL Starte von lokaler Platte (Default)
label -
MENU LABEL Live-Systeme: --------------------------
MENU DISABLE
LABEL knx
MENU LABEL * Knoppix 9.1 Live, Grafisch, 32Bit
KERNEL free/knx/boot/isolinux/linux
APPEND nfsdir=${HOST_IP}:/srv/tftp/free/knx nodhcp lang=de ramdisk_size=100000 init=/sbin/init apm=power-off nomce loglevel=1 initrd=free/knx/boot/isolinux/miniroot.gz libata.force=noncq tz=europe/Berlin hpsa.hpsa_allow_any=1 BOOT_IMAGE=knoppix
MENU BEGIN
MENU LABEL * Weitere Optionen...
LABEL knx
MENU LABEL * Knoppix 9.1 Live, Textmodus, 32Bit
KERNEL free/knx/boot/isolinux/linux
APPEND nfsdir=${HOST_IP}:/srv/tftp/free/knx nodhcp lang=de ramdisk_size=100000 init=/sbin/init apm=power-off nomce loglevel=1 initrd=free/knx/boot/isolinux/miniroot.gz libata.force=noncq tz=Europe/Berlin hpsa.hpsa_allow_any=1 BOOT_IMAGE=knoppix 2
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Backup & Restore: ----------------------
MENU DISABLE
LABEL rescue
MENU LABEL * Rescuezilla Live
kernel free/rz/casper/vmlinuz
APPEND initrd=free/rz/casper/initrd.lz netboot=nfs root=/dev/nfs ramdisk_size=1500000 ip=dhcp nfsroot=${HOST_IP}:${D_TFTP}/free/rz/ boot=casper locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de quiet
MENU BEGIN
MENU LABEL * Weitere Optionen...
LABEL rescue2
MENU LABEL * Rescuezilla Live Fail-Safe
kernel free/rz/casper/vmlinuz
APPEND initrd=free/rz/casper/initrd.lz netboot=nfs root=/dev/nfs ramdisk_size=1500000 ip=dhcp nfsroot=${HOST_IP}:${D_TFTP}/free/rz/ boot=casper locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de xforcevesa nomodeset vga=791 quiet
LABEL cz
MENU LABEL * Clonezilla Live (Ramdisk)
KERNEL free/cz/live/vmlinuz
APPEND initrd=free/cz/live/initrd.img boot=live username=user union=overlay config components noswap edd=on nomodeset nodmraid locales=de_DE.UTF-8 keyboard-layouts=de-latin-1 ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=tftp://${HOST_IP}/free/cz/live/filesystem.squashfs quiet
LABEL acr18
MENU LABEL * Acronis True Image Home 2018
LINUX memdisk
INITRD non-free/acronis/acronis2018.iso
APPEND iso raw
LABEL acr14
MENU LABEL * Acronis True Image Home 2014
LINUX memdisk
INITRD non-free/acronis/acronis2014.iso
APPEND iso raw
LABEL acr11
MENU LABEL * Acronis True Image Home 2011
LINUX memdisk
INITRD non-free/acronis/acronis2011.iso
APPEND iso raw
LABEL acr10
MENU LABEL * Acronis True Image 2010
LINUX memdisk
INITRD non-free/acronis/acronis2010.iso
APPEND iso raw
LABEL acr09
MENU LABEL * Acronis True Image 2009
LINUX memdisk
INITRD non-free/acronis/acronis2009.iso
APPEND iso raw
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Installer: ------------------------------
MENU DISABLE
MENU BEGIN
MENU LABEL * Linux Installer...
LABEL deb12
MENU LABEL * Debian 12 Installer 64Bit Textmodus
CONFIG free/deb-bookworm/debian-installer/amd64/pxelinux.cfg/default
APPEND free/deb-bookworm/
LABEL deb12
MENU LABEL * Debian 12 Installer 32Bit Textmodus
CONFIG free/deb-bookworm/debian-installer/i386/pxelinux.cfg/default
APPEND free/deb-bookworm/
LABEL deb11
MENU LABEL * Debian 11 Installer 64Bit Textmodus
CONFIG free/deb-bullseye/debian-installer/amd64/pxelinux.cfg/default
APPEND free/deb-bullseye/
LABEL deb11
MENU LABEL * Debian 11 Installer 32Bit Textmodus
CONFIG free/deb-bullseye/debian-installer/i386/pxelinux.cfg/default
APPEND free/deb-bullseye/
LABEL zurueck...
MENU EXIT
MENU END
MENU BEGIN
MENU LABEL * Windows Installer...
LABEL win10
MENU LABEL * Windows 10
KERNEL memdisk
INITRD non-free/windows/winpe.iso
APPEND iso raw
LABEL win10
MENU LABEL * Windows 10 iPXE Test
KERNEL ipxe.lkrn
APPEND dhcp && chain non-free/wimboot.ipxe
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Boot- & System-Tools: --------------------
MENU DISABLE
LABEL hdt
MENU LABEL * Hardware Erkennung
COM32 bios/hdt.c32
LABEL memtestpl
MENU LABEL * Memtest86+
kernel free/memtest86+
MENU BEGIN
MENU LABEL * Weitere Optionen...
label sbm
MENU LABEL * Smart Boot Manager
kernel memdisk
append initrd=free/sbm.imz
LABEL plop
MENU LABEL * PloP Boot Manager
kernel free/plop.exe
LABEL ipxe
MENU LABEL * iPXE Shell
KERNEL ipxe.lkrn dhcp && shell
LABEL memtest
MENU LABEL * Memtest86
kernel free/memtest86
LABEL fdos
MENU LABEL * FreeDOS Bootdisk
KERNEL memdisk
APPEND initrd=free/FD13BOOT.img
label win98
MENU LABEL * Windows 98 Bootdisk (DOS 7)
kernel memdisk
append initrd=non-free/win98.img
label ether
MENU LABEL * Etherboot
kernel memdisk
append initrd=free/ether.img
LABEL zurueck...
MENU EXIT
MENU END
"
case $1 in
build)
echo $M_PAYLOAD > ${D_TFTP}/pxelinux.cfg/default
;;
esac

View File

48
conf.d/service_10_main.conf.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/bin/sh
. ./settings.sh
#
# Main Service
#
S_ENABLED=YES
S_NAME="none"
S_PACKAGES="git sudo p7zip p7zip-full ipxe pxelinux syslinux syslinux-common"
# handle services
fservice $S_ENABLED $1 $S_NAME "$S_PACKAGES"
case $1 in
init)
# create directories
mkdir -p ${D_TFTP}
mkdir -p ${D_TFTP}/pxelinux.cfg
# copy Files some files:
cp -a /usr/lib/syslinux/modules/bios ${D_TFTP}/
cp -a ${D_RESRC}/default-minimal.txt ${D_TFTP}/pxelinux.cfg/default
# Link needed Files from installed Debian Packages to the TFTP-Root:
ln /usr/lib/PXELINUX/pxelinux.0 ${D_TFTP}/
ln /boot/ipxe.lkrn ${D_TFTP}/ipxe
ln /usr/lib/syslinux/memdisk ${D_TFTP}/
ln ${D_TFTP}/bios/ldlinux.c32 ${D_TFTP}/
ln ${D_TFTP}/pxelinux.cfg/default ${D_TFTP}/default -s
# download needed files:
wget -O ${D_TFTP}/wimboot "https://github.com/ipxe/wimboot/releases/latest/download/wimboot"
# set file access
chown ${USERID}:${GROUPID} . -R
chmod a+rw . -R
chown ${USERID}:${GROUPID} ${D_TFTP} -R
chmod a+rwx ${D_TFTP} -R
;;
esac

21
conf.d/service_20_tftp.conf.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
. ./settings.sh
#
# Service configuration
#
S_ENABLED=YES
S_NAME="tftpd-hpa"
S_PACKAGES="tftpd-hpa"
fservice $S_ENABLED $1 $S_NAME $S_PACKAGES
case $1 in
init)
;;
esac

23
conf.d/service_30_nfs.conf.sh Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/sh
. ./settings.sh
#
# Service configuration
#
S_ENABLED=no
S_NAME="nfs-kernel-server"
S_PACKAGES="nfs-kernel-server nfs-common"
fservice $S_ENABLED $1 $S_NAME $S_PACKAGES
case $1 in
init)
echo " create /etc/exports..."
cat ${D_ROOTDIR}/resrc.d/service_nfs_exports.txt | sed "s#__D_TFTP__#$D_TFTP#g" > /etc/exports
;;
esac

23
conf.d/service_40_smbd.conf.sh Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/sh
. ./settings.sh
#
# Service configuration
#
S_ENABLED=no
S_NAME="smbd"
S_PACKAGES="samba"
fservice $S_ENABLED $1 $S_NAME $S_PACKAGES
case $1 in
init)
echo " create smb.conf ..."
cat ${D_ROOTDIR}/resrc.d/service_smb.conf.txt | sed "s#__D_TFTP__#$D_TFTP#g" > /etc/samba/smb.conf
;;
esac

View File

@@ -1,17 +0,0 @@
#!/bin/sh
. ./settings.sh
# --- Debian 11 Installer
DIST="bullseye"
ARCHS="amd64 i386"
for ARCH in ${ARCHS};
do
DEBURL="https://deb.debian.org/debian/dists/${DIST}/main/installer-${ARCH}/current/images/netboot/netboot.tar.gz"
wget -nc -O ./temp/netboot-${ARCH}.tar.gz $DEBURL
if [ -e ./temp/netboot-${ARCH}.tar.gz ]; then
mkdir -p ${TFTP}/free/deb
tar xfvzC ./temp/netboot-${ARCH}.tar.gz ${TFTP}/free/deb
fi
done

71
main.sh Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/sh
. ./settings.sh
case $1 in
#
# services
#
services)
# find services:
SLIST=$(ls ./conf.d/service_*.conf.sh )
# process command
case $2 in
init)
echo "--------------------------------------------------"
echo "service init..."
echo "--------------------------------------------------"
for ITEM in ${SLIST};
do
$ITEM init
done
;;
start)
echo "--------------------------------------------------"
echo "service start..."
echo "--------------------------------------------------"
for ITEM in ${SLIST};
do
$ITEM start
done
;;
stop)
echo "--------------------------------------------------"
echo "service stop..."
echo "--------------------------------------------------"
for ITEM in ${SLIST};
do
$ITEM stop
done
;;
restart)
echo "--------------------------------------------------"
echo "service restart..."
echo "--------------------------------------------------"
for ITEM in ${SLIST};
do
$ITEM restart
done
;;
esac
;;
#
# menues
#
menues)
;;
#
# plugins
#
plugins)
;;
*)
echo "Usage: $0 services [init|start|stop|restart]"
echo " $0 menues [init]"
echo " $0 plugins [init|build|download]"
;;
esac

3
old-version/README.md Executable file
View File

@@ -0,0 +1,3 @@
# PXE Boot-Server
This Project aims to provide a set of scripts to build a modular PXE TFTP Server and is under heavy construction.

View File

@@ -1,6 +1,7 @@
#!/bin/sh
TFTP=/srv/tftp
# Load Global Settings
. ./settings.sh
# create directories
mkdir -p ${TFTP}
@@ -9,7 +10,9 @@ mkdir -p ${TFTP}/pxelinux.cfg
# copy Files from the Resource-Dir to the correct places:
cp ./resources/lighttpd.conf /etc/lighttpd/lighttpd.conf
cp ./resources/exports /etc/exports
cp ./resources/default-minimal ${TFTP}/pxelinux.cfg/default
if ! [ -e ${TFTP}/pxelinux.cfg/default ]; then
cp ./resources/default-minimal ${TFTP}/pxelinux.cfg/default
fi
cp ./resources/splash.png ${TFTP}/
cp -a /usr/lib/syslinux/modules/bios ${TFTP}/
@@ -21,7 +24,10 @@ ln ${TFTP}/bios/ldlinux.c32 ${TFTP}/
ln ${TFTP}/pxelinux.cfg/default ${TFTP}/default -s
# set file access
chown www-data.www-data ${TFTP} -R
chown ${USERID}:${GROUPID} . -R
chmod a+rw . -R
chown ${USERID}:${GROUPID} ${TFTP} -R
chmod a+rwx ${TFTP} -R
# restart services

View File

@@ -0,0 +1,51 @@
#!/bin/sh
. ./settings.sh
# Download & Install Debian Packages
apt update
apt install -y samba genisoimage wimtools cabextract
# configure Packages
cp ./resources/smb.conf /etc/samba/
# setup dirs:
mkdir -p ./non-free/windows
mkdir -p ./temp/waik
# restart services
systemctl restart smbd
# Download Windows Stuff:
WAIKURL="https://download.microsoft.com/download/8/E/9/8E9BBC64-E6F8-457C-9B8D-F6C9A16E6D6A/KB3AIK_EN.iso"
FILENAME="./temp/KB3AIK_EN.iso"
if ! [ -e $FILENAME ]; then
wget -nc -O $FILENAME $WAIKURL
fi
if [ -e $FILENAME ]; then
7z x -aos -o./temp/waik $FILENAME
fi
# parse winpestart.bat
cat ./resources/winpestart.bat | sed -e "s/__NFSSERVERIP__/${NFSSERVERIP}/g" > ./temp/winpestart.bat
# Create winpe.iso
if [ -e ./non-free/windows/winpe.iso ]; then
rm ./non-free/windows/winpe.iso
fi
if [ -e ./temp/waik/WinPE.cab ]; then
mkwinpeimg --iso --arch=amd64 --waik-dir=./temp/waik --start-script=./temp/winpestart.bat ./non-free/windows/winpe.iso
#mkwinpeimg --iso --arch=amd64 --waik-dir=./temp/waik ./non-free/windows/winpe.iso
fi
# download Deployment Toolkit
DLURL="https://download.microsoft.com/download/3/3/9/339BE62D-B4B8-4956-B58D-73C4685FC492/MicrosoftDeploymentToolkit_x64.msi"
FILENAME="./non-free/windows/MicrosoftDeploymentToolkit_x64.msi"
if ! [ -e $FILENAME ]; then
wget -nc -O $FILENAME $DLURL
fi
# copy files to tftp server
cp -av ./non-free/windows ${TFTP}/non-free/

96
old-version/download-free.sh Executable file
View File

@@ -0,0 +1,96 @@
#!/bin/sh
. ./settings.sh
WGET="-nv -nc"
Z7="-aos"
if ! [ -e ./temp ]; then
mkdir -p ./temp
fi
echo "--- FreeDOS -- ---------------------------------------------------------------------"
echo "------------------------------------------------------------------------------------"
CZURL="https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.3/official/FD13-LiveCD.zip"
FILENAME=fdfullcd.zip
if ! [ -e ./temp/$FILENAME ]; then
echo "Downloading FreeDOS..."
wget $WGET -O ./temp/$FILENAME $CZURL
fi
if [ -e ./temp/$FILENAME ]; then
echo "Preparing FreeDOS..."
7z x $Z7 -o${TFTP}/free ./temp/${FILENAME}
fi
echo "--- Clonezilla ---------------------------------------------------------------------"
echo "------------------------------------------------------------------------------------"
CZURL="https://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/3.0.3-22/clonezilla-live-3.0.3-22-amd64.iso/download"
FILENAME=clonezilla-64bit.iso
if ! [ -e ./temp/$FILENAME ]; then
echo "Downloading Clonezilla..."
wget $WGET -O ./temp/$FILENAME $CZURL
fi
if [ -e ./temp/$FILENAME ]; then
echo "Preparing Clonezilla..."
mkdir -p ${TFTP}/free/cz
7z x $Z7 -o${TFTP}/free/cz ./temp/${FILENAME}
fi
echo "--- Rescuezilla --------------------------------------------------------------------"
echo "------------------------------------------------------------------------------------"
RZURL="https://github.com/rescuezilla/rescuezilla/releases/download/2.4.2/rescuezilla-2.4.2-64bit.jammy.iso"
FILENAME=rescuezilla-64bit.iso
if ! [ -e ./temp/$FILENAME ]; then
echo "Downloading Rescuezilla..."
wget $WGET -O ./temp/$FILENAME $RZURL
fi
if [ -e ./temp/$FILENAME ]; then
echo "Preparing Rescuezilla..."
mkdir -p ${TFTP}/free/rz
7z x $Z7 -o${TFTP}/free/rz ./temp/${FILENAME}
fi
echo "--- Knoppix V9.1 ------------------------------------------------------------------"
echo "------------------------------------------------------------------------------------"
KNX9URL="http://ftp.uni-kl.de/pub/linux/knoppix-dvd/KNOPPIX_V9.1DVD-2021-01-25-DE.iso"
FILENAME=KNOPPIX_V9.1DVD.iso
if ! [ -e ./temp/$FILENAME ]; then
echo "Downloading Knoppix..."
wget $WGET -O ./temp/$FILENAME $KNX9URL
fi
if [ -e ./temp/$FILENAME ]; then
echo "Preparing Knoppix..."
mkdir -p ${TFTP}/free/knx
7z x $Z7 -o${TFTP}/free/knx ./temp/${FILENAME}
cp ./resources/knx-miniroot.gz ${TFTP}/free/knx/boot/isolinux/miniroot.gz
fi
echo "--- Debian Installer ---------------------------------------------------------------"
echo "------------------------------------------------------------------------------------"
DISTS="bullseye bookworm"
ARCHS="amd64 i386"
for DIST in $DISTS;
do
for ARCH in ${ARCHS};
do
DEBURL="https://deb.debian.org/debian/dists/${DIST}/main/installer-${ARCH}/current/images/netboot/netboot.tar.gz"
FILENAME="netboot-${DIST}-${ARCH}.tar.gz"
if ! [ -e ./temp/${FILENAME} ]; then
echo "Downloading Debian installer ${DIST}/${ARCH}..."
wget $WGET -O ./temp/${FILENAME} $DEBURL
fi
if [ -e ./temp/${FILENAME} ]; then
echo "Create directory in ${TFTP}/free/deb-${DIST}..."
mkdir -p ${TFTP}/free/deb-${DIST}
echo "Unpacking files..."
tar xfzC ./temp/${FILENAME} ${TFTP}/free/deb-${DIST}
fi
done
done
./configure-debian-system.sh

View File

@@ -0,0 +1,6 @@
#!/bin/sh
. ./settings.sh
# copy local non-free directory to the tftp server:
cp -av ./non-free ${TFTP}/

535
old-version/free/wimboot Normal file
View File

@@ -0,0 +1,535 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
iPXE - open source boot firmware [wimboot]
</title>
<meta name="generator" content="DokuWiki"/>
<meta name="robots" content="index,follow"/>
<meta name="keywords" content="wimboot"/>
<link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="iPXE - open source boot firmware"/>
<link rel="start" href="/"/>
<link rel="contents" href="/wimboot?do=index" title="Sitemap"/>
<link rel="manifest" href="/lib/exe/manifest.php"/>
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/feed.php"/>
<link rel="alternate" type="application/rss+xml" title="Current namespace" href="/feed.php?mode=list&amp;ns="/>
<link rel="alternate" type="text/html" title="Plain HTML" href="/_export/xhtml/wimboot"/>
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/_export/raw/wimboot"/>
<link rel="canonical" href="https://ipxe.org/wimboot"/>
<link rel="stylesheet" type="text/css" href="/lib/exe/css.php?t=doogiestpl&amp;tseed=c353b386e7712527745f967265a28687"/>
<!--[if gte IE 9]><!-->
<script type="text/javascript">/*<![CDATA[*/var NS='';var JSINFO = {"id":"wimboot","namespace":"","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0};
/*!]]>*/</script>
<script type="text/javascript" charset="utf-8" src="/lib/exe/jquery.php?tseed=23f888679b4f1dc26eef34902aca964f"></script>
<script type="text/javascript" charset="utf-8" src="/lib/exe/js.php?t=doogiestpl&amp;tseed=c353b386e7712527745f967265a28687"></script>
<!--<![endif]-->
<link rel="shortcut icon" href="/lib/tpl/doogiestpl/images/favicon.ico" />
<link rel="apple-touch-icon" href="/lib/tpl/doogiestpl/images/apple-touch-icon.png" />
</head>
<body>
<div class="dokuwiki ">
<!-- login state -->
<div class="user">
</div>
<!-- breadcrumbs -->
<div class="clearer"></div>
<div class="stylehead">
<div class="header">
<div class="logo">
<a href="/start" name="dokuwiki__top" id="dokuwiki__top" accesskey="h" title="[ALT+H]">iPXE - open source boot firmware</a> </div>
<div class="tools">
<div class="pagename">
<!-- mcb30 - removed backlinks and replaced with logo -->
<a href="/start" name="dokuwiki__logo" id="dokuwiki__logo"><img src="/_media/logos/ipxe-small.png" width="159" height="105" alt="iPXE logo" /></a> </div>
</div>
<div class="clearer"></div>
<div class="tabnav" id="tab__nav">
<ul>
<li class="level1"><div class="li"> <a href="/start" class="wikilink1" title="start">Home</a></div>
</li>
<li class="level1"><div class="li"> <span class="curid"><a href="/download" class="wikilink1" title="download">Download</a></span></div>
</li>
<li class="level1"><div class="li"> <a href="/pics" class="wikilink1" title="pics">Screenshots</a></div>
</li>
<li class="level1"><div class="li"> <a href="/docs" class="wikilink1" title="docs">Documentation</a></div>
</li>
<li class="level1"><div class="li"> <a href="/faq" class="wikilink1" title="faq">FAQ</a></div>
</li>
<li class="level1"><div class="li"> <a href="/contact" class="wikilink1" title="contact">Contact</a></div>
</li>
</ul>
</div>
<div class="clearer"></div>
</div>
</div>
<div class="page">
<!-- ......... wikipage start ......... -->
<!-- TOC START -->
<div id="dw__toc" class="dw__toc">
<h3 class="toggle">Table of Contents</h3>
<div>
<ul class="toc">
<li class="level1"><div class="li"><a href="#advantages">Advantages</a></div></li>
<li class="level1"><div class="li"><a href="#download">Download</a></div></li>
<li class="level1"><div class="li"><a href="#getting_started">Getting started</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="#extract_the_windows_boot_files">Extract the Windows boot files</a></div></li>
<li class="level2"><div class="li"><a href="#download_wimboot">Download wimboot</a></div></li>
<li class="level2"><div class="li"><a href="#create_the_ipxe_script">Create the iPXE script</a></div></li>
<li class="level2"><div class="li"><a href="#boot">Boot</a></div></li>
<li class="level2"><div class="li"><a href="#next_steps">Next steps</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="#licence">Licence</a></div></li>
<li class="level1"><div class="li"><a href="#sponsors">Sponsors</a></div></li>
<li class="level1"><div class="li"><a href="#advanced_topics">Advanced topics</a></div>
<ul class="toc">
<li class="level2"><div class="li"><a href="#multi-image_wim_files">Multi-image WIM files</a></div></li>
<li class="level2"><div class="li"><a href="#injected_files">Injected files</a></div></li>
<li class="level2"><div class="li"><a href="#custom_boot_manager">Custom boot manager</a></div></li>
<li class="level2"><div class="li"><a href="#disabling_automatic_bcd_modifications">Disabling automatic BCD modifications</a></div></li>
<li class="level2"><div class="li"><a href="#disabling_debug_messages">Disabling debug messages</a></div></li>
<li class="level2"><div class="li"><a href="#displaying_graphical_boot_messages">Displaying graphical boot messages</a></div></li>
<li class="level2"><div class="li"><a href="#disabling_paging">Disabling paging</a></div></li>
</ul>
</li>
<li class="level1"><div class="li"><a href="#internals">Internals</a></div></li>
<li class="level1"><div class="li"><a href="#troubleshooting">Troubleshooting</a></div></li>
</ul>
</div>
</div>
<!-- TOC END -->
<h1 id="wimboot">wimboot</h1>
<div class="level1">
<p>
<code>wimboot</code> is a boot loader for Windows Imaging Format (<code>.wim</code>) files. It enables you to boot into a <a href="https://en.wikipedia.org/wiki/Windows_Preinstallation_Environment" class="urlextern" title="https://en.wikipedia.org/wiki/Windows_Preinstallation_Environment">Windows PE (WinPE)</a> deployment or recovery environment.
</p>
<p>
You can use <code>wimboot</code> with <a href="/start" class="wikilink1" title="start">iPXE</a> to <a href="/howto/winpe" class="wikilink1" title="howto:winpe">boot Windows PE via HTTP</a>. With a Gigabit Ethernet network, a typical WinPE image should download in just a few seconds.
</p>
</div>
<h2 id="advantages">Advantages</h2>
<div class="level2">
<p>
<a href="/_detail/clipart/lightbulb.png?id=wimboot" class="media" title="clipart:lightbulb.png"><img src="/_media/clipart/lightbulb.png?w=180&amp;h=200&amp;tok=8cacff" class="mediaright" title="A light bulb" alt="A light bulb" width="180" height="200" /></a>
</p>
</div>
<h5 id="speed">Speed</h5>
<div class="level5">
<p>
<code>wimboot</code> can download images at the full speed supported by your network, since it can use <abbr title="Hyper Text Transfer Protocol">HTTP</abbr> rather than TFTP.
</p>
</div>
<h5 id="efficiency">Efficiency</h5>
<div class="level5">
<p>
<code>wimboot</code> allows Windows to reuse the memory that was used to hold the RAM disk image; there is no wasted memory.
</p>
</div>
<h5 id="ease_of_use">Ease of use</h5>
<div class="level5">
<p>
<code>wimboot</code> works directly with <code>.wim</code> image files; there is no need to wrap your <code>.wim</code> into an <abbr title="International Organization for Standardization">ISO</abbr> or FAT filesystem image.
</p>
</div>
<h5 id="biosuefi_compatibility">BIOS/UEFI compatibility</h5>
<div class="level5">
<p>
<code>wimboot</code> allows you to use a single configuration and set of files to boot under both BIOS and UEFI environments.
</p>
</div>
<h2 id="download">Download</h2>
<div class="level2">
<p>
You can download the latest version of the <code>wimboot</code> binary from <a href="https://github.com/ipxe/wimboot/releases/latest/download/wimboot" class="urlextern" title="https://github.com/ipxe/wimboot/releases/latest/download/wimboot">https://github.com/ipxe/wimboot/releases/latest/download/wimboot</a>. This is a hybrid binary that will work on both BIOS and 64-bit UEFI systems (including UEFI systems with Secure Boot enabled).
</p>
<p>
You can also download alternative binaries (e.g. for 32-bit UEFI systems) from <a href="https://github.com/ipxe/wimboot/releases/latest" class="urlextern" title="https://github.com/ipxe/wimboot/releases/latest">https://github.com/ipxe/wimboot/releases/latest</a>.
</p>
<p>
Older versions are available from <a href="https://github.com/ipxe/wimboot/releases" class="urlextern" title="https://github.com/ipxe/wimboot/releases">https://github.com/ipxe/wimboot/releases</a>.
</p>
<p>
The source code is maintained in a <code>git</code> repository at <a href="https://github.com/ipxe/wimboot" class="urlextern" title="https://github.com/ipxe/wimboot">https://github.com/ipxe/wimboot</a>.
</p>
</div>
<h2 id="getting_started">Getting started</h2>
<div class="level2">
<p>
If you have a Windows installation DVD-ROM (Vista, Server 2008, or more recent), and a web server (such as Apache or <abbr title="Internet Information Services">IIS</abbr>), then you have everything you need to start using <code>wimboot</code>.
</p>
</div>
<h3 id="extract_the_windows_boot_files">Extract the Windows boot files</h3>
<div class="level3">
<p>
<a href="/_detail/clipart/cdrom.jpeg?id=wimboot" class="media" title="clipart:cdrom.jpeg"><img src="/_media/clipart/cdrom.jpeg?w=150&amp;h=150&amp;tok=2b33e2" class="mediaright" title="A CD-ROM" alt="A CD-ROM" width="150" height="150" /></a>
</p>
<p>
Copy the contents of the Windows installation DVD-ROM to a directory on your web server (e.g. <code>/var/www/win7</code> for Apache, or <code>C:\inetpub\wwwroot\win7</code> for <abbr title="Internet Information Services">IIS</abbr>).
</p>
<p>
If you do not have enough disk space to copy the entire contents of the DVD-ROM, then you may copy only the following files:
</p>
<pre class="code"> /boot/bcd
/boot/boot.sdi
/sources/boot.wim</pre>
</div>
<h3 id="download_wimboot">Download wimboot</h3>
<div class="level3">
<p>
Download the <a href="https://github.com/ipxe/wimboot/releases/latest/download/wimboot" class="urlextern" title="https://github.com/ipxe/wimboot/releases/latest/download/wimboot">latest version of wimboot</a> and save it to the same directory on your web server.
</p>
</div>
<h3 id="create_the_ipxe_script">Create the iPXE script</h3>
<div class="level3">
<p>
Create a text file <code>boot.ipxe</code> in the same directory on your web server, containing:
</p>
<pre class="code"> #!ipxe
kernel wimboot
initrd boot/bcd BCD
initrd boot/boot.sdi boot.sdi
initrd sources/boot.wim boot.wim
boot</pre>
</div>
<h3 id="boot">Boot</h3>
<div class="level3">
<p>
Boot using <a href="/start" class="wikilink1" title="start">iPXE</a> from the <abbr title="Uniform Resource Locator">URL</abbr> of your iPXE script, e.g. <code>http://my.web.server/win7/boot.ipxe</code>. You should see iPXE download your Windows boot files via <abbr title="Hyper Text Transfer Protocol">HTTP</abbr> and boot into the Windows installer:
</p>
<p>
<a href="/_detail/screenshots/wimboot.png?id=wimboot" class="media" title="screenshots:wimboot.png"><img src="/_media/screenshots/wimboot.png?w=600&amp;h=334&amp;tok=484325" class="mediacenter" title="wimboot booting Windows 7" alt="wimboot booting Windows 7" width="600" height="334" /></a>
</p>
<p>
<a href="/_detail/screenshots/win7_installer.png?id=wimboot" class="media" title="screenshots:win7_installer.png"><img src="/_media/screenshots/win7_installer.png?w=600&amp;h=450&amp;tok=d70835" class="mediacenter" title="Windows 7 installer booted via wimboot" alt="Windows 7 installer booted via wimboot" width="600" height="450" /></a>
</p>
</div>
<h3 id="next_steps">Next steps</h3>
<div class="level3">
<p>
You can use <code>wimboot</code> to boot any bootable <code>.wim</code> image. See the <a href="/howto/winpe" class="wikilink1" title="howto:winpe">Windows PE tutorial</a> for information on how to create and customise your own <code>.wim</code> images.
</p>
</div>
<h2 id="licence">Licence</h2>
<div class="level2">
<p>
<code>wimboot</code> is free, open-source software licensed under the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html" class="urlextern" title="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU GPL</a>.
</p>
</div>
<h2 id="sponsors">Sponsors</h2>
<div class="level2">
<p>
Portions of the <code>wimboot</code> development have been sponsored by:
</p>
<p>
<a href="https://jumptrading.com" class="media" title="https://jumptrading.com"><img src="/_media/logos/jump.png?w=165&amp;h=37&amp;tok=b2c235" class="mediacenter" title="Jump Trading" alt="Jump Trading" width="165" height="37" /></a>
</p>
<p>
<a href="https://2pintsoftware.com" class="media" title="https://2pintsoftware.com"><img src="/_media/logos/2pint.png?w=106&amp;h=33&amp;tok=b919c8" class="mediacenter" title="2Pint Software" alt="2Pint Software" width="106" height="33" /></a>
</p>
<p>
<a href="https://digitalintelligence.com" class="media" title="https://digitalintelligence.com"><img src="/_media/logos/digitalintelligence.png?w=150&amp;h=28&amp;tok=42b260" class="mediacenter" title="Digital Intelligence" alt="Digital Intelligence" width="150" height="28" /></a>
</p>
</div>
<h2 id="advanced_topics">Advanced topics</h2>
<div class="level2">
<p>
<a href="/_detail/clipart/books.png?id=wimboot" class="media" title="clipart:books.png"><img src="/_media/clipart/books.png?w=180&amp;h=180&amp;tok=bcf6a6" class="mediaright" title="Some books" alt="Some books" width="180" height="180" /></a>
</p>
</div>
<h3 id="multi-image_wim_files">Multi-image WIM files</h3>
<div class="level3">
<p>
A WIM file can contain multiple bootable images. You can use the <code>index=&lt;N&gt;</code> command-line option to select the image to be booted. For example:
</p>
<pre class="code"> kernel wimboot index=2</pre>
</div>
<h3 id="injected_files">Injected files</h3>
<div class="level3">
<p>
You can provide additional files to <code>wimboot</code>. These files will appear within the <code>X:\Windows\System32</code> directory. For example:
</p>
<pre class="code"> kernel wimboot
initrd winpeshl.ini winpeshl.ini
initrd startup.bat startup.bat
initrd boot/bcd BCD
initrd boot/boot.sdi boot.sdi
initrd sources/boot.wim boot.wim
boot</pre>
<p>
You can use this to control the boot process after Windows PE has started. For example, you can use a <a href="/howto/winpe#adding_a_startup_batch_file" class="wikilink1" title="howto:winpe">startup batch file</a> to automatically start the Windows installer from a network share.
</p>
<p>
You can disable this behaviour by using the <code>rawwim</code> command-line option. For example:
</p>
<pre class="code"> kernel wimboot rawwim</pre>
</div>
<h3 id="custom_boot_manager">Custom boot manager</h3>
<div class="level3">
<p>
<code>wimboot</code> will attempt to extract an appropriate boot manager (such as <code>bootmgr</code>, <code>bootmgr.exe</code> or <code>bootmgfw.efi</code>) from the WIM file.
</p>
<p>
You can disable this behaviour by explicitly providing an appropriate set of boot manager binaries. For example:
</p>
<pre class="code"> kernel wimboot
initrd bootmgr bootmgr
initrd efi/boot/bootx64.efi bootx64.efi</pre>
</div>
<h3 id="disabling_automatic_bcd_modifications">Disabling automatic BCD modifications</h3>
<div class="level3">
<p>
<code>wimboot</code> will automatically patch standard BIOS-compatible boot configuration data (BCD) files to allow them to be used on UEFI systems, by changing all occurrences of the string “<code>.exe</code>” to “<code>.efi</code>”.
</p>
<p>
You can disable this behaviour by using the <code>rawbcd</code> command-line option. For example:
</p>
<pre class="code"> kernel wimboot rawbcd</pre>
</div>
<h3 id="disabling_debug_messages">Disabling debug messages</h3>
<div class="level3">
<p>
<code>wimboot</code> will display some debug messages by default, to assist in diagnosing problems that may occur during booting.
</p>
<p>
You can disable these debug messages by using the <code>quiet</code> command-line option. For example:
</p>
<pre class="code"> kernel wimboot quiet</pre>
</div>
<h3 id="displaying_graphical_boot_messages">Displaying graphical boot messages</h3>
<div class="level3">
<p>
<code>wimboot</code> will force the Windows boot manager to display error messages in text mode. It does this to work around a bug in some versions of the Windows boot manager, which would otherwise fail to display error messages unless suitable font files are provided.
</p>
<p>
You can disable this behaviour by using the <code>gui</code> command-line option and by providing all of the required font files. For example:
</p>
<pre class="code"> kernel wimboot gui
initrd boot/fonts/segmono_boot.ttf segmono_boot.ttf
initrd boot/fonts/segoe_slboot.ttf segoe_slboot.ttf
initrd boot/fonts/segoen_slboot.ttf segoen_slboot.ttf
initrd boot/fonts/wgl4_boot.ttf wgl4_boot.ttf</pre>
</div>
<h3 id="disabling_paging">Disabling paging</h3>
<div class="level3">
<p>
<code>wimboot</code> will automatically use paging to relocate the data files above 4GB if possible, to allow for the use of large <code>.wim</code> files on BIOS systems.
</p>
<p>
You can disable this behaviour by using the <code>linear</code> command-line option. For example:
</p>
<pre class="code"> kernel wimboot linear</pre>
</div>
<h2 id="internals">Internals</h2>
<div class="level2">
<p>
For more detailed information about the internal workings of wimboot, see the <a href="/appnote/wimboot_architecture" class="wikilink1" title="appnote:wimboot_architecture">wimboot architecture guide</a>.
</p>
</div>
<h2 id="troubleshooting">Troubleshooting</h2>
<div class="level2">
<p>
Try adding the commands <code><a href="/cmd/imgstat" class="wikilink1" title="cmd:imgstat">imgstat</a></code> and <code><a href="/cmd/prompt" class="wikilink1" title="cmd:prompt">prompt</a></code> to your iPXE script, to allow you to check that all of the files have loaded correctly. For example:
</p>
<pre class="code"> #!ipxe
kernel wimboot
initrd boot/bcd BCD
initrd boot/boot.sdi boot.sdi
initrd sources/boot.wim boot.wim
imgstat
prompt
boot</pre>
<p>
Check that only the expected files are present in the list. You may need to use the <code><a href="/cmd/imgfree" class="wikilink1" title="cmd:imgfree">imgfree</a></code> command to discard any unwanted files.
</p>
<p>
You can also try adding the <code>pause</code> command-line option for <code>wimboot</code>. For example:
</p>
<pre class="code"> kernel wimboot pause</pre>
<p>
This will instruct <code>wimboot</code> to wait for a keypress before booting Windows, to give you a further opportunity to observe any messages that may be displayed.
</p>
<p>
If you are unable to resolve your problem, then you can <a href="/contact" class="wikilink1" title="contact">contact</a> the iPXE developers and other iPXE users.
</p>
</div>
<!-- ......... wikipage stop ......... -->
</div>
<div class="clearer"></div>
<!-- footer -->
<div class="stylefoot">
<div class="bar" id="bar__bottom">
<!-- page metadata -->
<div class="meta">
<div class="doc">
<bdi>wimboot.txt</bdi> · Last modified: 2021/04/30 11:01 by <bdi>mcb30</bdi> </div>
</div>
<!-- page actions -->
<div class="bar-left" id="bar__bottomleft">
<form class="button btn_login" method="get" action="/wimboot"><div class="no"><input type="hidden" name="do" value="login" /><input type="hidden" name="sectok" value="" /><button type="submit" title="Log In">Log In</button></div></form> </div>
<!-- search form -->
<div class="bar-right" id="bar__bottomright">
<div class="searchbox">
<form action="/start" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8"><input type="hidden" name="do" value="search" /><input type="hidden" name="id" value="wimboot" /><div class="no"><input name="q" type="text" class="edit" title="[F]" accesskey="f" placeholder="Search" autocomplete="on" id="qsearch__in" value="" /><button value="1" type="submit" title="Search">Search</button><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form> </div>
</div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="footerinc">
<a href="/feed.php" title="Recent changes RSS feed"><img src="/lib/tpl/doogiestpl/images/button-rss.png" width="80" height="15" alt="Recent changes RSS feed" /></a>
<a href="http://creativecommons.org/licenses/by-sa/4.0/" rel="license"><img src="/lib/images/license/button/cc-by-sa.png" alt="CC Attribution-Share Alike 4.0 International" /></a>
<a href="https://dokuwiki.org/" title="Driven by DokuWiki"><img src="/lib/tpl/doogiestpl/images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a>
</div>
<!-- mcb30 - added CC attribution footer -->
<div class="dokuwiki">
<div class="meta">
<div class="doc">
All uses of this content must include an attribution to the iPXE
project and the URL https://ipxe.org
</div>
<div class="doc">
References to "iPXE" may not be altered or removed.
</div>
</div>
</div>
<div class="no">
<img src="/lib/exe/indexer.php?id=wimboot&amp;1681392702" width="2" height="1" alt="" /></div>
</body>
</html>

View File

@@ -7,5 +7,5 @@ cat ./resources/default-full | \
sed -e "s/__NFSSERVERIP__/${NFSSERVERIP}/g" \
-e "s/__MENUTITLE__/${MENUTUTLE}/g" \
-e "s/__MENUBACKGROUND__/${MENUBACKGROUND}/g" > ${TFTP}/pxelinux.cfg/default
cp -av ./free ${TFTP}/
cp -av ./non-free ${TFTP}/
./configure-debian-system.sh

View File

@@ -0,0 +1,11 @@
#!/bin/sh
. ./settings.sh
echo "Generating PXE Menu..."
cat ./resources/default-minimal | \
sed -e "s/__NFSSERVERIP__/${NFSSERVERIP}/g" \
-e "s/__MENUTITLE__/${MENUTUTLE}/g" \
-e "s/__MENUBACKGROUND__/${MENUBACKGROUND}/g" > ${TFTP}/pxelinux.cfg/default
./configure-debian-system.sh

View File

@@ -1,3 +1,3 @@
#!/bin/sh
apt install -y git tftpd-hpa nfs-kernel-server lighttpd ipxe pxelinux syslinux syslinux-common sudo
apt install -y git tftpd-hpa nfs-kernel-server lighttpd ipxe pxelinux syslinux syslinux-common sudo p7zip p7zip-full

View File

Before

Width:  |  Height:  |  Size: 407 KiB

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -0,0 +1,212 @@
rootprompt 0
path bios/
default bios/vesamenu.c32
TIMEOUT 300
MENU TITLE __MENUTITLE__
MENU BACKGROUND __MENUBACKGROUND__
MENU ROWS 15
MENU TABMSGROW 20
MENU TIMEOUTROW 22
LABEL disk0
localboot 0
MENU LABEL Starte von lokaler Platte (Default)
label -
MENU LABEL Live-Systeme: --------------------------
MENU DISABLE
LABEL knx
MENU LABEL * Knoppix 9.1 Live, Grafisch, 32Bit
KERNEL free/knx/boot/isolinux/linux
APPEND nfsdir=__NFSSERVERIP__:/srv/tftp/free/knx nodhcp lang=de ramdisk_size=100000 init=/sbin/init apm=power-off nomce loglevel=1 initrd=free/knx/boot/isolinux/miniroot.gz libata.force=noncq tz=europe/Berlin hpsa.hpsa_allow_any=1 BOOT_IMAGE=knoppix
MENU BEGIN
MENU LABEL * Weitere Optionen...
LABEL knx
MENU LABEL * Knoppix 9.1 Live, Textmodus, 32Bit
KERNEL free/knx/boot/isolinux/linux
APPEND nfsdir=__NFSSERVERIP__:/srv/tftp/free/knx nodhcp lang=de ramdisk_size=100000 init=/sbin/init apm=power-off nomce loglevel=1 initrd=free/knx/boot/isolinux/miniroot.gz libata.force=noncq tz=Europe/Berlin hpsa.hpsa_allow_any=1 BOOT_IMAGE=knoppix 2
LABEL slitazfull
MENU LABEL * Slitaz Linux Live, Grafisch
linux slitaz/boot/bzImage
APPEND initrd=slitaz/boot/rootfs4.gz,slitaz/boot/rootfs3.gz,slitaz/boot/rootfs2.gz,slitaz/boot/rootfs1.gz root=/dev/null video=-32 autologin kbd lang=de_DE kmap=de-latin1 tz=Europe/Berlin
LABEL slitazcore
MENU LABEL * Slitaz Linux Live, minimal
linux slitaz/boot/bzImage
APPEND initrd=slitaz/boot/rootfs4.gz root=/dev/null video=-32 autologin kbd lang=de_DE kmap=de-latin1 tz=Europe/Berlin
LABEL slitazf
MENU LABEL * Slitaz Linux Floppyimage
kernel memdisk
append initrd=img/floppy-grub4dos
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Backup & Restore: ----------------------
MENU DISABLE
LABEL rescue
MENU LABEL * Rescuezilla Live
kernel free/rz/casper/vmlinuz
APPEND initrd=free/rz/casper/initrd.lz netboot=nfs root=/dev/nfs ramdisk_size=1500000 ip=dhcp nfsroot=__NFSSERVERIP__:/srv/tftp/free/rz/ boot=casper locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de quiet
MENU BEGIN
MENU LABEL * Weitere Optionen...
LABEL rescue2
MENU LABEL * Rescuezilla Live Fail-Safe
kernel free/rz/casper/vmlinuz
APPEND initrd=free/rz/casper/initrd.lz netboot=nfs root=/dev/nfs ramdisk_size=1500000 ip=dhcp nfsroot=__NFSSERVERIP__:/srv/tftp/free/rz/ boot=casper locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de xforcevesa nomodeset vga=791 quiet
LABEL cz
MENU LABEL * Clonezilla Live (Ramdisk)
KERNEL free/cz/live/vmlinuz
APPEND initrd=free/cz/live/initrd.img boot=live username=user union=overlay config components noswap edd=on nomodeset nodmraid locales=de_DE.UTF-8 keyboard-layouts=de-latin-1 ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=tftp://__NFSSERVERIP__/free/cz/live/filesystem.squashfs quiet
LABEL acr18
MENU LABEL * Acronis True Image Home 2018
LINUX memdisk
INITRD non-free/acronis/acronis2018.iso
APPEND iso raw
LABEL acr14
MENU LABEL * Acronis True Image Home 2014
LINUX memdisk
INITRD non-free/acronis/acronis2014.iso
APPEND iso raw
LABEL acr11
MENU LABEL * Acronis True Image Home 2011
LINUX memdisk
INITRD non-free/acronis/acronis2011.iso
APPEND iso raw
LABEL acr10
MENU LABEL * Acronis True Image 2010
LINUX memdisk
INITRD non-free/acronis/acronis2010.iso
APPEND iso raw
LABEL acr09
MENU LABEL * Acronis True Image 2009
LINUX memdisk
INITRD non-free/acronis/acronis2009.iso
APPEND iso raw
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Installer: ------------------------------
MENU DISABLE
MENU BEGIN
MENU LABEL * Linux Installer...
LABEL deb12
MENU LABEL * Debian 12 Installer 64Bit Textmodus
CONFIG free/deb-bookworm/debian-installer/amd64/pxelinux.cfg/default
APPEND free/deb-bookworm/
LABEL deb12
MENU LABEL * Debian 12 Installer 32Bit Textmodus
CONFIG free/deb-bookworm/debian-installer/i386/pxelinux.cfg/default
APPEND free/deb-bookworm/
LABEL deb11
MENU LABEL * Debian 11 Installer 64Bit Textmodus
CONFIG free/deb-bullseye/debian-installer/amd64/pxelinux.cfg/default
APPEND free/deb-bullseye/
LABEL deb11
MENU LABEL * Debian 11 Installer 32Bit Textmodus
CONFIG free/deb-bullseye/debian-installer/i386/pxelinux.cfg/default
APPEND free/deb-bullseye/
LABEL zurueck...
MENU EXIT
MENU END
MENU BEGIN
MENU LABEL * Windows Installer...
LABEL win10
MENU LABEL * Windows 10
KERNEL memdisk
INITRD non-free/windows/winpe.iso
APPEND iso raw
LABEL win10
MENU LABEL * Windows 10 iPXE Test
KERNEL ipxe.lkrn
APPEND dhcp && chain non-free/wimboot.ipxe
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Boot- & System-Tools: --------------------
MENU DISABLE
LABEL hdt
MENU LABEL * Hardware Erkennung
COM32 bios/hdt.c32
LABEL memtestpl
MENU LABEL * Memtest86+
kernel free/memtest86+
MENU BEGIN
MENU LABEL * Weitere Optionen...
label sbm
MENU LABEL * Smart Boot Manager
kernel memdisk
append initrd=free/sbm.imz
LABEL plop
MENU LABEL * PloP Boot Manager
kernel free/plop.exe
LABEL ipxe
MENU LABEL * iPXE Shell
KERNEL ipxe.lkrn dhcp && shell
LABEL memtest
MENU LABEL * Memtest86
kernel free/memtest86
LABEL fdos
MENU LABEL * iPXE FreeDOS Live-CD
KERNEL ipxe.lkrn dhcp && sanboot http://__NFSSERVERIP__/free/FD13LIVE.iso
LABEL fdos
MENU LABEL * FreeDOS Bootdisk
KERNEL memdisk
APPEND initrd=free/FD13BOOT.img
label win98
MENU LABEL * Windows 98 Bootdisk (DOS 7)
kernel memdisk
append initrd=non-free/win98.img
label ether
MENU LABEL * Etherboot
kernel memdisk
append initrd=free/ether.img
LABEL zurueck...
MENU EXIT
MENU END
# interessante optionen...
# rescuezilla: APPEND initrd=rescue/initrd.lz boot=live noswap fetch=tftp://__NFSSERVERIP__:/rescue/filesystem.squashfs toram ---

View File

@@ -3,8 +3,8 @@ path bios
default bios/vesamenu.c32
TIMEOUT 300
MENU TITLE PXE Bootserver
MENU BACKGROUND splash.png
MENU TITLE PXE __MENUTITLE__
MENU BACKGROUND __MENUBACKGROUND__
LABEL disk0
localboot 0
@@ -22,5 +22,9 @@ LABEL demo
KERNEL ipxe.lkrn dhcp && chain http://boot.ipxe.org/demo/boot.php
LABEL fdos
MENU LABEL * iPXE FreeDOS over HTTP
MENU LABEL * iPXE FreeDOS over HTTP and Internet
KERNEL ipxe.lkrn dhcp && sanboot http://boot.ipxe.org/freedos/fdfullcd.iso
LABEL fdos
MENU LABEL * iPXE FreeDOS over HTTP Local Server
KERNEL ipxe.lkrn dhcp && sanboot http://__NFSSERVERIP__/free/FD13LIVE.iso

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 276 KiB

After

Width:  |  Height:  |  Size: 276 KiB

View File

@@ -0,0 +1,16 @@
[global]
workgroup = PXE
map to guest = bad user
usershare allow guests = yes
[tftp]
browsable = true
read only = yes
guest ok = yes
path = /srv/tftp
[windows]
browsable = true
read only = yes
guest ok = yes
path = /srv/tftp/non-free/windows

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,14 @@
# create new
# if you set some devices, add <target>-</target> and set the same way with follows
# naming rule : [ iqn.(year)-(month).(reverse of domain name):(any name you like) ]
<target iqn.1975-11.tld.ostrach:win10dvd>
# provided devicce as a iSCSI target
backing-store /root/pxe-bootserver/temp/Windows10_21H2_2021-11-18.iso
# iSCSI Initiator's IQN you allow to connect
#initiator-name iqn.2021-08.world.srv:node01.initiator01
# authentication info ( set anyone you like for "username", "password" )
#incominguser username password
</target>

View File

@@ -0,0 +1,11 @@
#!ipxe
prompt --key 0x02 --timeout 2000 Press Ctrl-B for the iPXE command line... && shell ||
set keep-san 1
sanhook http://192.168.75.3/non-free/windows
kernel free/wimboot
initrd boot/bcd BCD
initrd boot/boot.sdi boot.sdi
initrd http://192.168.75.3/non-free/windows/sources/boot.wim boot.wim
boot

View File

@@ -0,0 +1,14 @@
@echo off
echo Init Network...
wpeinit
echo Mount CIFS-Share with Windows 10 DVD...
net use z: \\__NFSSERVERIP__\windows
z:
echo Start Windows Setup...
setup.exe
pause

22
old-version/runall.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/sh
. ./settings.sh
# 1. install needed debian packages:
./install-debian-packages.sh
# 2. configure debian system
./configure-debian-system.sh
# 3. configure full system menu
./generate-full-menu.sh
#./generate-minimal-menu.sh
# 4. download free stuff (knoppix...)
./download-free.sh
# 5. download windows stuff
./configure-windows-pxeboot.sh
# 6. rerun some settings...
./configure-debian-system.sh

10
old-version/settings.sh Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
TFTP=/srv/tftp
NFSSERVERIP=192.168.75.3
MENUTUTLE="Sample Title Text"
MENUBACKGROUND="splash.png"
USERID=technik
GROUPID=technik

27
old-version/todo.md Normal file
View File

@@ -0,0 +1,27 @@
# To Do...
* Modular pxelinux menu:
* split menu in parts: Knoppix, Rescuezilla, Acronis, etc.
* use settings.sh as configuration file, e.g. MENU_KNOPPIX=YES or MENU_NON-FREE=NO
* create template files in ./resources: menu-knoppix.cfg, menu-rescuezilla.cfg
* use INCLUDE command if possible https://wiki.syslinux.org/wiki/index.php?title=Menu#INCLUDE
* read settings.sh and parse templates to fill in variables
* iSCSI Target:
* apt install tgt
* zless /usr/share/doc/tgt/README.iscsi.gz
* tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2020-11.tld.ostrach:target1
* tgtadm --lld iscsi --op show --mode target
* tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/hdc1
* tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
* https://www.server-world.info/en/note?os=Debian_11&p=iscsi&f=2
* http://etherboot.org/wiki/sanboot
* https://ipxe.org/howto/winpe
1. install tgt
2. parse settings.sh and create tgt config files to:
3. a Windows 10 DVD target (.iso under /srv/tftp/non-free/windows10.iso)
Remeber: Check if a iSCSI Tape-Target could be used to trick a Tape Backup Software to use HardDisks as Tapes

View File

@@ -1,174 +0,0 @@
rootprompt 0
path bios/
default bios/vesamenu.c32
TIMEOUT 300
MENU TITLE __MENUTITLE__
MENU BACKGROUND __MENUBACKGROUND__
MENU ROWS 15
MENU TABMSGROW 20
MENU TIMEOUTROW 22
LABEL disk0
localboot 0
MENU LABEL Starte von lokaler Platte (Default)
label -
MENU LABEL Live-Systeme: --------------------------
MENU DISABLE
LABEL knx9g
MENU LABEL * Knoppix 9.1 Live, Grafisch
KERNEL knx9/linux
APPEND nfsdir=__NFSSERVERIP__:/srv/knx9 nodhcp lang=de ramdisk_size=100000 init=/sbin/init apm=power-off nomce loglevel=1 initrd=knx9/miniroot.gz libata.force=noncq tz=localtime hpsa.hpsa_allow_any=1 hpsa.hpsa_allow_any=1 BOOT_IMAGE=knoppix
MENU BEGIN
MENU LABEL * Weitere Optionen...
LABEL knx9t
MENU LABEL * Knoppix 9.1 Live, Textmode
KERNEL knx9/linux
APPEND nfsdir=__NFSSERVERIP__:/srv/knx9 nodhcp lang=de ramdisk_size=100000 init=/sbin/init apm=power-off nomce loglevel=1 initrd=knx9/miniroot.gz libata.force=noncq tz=localtime hpsa.hpsa_allow_any=1 hpsa.hpsa_allow_any=1 BOOT_IMAGE=knoppix 2
LABEL slitazfull
MENU LABEL * Slitaz Linux Live, Grafisch
linux slitaz/boot/bzImage
APPEND initrd=slitaz/boot/rootfs4.gz,slitaz/boot/rootfs3.gz,slitaz/boot/rootfs2.gz,slitaz/boot/rootfs1.gz root=/dev/null video=-32 autologin kbd lang=de_DE kmap=de-latin1 tz=Europe/Berlin
LABEL slitazcore
MENU LABEL * Slitaz Linux Live, minimal
linux slitaz/boot/bzImage
APPEND initrd=slitaz/boot/rootfs4.gz root=/dev/null video=-32 autologin kbd lang=de_DE kmap=de-latin1 tz=Europe/Berlin
LABEL slitazf
MENU LABEL * Slitaz Linux Floppyimage
kernel memdisk
append initrd=img/floppy-grub4dos
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Backup & Restore: ----------------------
MENU DISABLE
LABEL rescue
MENU LABEL * Rescuezilla Live
kernel rescue/vmlinuz
APPEND initrd=rescue/initrd.lz netboot=nfs root=/dev/nfs ramdisk_size=1500000 ip=dhcp nfsroot=__NFSSERVERIP__:/srv/rescue boot=casper locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de console-setup/layoutcode=de quiet
MENU BEGIN
MENU LABEL * Weitere Optionen...
LABEL rescue2
MENU LABEL * Rescuezilla Live Fail-Safe
kernel rescue/vmlinuz
APPEND initrd=rescue/initrd.lz netboot=nfs root=/dev/nfs ramdisk_size=1500000 ip=dhcp nfsroot=__NFSSERVERIP__:/srv/rescue boot=casper locale=de_DE keyboard-configuration/layoutcode=de bootkbd=de> xforcevesa nomodeset vga=791 quiet
LABEL clonei686
MENU LABEL * Clonezilla Live i686 (Ramdisk)
KERNEL clone/vmlinuz.i686
APPEND initrd=clone/initrd.i686.img boot=live username=user union=overlay config components noswap edd=on nomodeset nodmraid locales=de_DE.UTF-8 keyboard-layouts=de-latin-1 ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=tftp://__NFSSERVERIP__/clone/filesystem.i686.squashfs quiet
LABEL clonex64
MENU LABEL * Clonezilla Live x64 (Ramdisk)
KERNEL clone/vmlinuz.x64
APPEND initrd=clone/initrd.x64.img boot=live username=user union=overlay config components noswap edd=on nomodeset nodmraid locales=de_DE.UTF-8 keyboard-layouts=de-latin-1 ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=tftp://__NFSSERVERIP__/clone/filesystem.x64.squashfs quiet
LABEL acr11
MENU LABEL * Acronis True Image Home 2011
LINUX memdisk
INITRD non-free/acronis/acronis2011.iso
APPEND iso raw
LABEL acr10
MENU LABEL * Acronis True Image 2010
LINUX memdisk
INITRD non-free/acronis/acronis2010.iso
APPEND iso raw
LABEL acr09
MENU LABEL * Acronis True Image 2009
LINUX memdisk
INITRD non-free/acronis/acronis2009.iso
APPEND iso raw
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Installer: ------------------------------
MENU DISABLE
MENU BEGIN
MENU LABEL * Debian Installer...
LABEL deb
menu label * Debian 12 Installer 64Bit Textmodus
kernel deb/linux
append vga=788 initrd=deb/initrd.gz --- quiet
LABEL deb64
MENU LABEL * Debian 11 Installer 64Bit Textmodus
CONFIG deb/debian-installer/amd64/pxelinux.cfg/default
APPEND deb/
LABEL deb32
MENU LABEL * Debian 11 Installer 32Bit Textmodus
CONFIG deb/debian-installer/i386/pxelinux.cfg/default
APPEND deb/
LABEL zurueck...
MENU EXIT
MENU END
label -
MENU LABEL Boot- & System-Tools: --------------------
MENU DISABLE
LABEL hdt
MENU LABEL * Hardware Erkennung
COM32 bios/hdt.c32
LABEL memtestpl
MENU LABEL * Memtest86+
kernel free/memtest86+
MENU BEGIN
MENU LABEL * Weitere Optionen...
label sbm
MENU LABEL * Smart Boot Manager
kernel memdisk
append initrd=free/sbm.imz
LABEL plop
MENU LABEL * PloP Boot Manager
kernel free/plop.exe
LABEL ipxe
MENU LABEL * iPXE Shell
KERNEL ipxe.lkrn dhcp && shell
LABEL memtest
MENU LABEL * Memtest86
kernel free/memtest86
label win98
MENU LABEL * Windows 98 Bootdisk (DOS 7)
kernel memdisk
append initrd=non-free/win98.img
label ether
MENU LABEL * Etherboot
kernel memdisk
append initrd=free/ether.img
LABEL zurueck...
MENU EXIT
MENU END
# interessante optionen...
# rescuezilla: APPEND initrd=rescue/initrd.lz boot=live noswap fetch=tftp://__NFSSERVERIP__:/rescue/filesystem.squashfs toram ---

View File

@@ -0,0 +1,25 @@
rootprompt 0
path bios
default bios/vesamenu.c32
#TIMEOUT 300
MENU TITLE Minimal PXE Bootmenue
LABEL disk0
localboot 0
MENU LABEL Boot from first Harddisk
LABEL -
MENU LABEL --------------------------
LABEL ipxe
MENU LABEL * iPXE Shell
KERNEL ipxe dhcp && shell
LABEL demo
MENU LABEL * iPXE Demonstration
KERNEL ipxe dhcp && chain http://boot.ipxe.org/demo/boot.php
LABEL fdos
MENU LABEL * iPXE FreeDOS over HTTP and Internet
KERNEL ipxe dhcp && sanboot http://boot.ipxe.org/freedos/fdfullcd.iso

View File

@@ -0,0 +1,11 @@
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
__D_TFTP__ *(ro,nohide,no_root_squash,no_subtree_check,insecure)

View File

@@ -0,0 +1,19 @@
[global]
workgroup = PXE
map to guest = bad user
usershare allow guests = yes
[tftp]
browsable = true
read only = false
guest ok = yes
force user = root
path = __D_TFTP__
[rootdir]
browsable = true
read only = false
guest ok = yes
force user = root
path = /root

View File

@@ -1,8 +1,68 @@
#!/bin/sh
TFTP=/srv/tftp
NFSSERVERIP=192.168.75.3
#
# Global Settings
#
# The location of all the TFTP stuff
D_TFTP=/srv/tftp
# Full path of this project:
D_ROOTDIR=/root/pxe-bootserver
D_RESRC=${D_ROOTDIR}/resrc.d
# the ip and FQDN for this server
HOST_IP=192.168.75.3
HOST_FQDN=tftp.ostrach.tld
#
# Functions
#
fservice (){
# $1 is enabled yes/no
# $2 is the command
# $3 is the program name
# $4 is a list of packages
if [ "$1" = "yes" ] || [ "$1" = "YES" ]; then
echo "$3 is enabled:"
case $2 in
# INIT
# Install needed Debian Packages:
init)
echo " installing: $4"
apt install -y $4
;;
start)
if ! [ "$3" = "none" ]; then
echo " starting $3 ..."
systemctl start $3
fi
;;
stop)
if ! [ "$3" = "none" ]; then
echo " stopping $3 ..."
systemctl stop $3
fi
;;
restart)
if ! [ "$3" = "none" ]; then
echo " restarting $3 ..."
systemctl restart $3
fi
;;
esac
else
echo "$3 is disabled. "
if ! [ "$3" = "none" ]; then
systemctl stop $3
fi
fi
}
MENUTUTLE="Sample Title Text"
MENUBACKGROUND="splash.png"

135
todo.md Normal file
View File

@@ -0,0 +1,135 @@
# To Do...
# Modular Approach
## Folder Structure
* main.sh
* ./services
* main
* tftpd-hpa
* plugin.sh
* config.sh
* ./templates
* ./build
* nfs
* samba
* iscsi / tgt
* lighthttpd
* ./menues
* ./pxelinux
* plugin.sh
* config.sh
* ./templates
* ./build
* ./ipxe
* ./custom-made
* ./plugins
* Knoppix
* plugin.sh
* config.sh
* ./templates
* ./build
* ./resources
* ./downloads
* ./temp
* Rescuezilla
* FreeDOS
* Clonezilla
## Structure
### main.sh
* drives all actions:
* init - bootstrap the bare minimum: debian packages, config files, etc.
* build - build all enabled plugins: trigger downloads, file processing
* build-all - build even disabled plugins
* start / stop / restart - handle services
* points all plugins to source global variables from ./services/main (could be changed!)
* provides global variables:
* IP / Hostname
### ./services
* make services modular
* plugin.sh
* manages all actions: downloads, file processing, template parsing
* config.sh
* holds plugin specific variables
* ./main
* configure settings:
* variables
* tftp root dir
* hook: pxelinux or ipxe menus? so plugins could provide matching menue entries
* ./tftp-hpa and other services:
* templates for config files
### ./menues
* make modular menues
* branding
* which menue to use: menu.c32 or vesamenu.c32, even use iPXE menues (may be broken by plugins)
* create menu sections: (maybe a kind of hook for plugin-types?)
* put plugins into sections
* types: livesystem, rescue, tools, installer, etc.
* priority: sort stanzas
### ./plugins
* plugin contains all needed files
* plugin.sh
* manages all actions: downloads, file processing, template parsing
* config.sh
* plugin name
* enabled: y/n
* type: rescue, os, installer (must be one of the menue hooks)
* depends: nfs, samba, etc.
* plugin specific variables and settings
# Central config file approach
a main script with a conf.d/ directory. config files are sorted by numbers
and special names: menu_20_pxelinux.conf, service_10_nfs.conf, plugin_30_knoppix.conf
each .conf file contains the needed variables
the main script can select files by name (menu,service,plugin) and sort them by number
for the desired lineup.
menu* files build the menu and processes all plugin* files to fill the menu
### File structure
* main.sh
* ./conf.d/
* menu_10_default.conf
* service_10_tftp.conf
* plugin_10_knoppix.conf
* plugin_20_rescuezilla.conf
### menu*.conf
* find all enabled plugins and read them in a sorted array
* Modular pxelinux menu:
* split menu in parts: Knoppix, Rescuezilla, Acronis, etc.
* use settings.sh as configuration file, e.g. MENU_KNOPPIX=YES or MENU_NON-FREE=NO
* create template files in ./resources: menu-knoppix.cfg, menu-rescuezilla.cfg
* use INCLUDE command if possible https://wiki.syslinux.org/wiki/index.php?title=Menu#INCLUDE
* read settings.sh and parse templates to fill in variables
* iSCSI Target:
* apt install tgt
* zless /usr/share/doc/tgt/README.iscsi.gz
* tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2020-11.tld.ostrach:target1
* tgtadm --lld iscsi --op show --mode target
* tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/hdc1
* tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
* https://www.server-world.info/en/note?os=Debian_11&p=iscsi&f=2
* http://etherboot.org/wiki/sanboot
* https://ipxe.org/howto/winpe
1. install tgt
2. parse settings.sh and create tgt config files to:
3. a Windows 10 DVD target (.iso under /srv/tftp/non-free/windows10.iso)
Remeber: Check if a iSCSI Tape-Target could be used to trick a Tape Backup Software to use HardDisks as Tapes