{"id":13443024,"url":"https://github.com/ferrarimarco/docker-pxe","last_synced_at":"2025-04-04T12:07:55.150Z","repository":{"id":19276712,"uuid":"85958930","full_name":"ferrarimarco/docker-pxe","owner":"ferrarimarco","description":"A virtualized implementation of PXE supported by DNSMasq","archived":false,"fork":false,"pushed_at":"2025-03-17T03:12:50.000Z","size":119,"stargazers_count":142,"open_issues_count":2,"forks_count":58,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-28T11:08:37.988Z","etag":null,"topics":["boot","dnsmasq","docker-image","pxe"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ferrarimarco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-23T14:25:40.000Z","updated_at":"2025-03-22T22:16:50.000Z","dependencies_parsed_at":"2023-02-16T15:00:31.255Z","dependency_job_id":"68e2e95b-a047-442a-85d8-3d21256f9a72","html_url":"https://github.com/ferrarimarco/docker-pxe","commit_stats":{"total_commits":160,"total_committers":7,"mean_commits":"22.857142857142858","dds":0.46875,"last_synced_commit":"dd6ea00cc78649dd880b9c8cfbd143cd59b53958"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferrarimarco%2Fdocker-pxe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferrarimarco%2Fdocker-pxe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferrarimarco%2Fdocker-pxe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferrarimarco%2Fdocker-pxe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ferrarimarco","download_url":"https://codeload.github.com/ferrarimarco/docker-pxe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174418,"owners_count":20896078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boot","dnsmasq","docker-image","pxe"],"created_at":"2024-07-31T03:01:54.958Z","updated_at":"2025-04-04T12:07:55.127Z","avatar_url":"https://github.com/ferrarimarco.png","language":"Dockerfile","readme":"# Dockerized PXE\n\nA Docker image serving as a standalone [PXE](https://en.wikipedia.org/wiki/Preboot_Execution_Environment) (running dnsmasq). This server can be placed in an existing network infrastructure with an already configured DHCP server or in a network without any DHCP server.\n\nThis PXE currently serves:\n\n- [MemTest86+](http://www.memtest86.com/)\n\n## Dependencies\n\nThese are the dependencies required to build and run the container image:\n\n- Docker 1.12+\n\n## How to run\n\nThe `ENTRYPOINT` of this image is set to run `dnsmasq` in `no-daemon` mode.\n\nYou can add one or more desired `dhcp-range`s as command-line options. For more\ninformation about dnsmasq command-line options, refer to [dnsmasq documentation](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html).\n\nThe easiest way to run containers based off this container image without configuring DHCP relays in your network,\nis to run a such containers using the network of the host running them. If you're\nusing Docker, you can add the `--net=host` option when running the container:\n\n```shell\ndocker run -it --rm --net=host ferrarimarco/pxe\n```\n\nThe container image is also available on GitHub container registry: [`ghcr.io/ferrarimarco/pxe`](https://github.com/ferrarimarco/docker-pxe/pkgs/container/pxe).\n\nThis container image is multi-platform, and supports the following platforms:\n\n- `linux/amd64`\n- `linux/arm64`\n\n### Integrated DHCP server\n\nIf you want to enable the integrated DHCP server for a given IP address range add a `dhcp-range` option: `dhcp-range=x.x.x.x,y.y.y.y,z.z.z.z` where `x.x.x.x` is the start of the range, `y.y.y.y` is the end and `z.z.z.z` is the subnet mask.\n\n### Standalone DHCP server\n\nIf you want to use an existing DHCP server and let `dnsmasq` handle only the PXE, add a `dhcp-range` option: `dhcp-range=x.x.x.x,proxy` where `x.x.x.x` is the IP address of the server running dnsmasq.\n\n## How to modify the configuration\n\nAll the configuration files can be modified at will. Look at the Dockerfile to see where they are (mainly in `/etc` and `/var/lib/tftpboot`) and overwrite them with your own (mounting volumes from the Docker host or rebuilding the image).\n\n### Additional PXE Boot Menu Entries\n\nIf you just want to add additional menu entries to the boot menu, overwrite the contents of `/var/lib/tftpboot/pxelinux.cfg/additional_menu_entries` file.\nThe syntax for this file is described in the [syslinux documentation](http://www.syslinux.org/wiki/index.php?title=Config).\n\n#### Example: 2nd Memtest86+ plus Ubuntu 16.04 Boot Options\n\nHere is an `additional_menu_entries` file to include (along with the default Memtest86+) two additional boot options: a customized Memtest86+ and Ubuntu 16.04.\n\n\u003c!-- markdownlint-disable line-length --\u003e\n```text\nLABEL memtest86-2\n  MENU LABEL Memtest86+ 2nd entry\n  KERNEL /memtest/memtest86+\nLABEL ubuntu-16-04-amd64\n  MENU LABEL Ubuntu 16.04 amd64\n  KERNEL /ubuntu/16.04/16.04.2-server-amd64/install/netboot/ubuntu-installer/amd64/linux\n  APPEND /install/vmlinuz auto=true interface=eth0 hostname=cluster domain=home url=tftp://\u003cpxe-container-ip\u003e/preseed/16.04/preseed.cfg initrd=ubuntu/16.04/16.04.2-server-amd64/install/netboot/ubuntu-installer/amd64/initrd.gz debian-installer=en_US locale=en_US kbd-chooser/method=us keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA keyboard-configuration/variant=USA console-setup/ask_detect=false --\n```\n\u003c!-- markdownlint-enable line-length --\u003e\n\n## Testing and validating the setup\n\n### Test dependencies\n\n1. Virtualbox 5.1.16+\n1. Vagrant 1.9.3+\n\n### How to run the test environment\n\n1. Check the IP address ranged configured by the Virtualbox DHCP server and\n    configure your `dhcp-range` and `/var/lib/tftpboot/pxelinux.cfg/default` accordingly.\n1. Run the container with a suitable DHCP configuration and the `--net=host` option.\n1. Run `vagrant up` from the root of the directory where you cloned this\n    repository. A Virtualbox VM (with a NATed network adapter) will boot from\n    the given PXE.\n\n#### Example\n\nVirtualbox runs a DHCP server by default in each virtual network. If you want to\ntest the PXE feature you have to run a container based on this image with\ndnsmasq as a DHCP proxy (see [Standalone Mode](#standalone-dhcp-server)) and\nwith the host network stack (see the `--net=host` option) so you know in advance\nthe IP address of the container running dnsmasq: it's the same as the Docker host!\n\nFor example, if Virtualbox DHCP server assigns addresses in the\n`192.168.56.0/24` subnet (check the virtual network configuration of the\nhost-only network assigned to a VM to gather this information), then the\n`dhcp-range` option to enable a DHCP proxy could be: `dhcp-range=192.168.56.2,proxy`,\nwhere `192.168.56.2` is the address assigned to the Docker host running the\ncontainer based on this image in \"host network\" mode.\n\nRemember to also update any IP address in `/var/lib/tftpboot/pxelinux.cfg/default`\nyou may have configured, if you serve any content from the TFTP server (like a\n`preseed.cfg` for example) to point to the IP address of the container running\nthis PXE. For this reason, it could be useful to manually assign (or reserve)\nIP addresses (or better, hostnames!) for containers running this PXE.\n","funding_links":[],"categories":["Dockerfile","Dockerfile (37)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferrarimarco%2Fdocker-pxe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fferrarimarco%2Fdocker-pxe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferrarimarco%2Fdocker-pxe/lists"}