{"id":13646810,"url":"https://github.com/jiegec/minipxe","last_synced_at":"2025-04-21T23:31:19.267Z","repository":{"id":61839479,"uuid":"341166155","full_name":"jiegec/minipxe","owner":"jiegec","description":"DHCP and TFTP server in one binary for ease of PXE.","archived":false,"fork":false,"pushed_at":"2024-10-05T14:27:16.000Z","size":58,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T16:55:52.360Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/jiegec.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":"2021-02-22T10:45:01.000Z","updated_at":"2024-12-24T21:09:57.000Z","dependencies_parsed_at":"2024-01-14T10:10:50.047Z","dependency_job_id":"708c21e3-c40c-4496-9463-bbcdb9a366d0","html_url":"https://github.com/jiegec/minipxe","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fminipxe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fminipxe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fminipxe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jiegec%2Fminipxe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jiegec","download_url":"https://codeload.github.com/jiegec/minipxe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250150682,"owners_count":21383211,"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":[],"created_at":"2024-08-02T01:03:07.954Z","updated_at":"2025-04-21T23:31:19.025Z","avatar_url":"https://github.com/jiegec.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# minipxe\n\nDHCP and TFTP server in one binary.\n\nBoot process:\n\n1. Firmware enters PXE boot mode\n2. Firmware gets IP address and TFTP address of iPXE from DHCP server\n3. Firmware downloads iPXE from TFTP server and runs it\n4. iPXE gets IP address and TFTP address of iPXE config from DHCP server\n5. iPXE executes iPXE config and boots live cd over network\n\n## Build ipxe\n\nRun `build.sh` in `root-ipxe` directory.\n\n## Setup up PXE environment using isc-dhcp-server \u0026 tftpd-hpa\n\nminipxe serves as a simple alternative to isc-dhcp-server + tftpd-hpa combination. But here also gives instructions on how to setup PXE environment based on isc-dhcp-server and tftpd-hpa:\n\n1. Install isc-dhcp-server \u0026 tftpd-hpa\n2. Add network interface to INTERFACESv4 in `/etc/default/isc-dhcp-server`\n3. Append dhcp config to `/etc/dhcp/dhcpd.conf` (substitute IP addresses if necessary):\n\n```\noption client-architecture code 93 = unsigned integer 16;\nsubnet 192.168.1.0 netmask 255.255.255.0 {\n  interface eno1;\n  option routers 192.168.1.1;\n  option domain-name-servers 114.114.114.114;\n\n  range 192.168.1.100 192.168.1.200;\n  next-server 192.168.1.1;\n\n  if exists user-class and option user-class = \"iPXE\" {\n    option vendor-class-identifier \"PXEClient\";\n    filename \"tftp://192.168.1.1/ipxe.cfg\";\n  } elsif option client-architecture = encode-int(0, 16) {\n    filename \"bin-i386-pcbios/undionly.kpxe\";\n  } elsif option client-architecture = encode-int(7, 16) {\n    filename \"bin-x86_64-efi/ipxe.efi\";\n  } elsif option client-architecture = encode-int(11, 16) {\n    filename \"bin-arm64-efi/ipxe.efi\";\n  }\n}\n```\n\n4. Build iPXE:\n\n```shell\ngit clone https://github.com/ipxe/ipxe.git\ncd ipxe/src\nmake bin-i386-pcbios/undionly.kpxe NO_WERROR=1 -j32\nmake bin-x86_64-efi/ipxe.efi NO_WERROR=1 -j32\nmake bin-arm64-efi/ipxe.efi NO_WERROR=1 CROSS_COMPILE=aarch64-linux-gnu- -j32\n```\n\n5. Place iPXE and iPXE config under `/srv/tftp`\n6. Start tftpd-hpa, change `/etc/default/tftpd-hpa` if necessary\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiegec%2Fminipxe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjiegec%2Fminipxe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjiegec%2Fminipxe/lists"}