Mightyboot is a collection of services to quickly set up a PXE and HTTP(S) Boot server for an isolated network environment. It comprises of 4 services:
- dhcp - DHCP service for IPv4
- dhcp6 - DHCP service for IPv6
- dnsmasq - DNS and tftp services
- lighttpd - HTTP service
All service are run in the host network mode.
The related settings are controlled by the env file. There are several environment variables, and the start-up scripts in the services will adjust the config files accordingly. Here are the variables:
- IFACE - which network interface the services should listen to
- IP4_PREFIX - the prefix of IPv4 address of the target interface
- IP6_PREFIX - the prefix of IPv6 address of the target interface
- PXE_URI - the path to the bootloader in the tftp server
- SERVER_NAME - the domain name of the server
- HTTPBOOT_URI - the IPv4 HTTP URI to the UEFI bootloader
- HTTPBOOT6_URI - the IPv6 HTTP URI to the UEFI bootloader
- SERVER_KEY - the encrypt key for HTTPS
Mightyboot assumes the IP addresses of the interface are IP4_PREFIX.1/24 and IP6_PREFIX1/64.
For example, to use mightyboot on eth0 with IP4_PREFIX=192.168.110 and IP6_PREFIX=2001:db8:f00f:cafe::, then the IP addresses of eth0 should be 192.168.110.1/24 and 2001:db8:f00f:cafe::1/64.
The ranges of DHCP IP addresses are IP4_PREFIX.100 to IP4_PREFIX.200 and IP6_PREFIX42:10 to IP6_PREFIX42:99. So, the ranges of DHCP IP addresses in the previous example will be 192.168.110.100 to 192.168.110.200 and 2001:db8:f00f:cafe::42:10 to 2001:db8:f00f:cafe::42:99.
Mightyboot mounts data/tftproot as the tftproot for dnsmasq. The user has to install the pxe bootlader in data/tftproot and set PXE_URI properly.
For openSUSE/SLE, we just copy EFI and boot from openSUSE/SLE DVD image to data/tftproot/opensuse, and set PXE_URI as /opensuse/EFI/BOOT/bootx64.efi.
NOTE: Remember to adjust the paths in grub.cfg
The domain name of the server can be customized with SERVER_NAME. The dnsmasq service will map the default IPv4/IPv6 address to the specified domain name.
Mightyboot mounts data/www/htdocs to /srv/www/htdocs for lighttpd service, so the HTTPBoot bootloader has to be installed in data/www/htdocs.
There are 2 HTTPBoot variables: HTTPBOOT_URI for IPv4 and HTTPBOOT6_URI for IPv6. Both of them point to the specified bootloader.
Since HTTP server also can be the installation server of openSUSE/SLE, we can copy everything in the installation DVD to data/www/htdocs/suse and set the URI to "http://SERVER_NAME/suse/EFI/BOOT/bootx64.efi".
NOTE: Remember to adjust the paths in grub.cfg
To enable HTTPS support in mightyboot, you need a server key. Please refer SSL Support for HTTP Server to create a test key if necessary. The server key must contain both the public certificate and the private key.
After creating the server key, copy the server key file to data/lighttpd. Then, assign the file name of the server key to SERVER_KEY. For example:
SERVER_KEY=server.pem
There is a grub.cfg example in data in case you need a reference of grub.cfg.
For the docker users, Just make sure that your system already install docker and docker-compose and run:
$ docker-compose up
This first startup time will be longer since docker-compose has to download and build images for the services. Once the images are cached, it will be much faster.
For the podman users, mightyboot-podman.sh
is the script to manage the
container services. Since podman requires the root privilege to control the
host network interface, it is necessary to run the script with sudo
. There
are 5 subcommands in the script: start
, rebuild
, stop
, remove
, and
status
. To launch the services, just run:
$ sudo ./mightyboot-podman.sh start
Then the script will build the images (for the first startup) and start the services.
All messages from the services are redirected to journald. For example, to check the messages from the DHCP container:
$ sudo journalctl --identifier mightyboot-dhcp