Via PXE / netboot, you can boot and install systems over network. Just switch the bios to PXE netboot.
You need dnsmasq, it includes a tftpd server, which serves the boot images.
Example config:
dhcp-range=192.168.20.100,192.168.20.150,12h dhcp-boot=pxelinux.0 enable-tftp tftp-root=/var/tftpd dhcp-option=3,192.168.20.1 dhcp-option=6,192.168.20.1
dnsmasq includes a tftp server, you just need to serve the pxe boot files from there. For debian, you can use:
this includes the bootmenu and is started, as soon as the client boots via pxe/tftp. put your matching config here.
# the debian installer. this is included in netboot.tar.gz path debian-installer/amd64/boot-screens/ include debian-installer/amd64/boot-screens/menu.cfg default debian-installer/amd64/boot-screens/vesamenu.c32 prompt 0 timeout 0
# another entry for debian live - run without installing: LABEL Debian LiveCD MENU DEFAULT KERNEL ::/debianlive/live/vmlinuz
# an automated installer, which downloads a preseed file: label Install Automat MENU DEFAULT kernel debian-installer/amd64/linux append vga=normal initrd=debian-installer/amd64/initrd.gz netcfg/choose_interface=eth0 domain=mynet keyboard-configuration/xkb-keymap=de locale=en_US.UTF-8 debian-installer/country=DE debian-installer/language=en debian-installer/keymap=de console-keymaps-at/keymap=de auto-install/enable=false preseed/url=http://192.168.20.22/netboot/preseed.cfg DEBCONF_DEBUG=5 -- quiet
You can automate the debian installer, so all questions get answered automagically, including formatting, network, software, everything :)
Add a download url for the preseed file to the bootmenu in pxelinux.cfg/default. This can be served via nfs or web. Some things (like keyboard language) must be set in the 'append' line of the bootmenu - see above.
If you preseed hangs and asks questions, you can switch to console 2 to see, what is going on.
Complete pressed.cfg example:
Some things are hard to preseed, so you run a script after the installer competes, inside the new system.
Download the script and run it, with a similar command in the preseed file:
d-i preseed/late_command string in-target wget -P /tmp/ http://192.168.1.1/netboot/postinst.sh; in-target chmod +x /tmp/postinst.sh; in-target /tmp/postinst.sh
Complete postinstall script example: postinst_demo.txt