{"id":25654148,"url":"https://github.com/p3lim/pixie","last_synced_at":"2025-04-16T14:52:28.582Z","repository":{"id":37934347,"uuid":"415145302","full_name":"p3lim/pixie","owner":"p3lim","description":"PXE server with embedded TFTP, HTTP and iPXE ROMs","archived":false,"fork":false,"pushed_at":"2025-04-12T06:14:06.000Z","size":133,"stargazers_count":39,"open_issues_count":2,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-12T07:23:53.171Z","etag":null,"topics":["ipxe","netboot","pxe","tftp-server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/p3lim.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2021-10-08T22:46:31.000Z","updated_at":"2024-12-18T07:39:13.000Z","dependencies_parsed_at":"2023-12-06T07:58:16.970Z","dependency_job_id":"6a544e55-f751-47f6-810b-5f6428882148","html_url":"https://github.com/p3lim/pixie","commit_stats":{"total_commits":168,"total_committers":4,"mean_commits":42.0,"dds":0.1964285714285714,"last_synced_commit":"5c82850ee165997329b48ab684b8b88458665d46"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3lim%2Fpixie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3lim%2Fpixie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3lim%2Fpixie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/p3lim%2Fpixie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/p3lim","download_url":"https://codeload.github.com/p3lim/pixie/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249252397,"owners_count":21238177,"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":["ipxe","netboot","pxe","tftp-server"],"created_at":"2025-02-23T20:17:51.889Z","updated_at":"2025-04-16T14:52:28.561Z","avatar_url":"https://github.com/p3lim.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pixie\n\nTFTP and HTTP server specifically designed to serve [iPXE](https://ipxe.org).\n\npixie comes embedded with the following ROMs provided by the iPXE project:\n\n- `undionly.kpxe` - for legacy (BIOS) machines\n- `snponly64.efi` - for 64-bit EFI machines\n- `snponly32.efi` - for 32-bit EFI machines\n- `ipxe64.efi` - for 64-bit EFI machines (contains embedded networking stack)\n- `ipxe32.efi` - for 32-bit EFI machines (contains embedded networking stack)\n- `snponly-arm64.efi` - for 64-bit ARM machines\n- `snponly-arm32.efi` - for 32-bit ARM machines\n\nIt comes with an embedded [iPXE script](https://ipxe.org/scripting), which is used to chainload into per-machine iPXE scripts or access an iPXE shell.\n\n![iPXE menu](https://user-images.githubusercontent.com/26496/136672695-f7598db1-d067-4ac7-93d3-6a640726d471.png)\n\nIt has no dependencies, everything is in one binary.\n\n## Usage\n\n1. Run the `pixie` binary using default ports, specifying path to store iPXE scripts:\n\n```\npixie -d /srv/ipxe\n```\n\n\u003e See `--help` for more options\n\n2. Define iPXE script for a machine with the MAC-address `00:11:22:33:44:55`:\n\n```\ncat \u003e/srv/ipxe/00-11-22-33-44-55.ipxe \u003c\u003cEOF\n#!ipxe\ninitrd http://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os/images/pxeboot/initrd.img\nkernel http://dl.rockylinux.org/pub/rocky/8/BaseOS/x86_64/os/images/pxeboot/vmlinuz initrd=initrd.magic\nboot\nEOF\n```\n\n3. Configure pixie as the next-server on the DHCP server:\n\nExample for [ISC dhcpd](https://www.isc.org/dhcp/):\n\n```\noption client-architecture code 93 = unsiged integer 16;\nif exists user-class and option user-class = \"iPXE\" {\n\tfilename \"chain.ipxe\";\n} elsif option client-architecture = 00:00 {\n\tfilename \"undionly.kpxe\";\n} else {\n\tfilename \"snponly.efi\";\n}\nnext-server 192.168.0.100;\n```\n\nExample for [dnsmasq](https://thekelleys.org.uk/dnsmasq/doc.html):\n\n```\ndhcp-match=set:ipxe,175\ndhcp-vendorclass=BIOS,PXEClient:Arch:00000\ndhcp-boot=tag:!ipxe,tag:BIOS,undionly.kpxe,pixie,192.168.0.100\ndhcp-boot=tag:!ipxe,tag:!BIOS,snponly.efi,pixie,192.168.0.100\ndhcp-boot=tag:ipxe,chain.ipxe,pixie,192.168.0.100\n```\n\n\u003e In both these examples `pixie` runs on `192.168.0.100`\n\n### Walkthrough\n\nWhen a machine with the MAC-address of `00:11:22:33:44:55` now attempts to PXE boot, the following will happen:\n\n1. The machine queries DHCP (standard procedure from PXE)\n2. The DHCP server will instruct the machine to download a new ROM from pixie (`next-server`) using TFTP\n\t- if the machine is running BIOS it will ask for `undionly.kpxe`\n\t- if the machine is running EFI it will ask for `snponly.efi`\n3. The machine downloads and runs the iPXE ROM from pixie\n4. The machine queries DHCP again (this time from iPXE)\n5. The DHCP server will instruct the machine to download the `chain.ipxe` file from pixie using TFTP\n6. The machine downloads and runs the `chain.ipxe` script\n\t- the screenshot above shows this stage\n7. Unless manually intervened, the machine chainloads into its iPXE script from pixie using HTTP\n8. The machine boots the operating system\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp3lim%2Fpixie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fp3lim%2Fpixie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fp3lim%2Fpixie/lists"}