3.8 KiB
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
- ./pxelinux
- ./plugins
- Knoppix
- plugin.sh
- config.sh
- ./templates
- ./build
- ./resources
- ./downloads
- ./temp
- Rescuezilla
- FreeDOS
- Clonezilla
- Knoppix
- ./services
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
- apt install tgt
-
https://www.server-world.info/en/note?os=Debian_11&p=iscsi&f=2
- install tgt
- parse settings.sh and create tgt config files to:
- 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