Showing preview only (369K chars total). Download the full file or copy to clipboard to get everything.
Repository: netbootxyz/netboot.xyz
Branch: development
Commit: 971197e8aa03
Files: 170
Total size: 329.2 KB
Directory structure:
gitextract_zt7mag3n/
├── .ansible-lint
├── .dockerignore
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ └── workflows/
│ ├── claude.yml
│ ├── development.yml
│ ├── pull-requests.yml
│ ├── release-candidate.yml
│ ├── release.yml
│ └── rolling.yml
├── AGENTS.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── README.md
├── docker-build-root/
│ └── dumper.sh
├── endpoints.yml
├── etc/
│ └── netbootxyz/
│ └── custom/
│ ├── README.md
│ └── custom.ipxe.j2
├── renovate.json
├── roles/
│ └── netbootxyz/
│ ├── README.md
│ ├── defaults/
│ │ └── main.yml
│ ├── files/
│ │ ├── ipxe/
│ │ │ └── local/
│ │ │ ├── colour.h
│ │ │ ├── console.h
│ │ │ ├── crypto.h
│ │ │ ├── general.h
│ │ │ └── general.h.efi
│ │ └── memdisk
│ ├── meta/
│ │ └── main.yml
│ ├── tasks/
│ │ ├── generate_checksums.yml
│ │ ├── generate_disks.yml
│ │ ├── generate_disks_arm.yml
│ │ ├── generate_disks_base.yml
│ │ ├── generate_disks_efi.yml
│ │ ├── generate_disks_hybrid.yml
│ │ ├── generate_disks_legacy.yml
│ │ ├── generate_disks_linux.yml
│ │ ├── generate_disks_rpi.yml
│ │ ├── generate_disks_secureboot.yml
│ │ ├── generate_menus.yml
│ │ ├── generate_menus_custom.yml
│ │ ├── generate_signatures.yml
│ │ └── main.yml
│ ├── templates/
│ │ ├── checksums.txt.j2
│ │ ├── disks/
│ │ │ ├── autoexec.ipxe.j2
│ │ │ ├── netboot.xyz-gce.j2
│ │ │ ├── netboot.xyz-metal.j2
│ │ │ └── netboot.xyz.j2
│ │ ├── index.html.j2
│ │ ├── local-vars.ipxe.j2
│ │ ├── menu/
│ │ │ ├── 4mlinux.ipxe.j2
│ │ │ ├── about.ipxe.j2
│ │ │ ├── almalinux.ipxe.j2
│ │ │ ├── alpinelinux.ipxe.j2
│ │ │ ├── archlinux.ipxe.j2
│ │ │ ├── blackarch.ipxe.j2
│ │ │ ├── boot.cfg.j2
│ │ │ ├── bsd.ipxe.j2
│ │ │ ├── centos.ipxe.j2
│ │ │ ├── clonezilla.ipxe.j2
│ │ │ ├── coreos.ipxe.j2
│ │ │ ├── dban.ipxe.j2
│ │ │ ├── debian.ipxe.j2
│ │ │ ├── devuan.ipxe.j2
│ │ │ ├── endeavouros.ipxe.j2
│ │ │ ├── fedora.ipxe.j2
│ │ │ ├── flatcar.ipxe.j2
│ │ │ ├── freebsd.ipxe.j2
│ │ │ ├── freedos.ipxe.j2
│ │ │ ├── gentoo.ipxe.j2
│ │ │ ├── gparted.ipxe.j2
│ │ │ ├── harvester.ipxe.j2
│ │ │ ├── ipfire.ipxe.j2
│ │ │ ├── k3os.ipxe.j2
│ │ │ ├── kairos.ipxe.j2
│ │ │ ├── kali.ipxe.j2
│ │ │ ├── kaspersky.ipxe.j2
│ │ │ ├── linux-arm.ipxe.j2
│ │ │ ├── linux-i386.ipxe.j2
│ │ │ ├── linux.ipxe.j2
│ │ │ ├── live-arm.ipxe.j2
│ │ │ ├── live-backbox.ipxe.j2
│ │ │ ├── live-bluestar.ipxe.j2
│ │ │ ├── live-bodhi.ipxe.j2
│ │ │ ├── live-cachyos.ipxe.j2
│ │ │ ├── live-debian.ipxe.j2
│ │ │ ├── live-devuan.ipxe.j2
│ │ │ ├── live-elementary.ipxe.j2
│ │ │ ├── live-endeavouros.ipxe.j2
│ │ │ ├── live-fatdog.ipxe.j2
│ │ │ ├── live-fedora.ipxe.j2
│ │ │ ├── live-feren.ipxe.j2
│ │ │ ├── live-garuda.ipxe.j2
│ │ │ ├── live-grml.ipxe.j2
│ │ │ ├── live-hrmpf.ipxe.j2
│ │ │ ├── live-k3os.ipxe.j2
│ │ │ ├── live-kali.ipxe.j2
│ │ │ ├── live-kodachi.ipxe.j2
│ │ │ ├── live-lite.ipxe.j2
│ │ │ ├── live-lxle.ipxe.j2
│ │ │ ├── live-manjaro.ipxe.j2
│ │ │ ├── live-mint.ipxe.j2
│ │ │ ├── live-neon.ipxe.j2
│ │ │ ├── live-nitrux.ipxe.j2
│ │ │ ├── live-parrot.ipxe.j2
│ │ │ ├── live-peppermint.ipxe.j2
│ │ │ ├── live-popos.ipxe.j2
│ │ │ ├── live-q4os.ipxe.j2
│ │ │ ├── live-raizo.ipxe.j2
│ │ │ ├── live-regolith.ipxe.j2
│ │ │ ├── live-septor.ipxe.j2
│ │ │ ├── live-sparky.ipxe.j2
│ │ │ ├── live-tails.ipxe.j2
│ │ │ ├── live-ubuntu.ipxe.j2
│ │ │ ├── live-vanillaos.ipxe
│ │ │ ├── live-voyager.ipxe.j2
│ │ │ ├── live-zorin.ipxe.j2
│ │ │ ├── live.ipxe.j2
│ │ │ ├── lspci.ipxe.j2
│ │ │ ├── mageia.ipxe.j2
│ │ │ ├── menu.ipxe.j2
│ │ │ ├── nbxyz.ipxe.j2
│ │ │ ├── netinfo.ipxe.j2
│ │ │ ├── nixos.ipxe.j2
│ │ │ ├── openEuler.ipxe.j2
│ │ │ ├── openbsd.ipxe.j2
│ │ │ ├── opensuse.ipxe.j2
│ │ │ ├── oracle.ipxe.j2
│ │ │ ├── photon.ipxe.j2
│ │ │ ├── proxmox.ipxe.j2
│ │ │ ├── rescuezilla.ipxe.j2
│ │ │ ├── rhel.ipxe.j2
│ │ │ ├── rockylinux.ipxe.j2
│ │ │ ├── shredos.ipxe.j2
│ │ │ ├── slackware.ipxe.j2
│ │ │ ├── smartos.ipxe.j2
│ │ │ ├── systemrescue.ipxe.j2
│ │ │ ├── talos.ipxe.j2
│ │ │ ├── tinycore.ipxe.j2
│ │ │ ├── ubuntu-spins.ipxe.j2
│ │ │ ├── ubuntu.ipxe.j2
│ │ │ ├── unix.ipxe.j2
│ │ │ ├── utils-arm.ipxe.j2
│ │ │ ├── utils-efi.ipxe.j2
│ │ │ ├── utils-pcbios-32.ipxe.j2
│ │ │ ├── utils-pcbios-64.ipxe.j2
│ │ │ ├── vmware.ipxe.j2
│ │ │ ├── vyos.ipxe.j2
│ │ │ ├── windows.ipxe.j2
│ │ │ └── zeninstall.ipxe.j2
│ │ ├── pipxe/
│ │ │ ├── Makefile-rpi3.j2
│ │ │ └── Makefile-rpi4.j2
│ │ └── version.ipxe.j2
│ ├── tests/
│ │ ├── inventory
│ │ └── test.yml
│ └── vars/
│ ├── debian.yml
│ ├── main.yml
│ ├── redhat.yml
│ └── ubuntu.yml
├── script/
│ ├── build_release
│ ├── message
│ ├── netbootxyz-overrides.yml
│ ├── retrieve_certs
│ └── tag
├── site.yml
├── user_overrides.yml
└── version.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: .ansible-lint
================================================
# .ansible-lint
skip_list:
- '208'
- command-instead-of-module # Using command rather than module.
- command-instead-of-shell # Use shell only when shell functionality is required.
- no-changed-when # Commands should not change things if nothing needs doing.
- risky-shell-pipe # Shells that use pipes should set the pipefail option.
- literal-compare # Don't compare to literal True/False.
- var-naming[no-role-prefix] # Internal variables don't need role prefix.
================================================
FILE: .dockerignore
================================================
.git
================================================
FILE: .github/FUNDING.yml
================================================
github: netbootxyz
open_collective: netbootxyz
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: 'bug'
assignees: ''
---
[]: This bug persists when memory is increased beyond 8GB.
<!--
Please validate that the issue is not a symptom of insufficient memory.
Many installation media are based on live-cd images that require more than
a few MB/GB of memory to run.
-->
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
**Expected behavior**
<!-- A clear and concise description of what the bug is. -->
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**Additional context**
<!-- Add any other context about the problem here. -->
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Ask a question in the Discussions area
url: https://github.com/netbootxyz/netboot.xyz/discussions
about: Recommended place for questions, operating system discussion, and ideas.
- name: Ask a question on the netboot.xyz Discord Server
url: https://discord.gg/An6PA2a
about: Join the official netboot.xyz Discord!
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: 'enhancement'
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like**
<!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered**
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->
================================================
FILE: .github/workflows/claude.yml
================================================
name: Claude PR Assistant
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude-code-action:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Run Claude PR Action
uses: anthropics/claude-code-action@beta
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
timeout_minutes: "60"
================================================
FILE: .github/workflows/development.yml
================================================
name: development
on:
push:
branches:
- development
workflow_dispatch:
env:
DISCORD_HOOK_URL: ${{ secrets.DISCORD_HOOK_URL }}
GITHUB_SHA: ${{ github.sha }}
jobs:
development-build:
name: Build Development
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v6
with:
ref: development
- name: Retrieve Certs
run: |
./script/retrieve_certs
env:
GIT_USER: ${{ secrets.GIT_USER }}
GIT_AUTH: ${{ secrets.GIT_AUTH }}
GIT_URL: ${{ secrets.GIT_URL }}
CERTS_KEY: ${{ secrets.CERTS_KEY }}
- name: Build Development Release
run: |
./script/build_release dev
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_ROLE_DEV }}
aws-region: ${{ secrets.AWS_ACCESS_REGION }}
- name: Deploy development release to bucket/SHA
run: |
aws s3 sync --no-progress --acl public-read s3out s3://${{ secrets.AWS_S3_BUCKET_DEV }}/$GITHUB_SHA
- name: Deploy development version file to bucket
run: |
aws s3 sync --no-progress --acl public-read s3outver s3://${{ secrets.AWS_S3_BUCKET_DEV }}
- name: Notify Discord on failure
if: failure()
run: |
./script/message failure
- name: Notify Discord on completion
if: success()
run: |
./script/message dev-push
================================================
FILE: .github/workflows/pull-requests.yml
================================================
name: pull-requests
on:
pull_request:
branches:
- development
- RC
- master
jobs:
test-pr:
name: Test Pull Request
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: '3.14' # renovate: datasource=github-tags depName=python
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ansible==13.4.0 # renovate: datasource=pypi depName=ansible
pip install ansible-lint==26.3.0 # renovate: datasource=pypi depName=ansible-lint
- name: Syntax Check
run: |
ansible-playbook site.yml --syntax-check
- name: Ansible lint
run: |
ansible-lint -v roles/netbootxyz/tasks
build-pr:
name: Build Pull Request
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
- name: Build PR release
run: |
./script/build_release pr
================================================
FILE: .github/workflows/release-candidate.yml
================================================
name: release-candidate
on:
push:
branches:
- RC
workflow_dispatch:
env:
DISCORD_HOOK_URL: ${{ secrets.DISCORD_HOOK_URL }}
GITHUB_SHA: ${{ github.sha }}
jobs:
rc-build:
name: Build Release Candidate
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v6
with:
ref: RC
- name: Retrieve Certs
run: |
./script/retrieve_certs
env:
GIT_USER: ${{ secrets.GIT_USER }}
GIT_AUTH: ${{ secrets.GIT_AUTH }}
GIT_URL: ${{ secrets.GIT_URL }}
CERTS_KEY: ${{ secrets.CERTS_KEY }}
- name: Set Release Tag
run: echo "release_tag=$(cat version.txt)-RC" >> $GITHUB_ENV
- name: Build RC release
run: |
./script/build_release rc
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_ROLE_STAGING }}
aws-region: ${{ secrets.AWS_ACCESS_REGION }}
- name: Deploy RC to release-candidate bucket
run: |
aws s3 sync --no-progress --acl public-read s3out s3://${{ secrets.AWS_S3_BUCKET_STAGING }}/${{ env.release_tag }}
- name: Deploy RC to rolling bucket
run: |
aws s3 sync --no-progress --acl public-read s3out-latest s3://${{ secrets.AWS_S3_BUCKET_STAGING }}/rc
- name: Deploy RC version file
run: |
aws s3 sync --no-progress --acl public-read s3outver s3://${{ secrets.AWS_S3_BUCKET_STAGING }}
- name: Invalidate Cloudfront
run: |
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DIST_ID_STAGING }} --paths "/rc/*" "/rc/ipxe/*" "/rc/sigs/*"
- name: Tag RC Release
run: |
./script/tag ${{ env.release_tag }}
- name: Extract release notes
id: extract-release-notes
uses: ffurrer2/extract-release-notes@v3
- name: Create RC Release and Upload Assets
uses: svenstaro/upload-release-action@v2
with:
file: githubout/*
file_glob: true
overwrite: true
prerelease: true
release_name: ${{ env.release_tag }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ env.release_tag }}
body: ${{ steps.extract-release-notes.outputs.release_notes }}
- name: Notify Discord on failure
if: failure()
run: |
./script/message failure
- name: Notify Discord on completion
if: success()
run: |
./script/message rc-push
================================================
FILE: .github/workflows/release.yml
================================================
name: release
on:
push:
branches:
- master
env:
DISCORD_HOOK_URL: ${{ secrets.DISCORD_HOOK_URL }}
GITHUB_SHA: ${{ github.sha }}
jobs:
release:
name: Build Release
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v6
with:
ref: master
- name: Retrieve Certs
run: |
./script/retrieve_certs
env:
GIT_USER: ${{ secrets.GIT_USER }}
GIT_AUTH: ${{ secrets.GIT_AUTH }}
GIT_URL: ${{ secrets.GIT_URL }}
CERTS_KEY: ${{ secrets.CERTS_KEY }}
- name: Set Release Tag
run: echo "release_tag=$(cat version.txt)" >> $GITHUB_ENV
- name: Build release
run: |
./script/build_release release
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_ROLE_PROD }}
aws-region: ${{ secrets.AWS_ACCESS_REGION }}
- name: Deploy master to release bucket
run: |
aws s3 sync --no-progress --acl public-read s3out s3://${{ secrets.AWS_S3_BUCKET_PROD }}/${{ env.release_tag }}
- name: Deploy master to rolling bucket
run: |
aws s3 sync --no-progress --acl public-read s3out-latest s3://${{ secrets.AWS_S3_BUCKET_PROD }}
- name: Invalidate Cloudfront
run: |
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DIST_ID_PROD }} --paths "/*" "/ipxe/*" "/sigs/*"
- name: Tag Release
run: |
./script/tag ${{ env.release_tag }}
- name: Extract release notes
id: extract-release-notes
uses: ffurrer2/extract-release-notes@v3
- name: Create Release and Upload Assets
uses: svenstaro/upload-release-action@v2
with:
file: githubout/*
file_glob: true
overwrite: true
prerelease: false
release_name: ${{ env.release_tag }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ env.release_tag }}
body: ${{ steps.extract-release-notes.outputs.release_notes }}
- name: Notify Discord on failure
if: failure()
run: |
./script/message failure
- name: Notify Discord on completion
if: success()
run: |
./script/message live-push
================================================
FILE: .github/workflows/rolling.yml
================================================
name: rolling
on:
workflow_dispatch:
# Disabled automatic rolling releases during version updates
# push:
# paths:
# - 'endpoints.yml'
# - 'roles/netbootxyz/defaults/main.yml'
# branches:
# - development
env:
DISCORD_HOOK_URL: ${{ secrets.DISCORD_HOOK_URL }}
GITHUB_SHA: ${{ github.sha }}
jobs:
rolling:
name: Build Release
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v6
with:
ref: 'master'
- name: Retrieve Certs
run: |
./script/retrieve_certs
env:
GIT_USER: ${{ secrets.GIT_USER }}
GIT_AUTH: ${{ secrets.GIT_AUTH }}
GIT_URL: ${{ secrets.GIT_URL }}
CERTS_KEY: ${{ secrets.CERTS_KEY }}
- name: Set Release Tag
run: echo "release_tag=$(cat version.txt)" >> $GITHUB_ENV
- name: Download endpoints.yml and main.yml from Development
run: |
wget https://raw.githubusercontent.com/netbootxyz/netboot.xyz/development/endpoints.yml -O endpoints.yml
wget https://raw.githubusercontent.com/netbootxyz/netboot.xyz/development/roles/netbootxyz/defaults/main.yml -O roles/netbootxyz/defaults/main.yml
chmod +x script/build_release
- name: Build release
run: |
./script/build_release rolling
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v6
with:
role-to-assume: ${{ secrets.AWS_ROLE_ROLLING }}
aws-region: ${{ secrets.AWS_ACCESS_REGION }}
- name: Deploy master to rolling bucket
run: |
aws s3 sync --no-progress --acl public-read s3out-latest s3://${{ secrets.AWS_S3_BUCKET_PROD }}
- name: Invalidate Cloudfront
run: |
aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DIST_ID_PROD }} --paths "/*" "/ipxe/*" "/sigs/*"
- name: Notify Discord on failure
if: failure()
run: |
./script/message failure
- name: Notify Discord on completion
if: success()
run: |
./script/message rolling-push
================================================
FILE: AGENTS.md
================================================
# AGENTS.md
Guidelines for AI coding agents working in the netboot.xyz repository.
## Project Summary
netboot.xyz generates iPXE bootloaders and menus for 190+ operating systems using Ansible and Jinja2 templates. There is no application code in a traditional sense — the project produces `.ipxe` scripts and bootloader binaries.
## Build Commands
```bash
# Syntax check (fast, run first)
ansible-playbook site.yml --syntax-check
# Lint Ansible tasks
ansible-lint -v roles/netbootxyz/tasks
# Full local build (generates menus + bootloaders to /var/www/html)
ansible-playbook site.yml
# Menu-only build (skip bootloader compilation)
ansible-playbook site.yml -e "generate_disks=false generate_checksums=false generate_signatures=false"
# Docker build (outputs to buildout/)
docker build -t localbuild --platform=linux/amd64 -f Dockerfile .
docker run --rm -it --platform=linux/amd64 -v $(pwd):/buildout localbuild
# Release builds
./script/build_release dev # Development
./script/build_release pr # Pull request test
./script/build_release rc # Release candidate
./script/build_release release # Production
./script/build_release rolling # Rolling
```
### CI Checks (what PRs must pass)
1. `ansible-playbook site.yml --syntax-check`
2. `ansible-lint -v roles/netbootxyz/tasks`
3. Full Docker build via `./script/build_release pr`
### Testing
Molecule tests exist but require Docker:
```bash
pip install molecule molecule-docker
molecule test
```
There are no unit tests. Validation is done through syntax checks, linting, and full builds.
## Code Style
### YAML / Ansible
- Start every YAML file with `---` on line 1.
- Use 2-space indentation consistently.
- Use **fully-qualified collection names** (FQCN) for all modules:
- `ansible.builtin.template`, `ansible.builtin.set_fact`, `ansible.builtin.shell`, etc.
- Never use short names like `template:` or `shell:`.
- Use `snake_case` for all variable names: `boot_domain`, `generate_menus`, `netbootxyz_root`.
- Guard booleans with the `| default(true) | bool` pattern:
```yaml
when:
- generate_menus | default(true) | bool
```
- Use `when:` as a list even for single conditions.
- Use descriptive `name:` for every task.
- The `.ansible-lint` config skips these rules (do not add workarounds for them):
- `command-instead-of-module`, `command-instead-of-shell`
- `no-changed-when`, `risky-shell-pipe`
- `literal-compare`, `var-naming[no-role-prefix]`
### iPXE Templates (`.ipxe.j2` files)
- Start with `#!ipxe` shebang on line 1.
- Add a comment header with OS name and URL on lines 2-4.
- iPXE scripts are **flat** — do not indent iPXE commands.
- Use `#` for comments inside templates.
- Variable conventions:
- iPXE runtime variables: `${variable_name}` (evaluated at boot time)
- Jinja2 template variables: `{{ variable }}` (evaluated at build time)
- These are often mixed: `${live_endpoint}{{ endpoints.foo.path }}`
- Labels use `:label_name` in `snake_case`.
- Navigation pattern: `goto ${menu} ||` at template start.
- User selection: `choose <var> || goto <exit_label>`.
- Exit pattern: clear menu and `exit 0`:
```ipxe
:distro_exit
clear menu
exit 0
```
- Error pattern: echo, prompt, return to menu:
```ipxe
:error
echo Error occurred, press any key to return to menu
prompt
goto main_menu
```
- Fallback chains: `command || goto fallback` for graceful degradation.
- Architecture mapping varies by OS family:
- Red Hat: `x86_64` → `x86_64`, `arm64` → `aarch64`
- Debian: `x86_64` → `amd64`, `arm64` → `arm64`
- Guard optional values: `isset ${variable}` in iPXE, `{% if value.field is defined %}` in Jinja2.
### Jinja2 Patterns
- Loop over releases: `{% for item in releases.<distro>.versions %}`
- Sort by name: `{% for key, value in releases.items() | sort(attribute='1.name') %}`
- Filter enabled items: `{% if value.enabled is defined and value.enabled | bool %}`
- Template iteration uses `with_community.general.filetree` in tasks.
### OS Definition Schema (`defaults/main.yml`)
```yaml
releases:
distro_key: # lowercase, no hyphens (e.g., almalinux, rockylinux)
name: "Display Name"
mirror: "http://mirror.url"
base_dir: "path/on/mirror"
enabled: true
menu: linux # one of: linux, bsd, dos, unix
versions:
- code_name: "version_id"
name: "Display Version"
```
Optional fields: `archive_mirror`, `paths`, `flavors`, `platforms`, `version`.
### Utility Definition Schema (`defaults/main.yml`)
```yaml
utilitiesefi: # or utilitiespcbios64, utilitiespcbios32, utilitiesarm
utility_key:
name: "Display Name"
enabled: true
type: direct # one of: direct, ipxemenu, memdisk, memtest, sanboot
kernel: "<url>"
initrd: "<url>" # optional
```
## File Organization
| Path | Purpose |
|------|---------|
| `site.yml` | Main playbook entry point |
| `defaults/main.yml` | All OS/utility definitions and default config |
| `endpoints.yml` | Live image endpoint URLs |
| `user_overrides.yml` | Local overrides (not committed) |
| `templates/menu/*.ipxe.j2` | ~100 iPXE menu templates |
| `templates/disks/*.j2` | Bootloader embedded scripts |
| `templates/pipxe/*.j2` | Raspberry Pi Makefile templates |
| `tasks/*.yml` | 14 Ansible task files |
| `vars/{debian,redhat,ubuntu}.yml` | Per-distro package lists |
| `script/` | Build and release shell scripts |
## Menu Hierarchy
```
menu.ipxe (main) → linux.ipxe → ubuntu.ipxe, fedora.ipxe, ...
→ bsd.ipxe → freebsd.ipxe, openbsd.ipxe, ...
→ live.ipxe → live-ubuntu.ipxe, ...
→ utils-*.ipxe
→ windows.ipxe
```
Menus chain via `chain ${menu}.ipxe || goto error`. Signature verification gates chaining when `sigs_enabled` is true.
## Error Handling
- **Ansible**: Relies on default fail-fast behavior. No `block/rescue/always`. Guard tasks with `when:` conditions. Use `| default()` to prevent undefined variable errors.
- **iPXE**: Use `command || goto fallback` chains. Protocol degradation: HTTPS → HTTP → local boot. Always provide a `:error` label that prompts the user.
- **Shell scripts**: Use `set -e` at the top of all scripts.
## Adding a New Operating System
1. Add entry to `releases:` in `roles/netbootxyz/defaults/main.yml`.
2. Create `roles/netbootxyz/templates/menu/<distro>.ipxe.j2` following existing templates.
3. The menu template is auto-discovered via `filetree` iteration — no registration needed.
4. Add the distro to the appropriate category menu (e.g., `linux.ipxe.j2`) if it needs a menu entry.
5. If using live images, add endpoint to `endpoints.yml`.
6. Test: `ansible-playbook site.yml --syntax-check && ansible-lint -v roles/netbootxyz/tasks`
## Key Variables
- **`boot_domain`**: Target domain for generated menus.
- **`boot_version`**: Version string for releases.
- **`site_name`**: Custom branding (defaults to `netboot.xyz`).
- **`generate_menus` / `generate_disks`**: Enable/disable build components.
- **`sigs_enabled`**: Enable signature verification for menu chaining.
- **`live_endpoint`**: Base URL for live/rescue images.
- **Runtime variables**: `${distro}_mirror` and `${distro}_base_dir` are auto-generated from `releases:` entries in `boot.cfg.j2` and available to all menu templates at boot time.
## Git Workflow
- **`development`**: Main development branch, default PR target.
- **`RC`**: Release candidate staging.
- **`master`**: Production releases.
- Commit style: imperative mood, descriptive. Automated commits use `Version bump for ...` format.
================================================
FILE: CHANGELOG.md
================================================
<!-- markdownlint-configure-file {"MD024": { "siblings_only": true } } -->
# Changelog
All notable changes to this project will be documented in this file.
## [3.0.0] - 2026-01-24
### Added
- Proxmox Datacenter Manager support with text and debug installation modes
- Memtest86+ v8.00 series support
### Changed
- **BREAKING**: Updated embedded certificates used for image signature verification in iPXE bootloaders
- Users with 2.x bootloaders will be automatically upgraded to 3.x on first boot
- Bumped major version to 3.x series due to code signing certificate updates requiring bootloader update
- Various distribution version updates across all supported operating systems
- Improved certificate retrieval script with commit SHA validation output
### Fixed
- Oracle Linux menu items now properly filter by architecture (x86_64 vs aarch64)
- OpenSUSE Tumbleweed ARM64 build configuration corrected to use ports mirror
- Flatcar Container Linux boot redirect issue resolved
## [2.0.89] - 2025-11-08
### Added
- OpenSUSE 16.0 support with live ISO boot method
- Dasharo Tools Suite updated to v2.7.0 and v2.7.1
### Changed
- Updated Ansible to v12 for improved build system
- Updated ansible-lint to v24.12.2 with compatibility fixes
- Various distribution version updates:
- Arch Linux updated to 2025.11.01
- SmartOS updated to 20251030T000436Z
- CoreOS updated to 42.20251012.3.0-stable, 43.20251024.2.0-testing, 43.20251027.1.0-next
- IPFire updated to 2.29-core198
- Improved dependency tracking in GitHub workflows
- Updated GitHub Actions:
- actions/checkout to v5
- actions/setup-python to v6
- aws-actions/configure-aws-credentials to v5
### Fixed
- OpenSUSE 16.0 boot configuration now uses live ISO method with proper root= parameter
- Ansible-lint configuration updated to skip var-naming rule for internal variables
- CI/CD compatibility issues resolved between Ansible and ansible-lint versions
- Renovate configuration JSON syntax errors corrected
## [2.0.88] - 2025-08-09
### Added
- CachyOS live distribution with archiso boot configuration
- Ubuntu Spins distribution template for Ubuntu flavor variants
- Debian 13 (Trixie) net installer
- Rocky Linux 10 and AlmaLinux 10
- Flatcar Container Linux ARM64 architecture support
- Proxmox VE 9.0
- Dasharo Tools Suite updated to v2.6.0
- SystemRescue archiso_pxe_http initrd support
### Changed
- FreeDOS updated to v1.4 with corrected URLs
- Various distribution version updates and endpoint refreshes
- Improved MAC address handling in TFTP boot configuration
### Fixed
- Fedora CoreOS kernel filename format corrected
### Removed
- Deepin distribution completely removed from the system
## [2.0.87] - 2025-05-08
### Added
- Fedora Onyx build
- Kali arm64 Added
### Changed
- Various version updates
- Cleanup of older distros from endpoints
## [2.0.86] - 2025-03-13
### Added
- Support for Kairos
- Enabled NFS support in iPXE
## [2.0.85] - 2025-02-23
### Changed
- Various version updates
- Checks for boot timeout from local-vars.ipxe
## [2.0.84] - 2025-01-04
### Added
- UEFI Shell available under utilities for x86/ARM UEFI mode
- Floppy boot images for UEFI
- Dasharo Tools Suite
- Latest GRML added with ARM support
### Changed
- Moves win_base_url and rhel_base_url out of boot.cfg to local-vars.ipxe as they are
user defined variables.
- Adds a check in boot.cfg to see if live_endpoint is set from local-vars.ipxe. This
will allow the user to set their overrides locally on their network.
## [2.0.83] - 2024-11-07
### Changed
- Various version updates
## [2.0.82] - 2024-09-18
### Changed
- Various version updates
## [2.0.81] - 2024-08-10
### Added
- Added ZFSBootMenu
- Added VanillaOS
- Added Super Grub2 Disk for EFI
### Fixed
- Slowness with Ubuntu 24.04 net install getting stuck on Cloud Init
- Removed hard coded console on VyOS to fix on Equinix Metal
## [2.0.80] - 2024-07-17
### Added
- Adds option for setting System Resuce password
### Removed
- Scientific Linux (EOL)
## [2.0.79] - 2024-05-25
### Added
- Added Talos to arm64 menu
- Ubuntu 24.04 LTS, Fedora 40, and many other version updates
### Changed
- Dropped newer Ubuntu Live Image versions as they don't properly work anymore
## [2.0.78] - 2024-03-30
### Fixed
- Resolves an issue with the generated index having incorrect naming on the links due
to a previous variable name change on the index template
- Proxmox iso names are corrected for backup and mailgateway
## [2.0.77] - 2024-02-24
### Fixed
- Talos menu fixed
### Changed
- Use bootloader_filename instead of site_name for bootloader filenames
## [2.0.76] - 2023-12-31
### Added
- Memtest86+ 6.20 for EFI and Legacy x86_64 modes, leaves 5.01 for Legacy purposes
as some issues were noticed loading 6.20 Legacy on KVM where it hangs on
loading but works fine using VMware.
- ARM ISO and USB Images added
- Tunable make_num_jobs for compiling in parallel
## [2.0.75] - 2023-12-03
### Fixed
- Updated CentOS to be able to pull arm64 images
- Updates to images that may have been missing curl in the
initrd for booting
### Changed
- Uses exit 1 on local boot now to allow for it to roll over
to next device in UEFI (Issue #1276)
- Switches to using proxmox iso from asset releases so that it can
also be installed via local assets (Issue #1350)
## [2.0.74] - 2023-11-14
### Changed
- Update rescue flag to include inst. prefix on RHEL based distros
### Fixed
- Minor bugs in Fedora menu
- CAINE booting
### Removed
- Anarchy Linux
## [2.0.73] - 2023-10-13
### Added
- Fedora 39 stubbed out for release later this month
- Ubuntu 23.10
- Text UI support for Proxmox Distros
### Fixed
- Fixed an issue with Fedora would error with "Could not boot"
### Removed
- Remove AVG as it's no longer maintained
## [2.0.72] - 2023-09-15
### Fixed
- Fixed an issue where Proxmox/QEMU users using Legacy mode would hang or
reboot when loading an OS. Would have affected 2.0.70 and 2.0.71 releases.
## [2.0.71] - 2023-09-09
### Added
- Added NixOS option for ARM
### Changed
- Adjusted bootloader logic for detecting v6 and v6 scenarios
### Fixed
- Kickstart URLs were broken on RHEL based distros if text install
was being used.
## [2.0.70] - 2023-07-03
### Added
- Enabled CERT_CMD in iPXE
- Added Debian 12
- Disable pci scan option when loaded on ARM/EFI as command isn't supported
- Building snp and snponly builds for Equinix Metal
### Changed
- Changed default Equinix Metal builds to use snp to ensure more stable start
- Changed CentOS 9 Stream mirror due to it no longer working with iPXE
## [2.0.69] - 2023-05-07
### Added
- Ubuntu 23.04 (Lunar)
- Fedora 38
- Added multiarch combined ISO and IMG file for x86_64 and arm64
## [2.0.68] - 2023-04-02
### Changed
- Various versions updated, no major changes
## [2.0.67] - 2023-02-18
### Added
- Enabled Link Layer Discovery Protocol (LLDP)
- OpenSUSE ARM Support
## [2.0.66] - 2022-12-28
### Fixed
- Adjusted Mint menu generation for minor releases to fix rolling
## [2.0.65] - 2022-12-03
### Fixed
- Removed deprecated arg from Ansible playbook to fix dev and rolling
## [2.0.64] - 2022-11-23
### Removed
- Removed RancherOS
## [2.0.63] - 2022-10-23
### Added
- Fedora 37 (to be released)
- Ubuntu 20.10 (Kinetic Kudu)
## [2.0.62] - 2022-09-13
### Changes
- Uses inst.text instead of text on redhat based distros
### Fixed
- Menu was incorrect on AlmaLinux on aarch64
## [2.0.61] - 2022-08-28
### Added
- Various version updates
- Viewpoint attribute on boot.netboot.xyz index
- Oracle Linux aarch64
### Changes
- Various Ansible Lint fixes
### Fixed
- Ubuntu 22.04 version issues related to minor increments
## [2.0.60] - 2022-07-24
### Added
- Added Fedora Kionite
### Changes
- Collapsed Dockerfiles into one
- Various version updates
- Cleaned up some EOL versions
## [2.0.59] - 2022-05-28
### Added
- VMware Photon 4.0
## [2.0.58] - 2022-04-22
### Added
- Ubuntu 22.04 LTS Jammy Jellyfish
- Fedora 26 Prep for release
### Changes
- Disabled RPI image as it was failing, will need to revisit in future
- Lint fixes
## [2.0.57] - 2022-03-21
### Added
- Proxmox Backup Server
- Proxmox Mail Gateway
### Changes
- Proxmox pulls ISO from upstream site now, consolidated Proxmox items to one menu
## [2.0.56] - 2022-02-26
### Fixed
- Added a ipxe_cloud_config for packet and metal for older clients
## [2.0.55] - 2022-02-12
### Added
- Slackware 15.0
### Fixed
- Hardset Flatcar Linux initrd to fix booting (`https://github.com/netbootxyz/netboot.xyz/issues/1070`)
- Archlinux now sets archtecture correctly with static ips
### Changes
- Changes Packet bootloaders to Equinix Metal
- Switch archlinux default mirror to mirrors.edge.kernel.org to avoid redirect
## [2.0.54] - 2021-12-25
### Added
- CentOS 9 Stream hardset url
- Various version updates
## [2.0.53] - 2021-11-22
### Added
- Fedora 35
- Various version updates
## [2.0.52] - 2021-10-31
### Added
- Support for ProxyDHCP environments
## [2.0.51] - 2021-10-15
### Added
- Fedora CoreOS - aarch64 support
- Garuda Linux Live builds
- Ubuntu 21.10 live builds and installers
- Added Padded Floppy builds for tooling sensitive to size of disk
- Added logic for building iPXE linux binaries
### Fixed
- Manjaro builds working again
## [2.0.50] - 2021-10-03
### Added
- Added Clonezilla 32-bit
### Changed
- Proper rolling for boot.netboot.xyz implemented, endpoints.yml and defaults
are now pushed to boot.netboot.xyz upon update in development branch to
ensure version updates can be consumed as identified. Allows for new versions
to be available before a release.
## [2.0.49] - 2021-09-29
### Added
- Support for Ubuntu 20.04 Subiquity and up on arm64
- Added Archlinux 32-bit
- Added shredos for 32-bit
- Added systemrescue for 32-bit
- Added Fedora 35 Beta
- Added Ubuntu 21.10 Impish Indri Beta
### Fixed
- Corrected architecture naming on k3os
### Changed
- Split pcbios utilities menu into 32-bit and 64-bit options
- utilitiespcbios is now utilitiespcbios64 and utilitiespcbios32 for overrides
- Renamed ubuntu netboot assets to align better with existing branches
## [2.0.48] - 2021-09-17
### Added
- Support for Harvester
- Support for Tails
- Support for Kali 32-bit net installer
- Support for hrmpf
- Support for Gentoo 32-bit and arm64 installers
- Added EFI support for OpenBSD using sanboot
- Adds additional options for arm64 iPXE binary downloads
## [2.0.47] - 2021-08-30
### Fixed
- Corrects an issue with loading 32-bit linux menu on 64-bit platforms (https://github.com/netbootxyz/netboot.xyz/issues/978)
## [2.0.46] - 2021-08-29
### Fixed
- Fix incorrect arch introduced on Ubuntu
## [2.0.45] - 2021-08-29
### Added
- Created a seperate menu for supported 32-bit Operating Systems
- Enables utility menu for Packet non EFI
- Updated arm menu
### Fixed
- Refactor of architecture checks, better support for i386 and arch distros
- Arm64 and i386 options work now
- Added kernel_params for console overrides to utility images
### Changed
- Dropped some older EOL distros
## [2.0.44] - 2021-08-24
### Added
- Enables utility menu for Packet EFI
- Added Debian 11 Live Builds
- Adds Param command to iPXE builds
- Adds next-server and version info when booted locally
### Fixed
- Fixes console issues for Ubuntu and Debian on Packet
### Changes
- Updates to Voyager menu to let it be more dynamic
## [2.0.43] - 2021-08-19
### Added
- Adds Proxmox VE
- Adds Zorin 16
- Adds Elementary OS 6
- Enables ability to add custom commands early in menu load with early_menu_*
- Adds ability to change install priority on Ubuntu Legacy
- Adds a toggle for enabling local-vars.ipxe
### Fixed
- Adjustments to index.html template, adds description
- Readme tweaks for new site
## [2.0.42] - 2021-08-01
### Added
- Debian 11 (Bullseye) ahead of release
### Fixed
- Gentoo more reliable, switches to initrd.magic to avoid modifying initrd
- Fixes to Mint menu to populate options correctly
- Cosmetic fixes to index.html.j2 tables
## [2.0.41] - 2021-07-08
### Added
- Adds support for openEuler
- Adds ping command to iPXE build
### Fixed
- NixOS working again, using images and iPXE configs that are generated upstream
### Changes
- Use non https repo for almalinux
- Switch to using initrd.magic (`https://github.com/ipxe/ipxe/commit/e5f02551735922eb235388bff08249a6f31ded3d`)
- Moves initrd= and cmdline values to single kernel parameter in Ansible
## [2.0.40] - 2021-06-12
### Added
- Adds support for VMware ESXi with user supplied media
## [2.0.39] - 2021-05-15
### Added
- Enabled gzip and zlib support on iPXE binaries
### Fixed
- Check for legacy undionly filename if running menu locally
## [2.0.38] - 2021-05-02
### Added
- Fedora 34 and Live Versions
- Redo Rescue
- Rescuezilla
- Rocky Linux
### Changed
- Switched to using upstream genfsimg for building hybrid images
- Merged Legacy and EFI disks into single image for USB and ISOs
- Can now use autoexec.ipxe on the root of a USB key to inject variables or modify the starting bootloader
- Renamed USB disk from .usb to .img
## [2.0.37] - 2021-04-25
### Added
- Ubuntu 21.04 Installer and Live Versions
### Fixed
- Version number variable tweaks
## [2.0.36] - 2021-04-18
### Added
- Support for ShredOS
## [2.0.35] - 2021-04-02
### Added
- Support for EndeavourOS
## [2.0.34] - 2021-03-13
### Added
- Support for AlmaLinux
### Fixed
- Updated Debian Kernel for Live images, transitioned over to Actions from Travis
## [2.0.33] - 2021-03-06
### Removed
- Parrot NetInstall images are no longer maintained
- Removed Velt as it appears deprecated
## [2.0.32] - 2021-02-09
### Fixed
- Update to latest Ubuntu maintenance release
### Changed
- Disabled Unix Menu on EFI as SmartOS not working in that mode and was the only option on EFI
- Various version updates
## [2.0.31] - 2021-01-18
### Fixed
- Fixes results too large bug introduced on Ubuntu menu
### Changed
- Change priority to low on Ubuntu Legacy installer
## [2.0.30] - 2021-01-17
### Added
- Can now download hybrid bootloaders that contain x86_64 Legacy and EFI builds in one image.
Enables the user to use one ISO or USB key for multiple scenarios.
- Ability to use custom URLs for menus instead of just relying on Github netboot.xyz-custom repo.
### Changed
- Added the legacy installer back for Ubuntu 20.04 (Focal). 20.04 will be the last
version to support legacy Debian Installer with autoinstall being the new Ubuntu
standard going foward.
- Various version updates
## [2.0.29] - 2020-12-28
### Changed
- Various version updates
- Switched asset builders from Github to Travis
- Introduced changelog
## [2.0.28] - 2020-12-09
### Added
- VyOS Support
### Changed
- Switches to GitHub Actions from Travis CI for primary repo automation
## [2.0.27] - 2020-11-20
### Changed
- Change builder image name
- Remove older Kali images, fix menu for latest version
- Switch to inst.repo for Red Hat based OS
- Allow for static assigned networking to work on Ubuntu builds
## [2.0.26] - 2020-11-18
### Added
- Adds a hook in the bootloader that checks for local-vars.ipxe from a local tftp server, useful for loading up variables before loading the menu. Can be used to ensure github user is set by default for custom menus.
### Changed
- Switches builder to netbootxyz docker image on Github Container Registry
- Simplfied Fedora Live menu
### Fixed
- Bugfix on NixOS menu
## [2.0.25] - 2020-11-07
### Added
- Initial support for Raspberry Pi iPXE bootloader which allows you to boot using SD Card or USB key. (Experimental)
- Ubuntu 20.10 Grovvy Live Images
- Added support for Ubuntu 20.04/20.10 Subiquity Server installers
- Added Fedora 33 net installer and live images
### Changed
- Fedora Core build version is now updated automatically.
## [2.0.24] - 2020-10-28
### Fixed
- Fixed github releases
## [2.0.23] - 2020-10-27
### Added
- Ubuntu 20.10 Groovy Gorilla - Live CD install only
- Fedora 33
- OpenBSD 6.8
## [2.0.22] - 2020-10-11
### Fixed
- Fixed Anarchy Linux
### Changed
- Pin builders to Ansible 2.10
## [2.0.21] - 2020-09-13
### Changed
- Version updates
## [2.0.20] - 2020-08-28
### Fixed
- Archlinux url fixes
## [2.0.19] - 2020-08-12
### Added
- Adds ability to add custom kernel command line parameters
### Fixed
- Sets proper RELEASE Tag when creating a Github Release
## [2.0.18] - 2020-07-24
### Fixed
- Fixed Fedora CoreOS build
- Various unnamed bugs
## [2.0.17] - 2020-06-30
### Added
- CentOS 8.2
- Mint 20
- OpenSUSE Leap 15.2
### Changed
- Changes to K3OS deployments
- Tweaks to ARM64 menus, added ARM placeholders for Utility menu
## [2.0.16] - 2020-06-09
### Added
- Adds Devuan back in with latest Beowulf
### Fixed
- Corrects issue with Fedora and text mode
## [2.0.15] - 2020-05-20
### Added
- Backbox 7
### Fixed
- CentOS path fixes
## [2.0.14] - 2020-05-06
### Added
- Fedora 32 and Ubuntu 20.04 live assets
- PopOS 20.04
- Parrot 4.9
### Changed
- Bump to CentOS 7.8
- Moved NixOS to hosted live assets
## [2.0.13] - 2020-04-24
### Changed
- Ubuntu 20.04 url
- NixOS 20.03
## [2.0.12] - 2020-04-23
### Added
- Ubuntu 20.04 LTS added and 20.04 stock live builds updated
### Changed
- Fedora 32 added and 29 dropped
### Removed
- Removed test forked or branched code from github as it no longer works
## [2.0.11] - 2020-04-01
### Added
- Clonezilla Testing/Stable
- Gentoo instlaler LiveCD
- Nitrux Stable
- System Rescue CD
- Zorin Linux
- Manjaro Live CDs
- KDE-neon
- Sparky Linux Rolling and Stable
- 4mLinux core and SSS
- SmartOS version tags
- BlueStart Linux
- Parrot Linux installer
- Bodhi 5 standard and app pack
- Linux Mint Debian Edition
### Fixed
- Fixed CentOS kickstart url
### Removed
- Dropped tails support
## [2.0.10] - 2020-03-07
### Changed
- Various version updates
## [2.0.9] - 2020-02-16
### Changed
- Various version updates
## [2.0.8] - 2020-02-06
### Added
- SmartOS
- 4MLinux
- BakAndImgCD
- The Smallest Server Suite
### Fixed
- Various bug fixes
## [2.0.7] - 2020-01-25
### Added
- CentOS 8.1
- Gentoo (working now)
- Fatdog
- Kaspersky Rescue Disk
- LXLE
- Live Raise
- Septor
- Tiny Core Linux using kernels instead of memdisk
## [2.0.6] - 2020-01-19
### Added
- Oracle Linux
- Anarchy Installer
- Bluestart Live
- Zen Graphical Installer for Arch
- Kodachi Linux
- Bohdi Linux
- Boot Repair CD
- Devuan Live
- gparted Live
- grml Live
- Parrot Live
- Rescatux
- System Rescue CD
- CAINE
- Nitrux
- Velt Live
- Fedora CoreOS back in
### Removed
- Security Menu and merges those options into Linux and Live menus
- Unused external signature checking code
## [2.0.5] - 2020-01-11
### Added
- SparkyLinux
- K3OS
- RHEL menu option back to Linux Menu
- Support for text mode on RHEL/Fedora
- netboot.xyz endpoints menu under Utilities for testing Dev/Staging/Prod endpoints
- Enables auto login for Rancher
## [2.0.4] - 2020-01-06
### Added
- PCI Device List
- VLAN Tagging Support in Manual Configuration
- DBAN
- Clonezilla
- Breakin
- FerenOS
- Q4OS 3.10
### Fixed
- FreeBSD working
- Captures upstream iPXE version as ipxe_version
- Fixes Packet and GCE Versioning
## [2.0.3] - 2020-01-02
### Fixed
- Fixes for Live CD and Menus
## [2.0.2] - 2019-12-31
### Fixed
- Windows fixes, timeout for version checking
- Fixes for Deepin and Elementary
## [2.0.1] - 2019-12-27
### Fixed
- Fixes some index.html issues so that iPXE clients exit properly
- Change flags on genisoimage reflect el-torito options
- Move generate_signatures to end of playbook
- Moves retrieval of latest menu version from about to menu to ensure variable is always loaded
- Generates the version file for netboot.xyz site
- Enable epel for packages like figlet
- Fixes some discord messaging
## [2.0.0] - 2019-12-26
### Changes
- Switches primary boot.netboot.xyz to deploy deployed with Ansible and sets up 2.x rolling release series
## [1.9.9] - 2019-12-13
### Deprecated
- Pre 2.x series before being deployed with Ansible
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to netboot.xyz
First of all, thank you for supporting the netboot.xyz community and for
considering contributing to the project!
## How to Contribute
Because netboot.xyz supports many different operating systems and utilities, it
takes work and time to keep the many options updated. Distributions may add a
new version of the operating system, locations of files can change, and versions
might go end of life and drop off the mirrors.
The end goal is to support as many operating systems as possible so that it's
really easy to go explore new operating systems and tools from one location.
## What can I do to help?
### Help keep netboot.xyz updated
If you noticed one of your favorite operating system or tool has been updated,
feel free to open a [Pull Request] to get the operating system updated. It
will be reviewed and merged once validated.
### Add support for new OS and Utilities
Do you have a favorite utility that you use often but isn't on netboot.xyz?
Feel free to request it being added or submit a [Pull Request].
### Ask your distribution to become netboot friendly
If you don't see support for your favorite distribution in netboot.xyz, please
open up an [issue] with netboot.xyz and if possible, open up an issue with the
distribution.
Ask for the distribution to provide a way to load installer kernels from
their mirror directly or provide key files from their release ISO somewhere that
is accessible over HTTP. This usually might be a `vmlinuz`, an `initrd`, and
potentially a `rootfs` and could be extracted and hosted on the mirror when the
release is generated. Providing these allows not only netboot.xyz to load the
installer from a supported and trusted location but also users to do the same
from their own PXE servers. In this day and age as physical media is less
necessary, having the option to pull files as needed is much more efficient
especially when you may have limited bandwidth.
### Improve the documentation and knowledgebase
We are trying to make netboot.xyz a place to come to learn about infrastructure
automation so creating good docs on not only the project but how other distributions
automation works is important. A lot of the logic on booting is currently in code but
getting those into site documentation as well helps them to be better searchable by
search engines. If you are a technical writer, feel free to contribute docs that
would enable others to learn and grow.
### Submit ideas
We are always looking for new ideas to make the tool more useful, if you have an
idea, feel free to open up a Github [issue] or open up a [Pull Request].
### Communication Channels
* [Discord](https://discord.gg/An6PA2a) Chat Server for netboot.xyz discussions, questions, and development
* Follow us on [Twitter](https://twitter.com/netbootxyz) at [@netbootxyz](https://twitter.com/netbootxyz)
for the latest updates
* Start a [discussion](https://github.com/netbootxyz/netboot.xyz/discussions) or share something cool you have done with the project.
### Donate
We have set up an [Open Collective](https://opencollective.com/netbootxyz) and [Github Sponsors](https://github.com/sponsors/netbootxyz) to open the project up to those who wish to donate to help out the project. This may cover hosting and domain fees, hardware for validation testing, or anything else that comes up in maintaining a project like this. Every little bit will help! If you enjoy the work we do, please support us!
## Enjoy and have fun!
[issue]: https://github.com/netbootxyz/netboot.xyz/issues/new
[Pull Request]: https://github.com/netbootxyz/netboot.xyz/pulls
================================================
FILE: Dockerfile
================================================
ARG NBXYZ_OVERRIDES=default
FROM ghcr.io/netbootxyz/builder:latest AS builder
# repo for build
COPY . /ansible
FROM builder AS netbootxyz-default
ENV EXTRA_VARS=""
FROM builder AS netbootxyz-production
ENV EXTRA_VARS="--extra-vars @script/netbootxyz-overrides.yml"
FROM netbootxyz-${NBXYZ_OVERRIDES} AS final
RUN \
echo "**** running ansible ****" && \
cd /ansible && \
ansible-playbook site.yml ${EXTRA_VARS}
# runtime stage
FROM alpine:latest
COPY --from=final /var/www/html/ /mnt/
COPY docker-build-root/ /
ENTRYPOINT [ "/dumper.sh" ]
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
================================================
FILE: README.md
================================================
## netboot.xyz [](https://twitter.com/intent/tweet?text=Your%20favorite%20operating%20systems%20in%20one%20place!&url=https://netboot.xyz&hashtags=netbootxyz,ipxe,pxe,linux,tech,code)
Your favorite operating systems in one place!
[](https://github.com/netbootxyz/netboot.xyz/actions?query=workflow%3Arelease)
[](https://discord.gg/An6PA2a)
[](https://github.com/netbootxyz/netboot.xyz/releases/latest)


### Bootloader Downloads
#### Combined Legacy and UEFI iPXE Bootloaders
| Type | Bootloader | Description |
|------|------------|-------------|
|ISO| [netboot.xyz.iso](https://boot.netboot.xyz/ipxe/netboot.xyz.iso)| Used for CD/DVD, Virtual CDs, DRAC/iLO, VMware, Virtual Box |
|USB| [netboot.xyz.img](https://boot.netboot.xyz/ipxe/netboot.xyz.img)| Used for creation of USB Keys|
#### Legacy (PCBIOS) iPXE Bootloaders
| Type | Bootloader | Description |
|------|------------|-------------|
|Kernel| [netboot.xyz.lkrn](https://boot.netboot.xyz/ipxe/netboot.xyz.lkrn)|Used for booting from GRUB/EXTLINUX|
|Floppy| [netboot.xyz.dsk](https://boot.netboot.xyz/ipxe/netboot.xyz.dsk)| Virtual floppy disk for DRAC/iLO, VMware, Virtual Box, etc|
|Padded Floppy| [netboot.xyz.pdsk](https://boot.netboot.xyz/ipxe/netboot.xyz.pdsk)| Padded Virtual floppy disk for DRAC/iLO, VMware, Virtual Box, etc|
|DHCP| [netboot.xyz.kpxe](https://boot.netboot.xyz/ipxe/netboot.xyz.kpxe)| DHCP boot image file, uses built-in iPXE NIC drivers|
|DHCP-undionly| [netboot.xyz-undionly.kpxe](https://boot.netboot.xyz/ipxe/netboot.xyz-undionly.kpxe)| DHCP boot image file, use if you have NIC issues|
#### UEFI iPXE Bootloaders
| Type | Bootloader | Description |
|------|------------|-------------|
|DHCP| [netboot.xyz.efi](https://boot.netboot.xyz/ipxe/netboot.xyz.efi)| DHCP boot image file, uses built-in iPXE NIC drivers|
|DHCP-snp| [netboot.xyz-snp.efi](https://boot.netboot.xyz/ipxe/netboot.xyz-snp.efi)| EFI w/ Simple Network Protocol, attempts to boot all net devices|
|DHCP-snponly| [netboot.xyz-snponly.efi](https://boot.netboot.xyz/ipxe/netboot.xyz-snponly.efi)| EFI w/ Simple Network Protocol, only boots from device chained from|
#### ARM64 iPXE Bootloaders
| Type | Bootloader | Description |
|------|------------|-------------|
|DHCP| [netboot.xyz-arm64.efi](https://boot.netboot.xyz/ipxe/netboot.xyz-arm64.efi)| DHCP boot image file, uses built-in iPXE NIC drivers|
|DHCP-snp| [netboot.xyz-arm64-snp.efi](https://boot.netboot.xyz/ipxe/netboot.xyz-arm64-snp.efi)| EFI w/ Simple Network Protocol, attempts to boot all net devices|
|DHCP-snponly| [netboot.xyz-arm64-snponly.efi](https://boot.netboot.xyz/ipxe/netboot.xyz-arm64-snponly.efi)| EFI w/ Simple Network Protocol, only boots from device chained from|
#### Raspberry Pi iPXE Bootloaders
| Type | Bootloader | Description |
|------|------------|-------------|
|USB/SD Card| [netboot.xyz-rpi4-sdcard.img](https://boot.netboot.xyz/ipxe/netboot.xyz-rpi4-sdcard.img)| Raspberry Pi 4 - USB/SD Card Image|
|DHCP-snp| [netboot.xyz-rpi4-snp.efi](https://boot.netboot.xyz/ipxe/netboot.xyz-rpi4-snp.efi)| Raspberry Pi 4 - EFI Image|
SHA256 checksums are generated during each build of iPXE and are located [here](https://boot.netboot.xyz/ipxe/netboot.xyz-sha256-checksums.txt). You can also view the scripts that are embedded into the images [here](https://github.com/netbootxyz/netboot.xyz/tree/master/ipxe/disks).
### What is netboot.xyz?
[netboot.xyz](http://www.netboot.xyz) is a convenient place to boot into any type of operating system or utility disk without the need of having to go spend time retrieving the ISO just to run it. [iPXE](http://ipxe.org/) is used to provide a user friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.
If you already have iPXE up and running on the network, you can hit netboot.xyz at anytime by typing for Legacy (PCBIOS) mode:
chain --autofree http://boot.netboot.xyz/ipxe/netboot.xyz.lkrn
or when in UEFI mode:
chain --autofree http://boot.netboot.xyz/ipxe/netboot.xyz.efi
You can also load using HTTPS, but by default builds of iPXE do not have HTTPS support compiled in. This will load the appropriate netboot.xyz kernel with all of the proper options enabled.
### Documentation
See [netboot.xyz](https://netboot.xyz) for all documentation. Some links to get started with are:
* [Downloads](https://netboot.xyz/downloads/)
* [Self Hosting](https://netboot.xyz/docs/selfhosting/)
* [Booting Methods](https://netboot.xyz/docs/booting/ipxe)
* [FAQ](https://netboot.xyz/docs/faq)
* [Blog](https://netboot.xyz/blog)
If you'd like to contribute to the documentation, the netboot.xyz documentation is located at [netboot.xyz-docs](https://github.com/netbootxyz/netboot.xyz-docs).
### Self Hosting netboot.xyz
For those users who want to deploy their own netboot.xyz environment, you can leverage the same scripts that are used to deploy the hosted environment. The source scripts are all Ansible templates and can be generated and customized to your preference.
Please see the [self-hosting docs](https://netboot.xyz/docs/selfhosting/) for more information but in short:
#### Deploying using Ansible
To generate, run:
```
ansible-playbook site.yml
```
The build output will be located in /var/www/html by default.
#### Deploying with Docker
```
docker build -t localbuild --platform=linux/amd64 -f Dockerfile .
docker run --rm -it --platform=linux/amd64 -v $(pwd):/buildout localbuild
```
The build output will be in the generated folder `buildout`
#### Local Overrides
Ansible will handle source generation as well as iPXE disk generation with your settings. It will generate Legacy (PCBIOS) and UEFI iPXE disks that can be used to load into your netboot.xyz environment. If you want to override the defaults, you can put overrides in user_overrides.yml. See `user_overrides.yml` for examples.
Using the overrides file, you can override all of the settings from the defaults/main.yml so that you can easily change the boot mirror URLs when the menus are rendered. If you prefer to do this after the fact, you can also edit the boot.cfg to make changes, but keep in mind those changes will not be saved when you redeploy the menu.
#### Self Hosted Custom Options
In addition to being able to host netboot.xyz locally, you can also create your own custom templates for custom menus within netboot.xyz. Please see [Custom User Menus](etc/netbootxyz/custom/README.md) for more information.
### What Operating Systems are currently available on netboot.xyz?
#### Operating Systems
| Name | URL | Installer Kernel | Live OS |
|------------|-----------------|------------------|---------------|
| AlmaLinux | https://almalinux.org/ | Yes | No |
| Alpine Linux | https://alpinelinux.org | Yes | No |
| Arch Linux | https://www.archlinux.org | Yes | No |
| Backbox | https://www.backbox.org | No | Yes |
| BlackArch Linux | https://blackarch.org | Yes | Yes |
| Bluestar Linux | https://sourceforge.net/projects/bluestarlinux | No | Yes |
| Bodhi Linux | https://www.bodhilinux.com | No | Yes |
| CachyOS | https://cachyos.org | No | Yes |
| CentOS | https://centos.org | Yes | No |
| Debian | https://debian.org | Yes | Yes|
| Devuan | https://devuan.org | Yes | No |
| Elementary OS | https://elementary.io | No | Yes |
| EndeavourOS | https://endeavouros.com | No | Yes |
| Fatdog64 | https://distro.ibiblio.org/fatdog/web/ | No | Yes |
| Fedora | https://fedoraproject.org | Yes | Yes |
| Fedora CoreOS | https://getfedora.org/en/coreos?stream=stable | Yes | No |
| Feren OS | https://ferenos.weebly.com/ | Yes | No |
| Flatcar Container Linux | https://www.flatcar.org | Yes | No |
| FreeBSD | https://freebsd.org | Yes, disk image | No |
| FreeDOS | https://www.freedos.org | ISO - Memdisk| No |
| Garuda Linux | https://garudalinux.org/ | No | Yes |
| Gentoo | https://gentoo.org | Yes | Yes |
| Harvester | https://harvesterhci.io | Yes | No |
| hrmpf | https://github.com/leahneukirchen/hrmpf/ | No | Yes |
| IPFire | https://www.ipfire.org | Yes | No |
| K3OS | https://k3os.io/ | Yes | Yes |
| Kairos | https://kairos.io/ | Yes | No |
| Kali Linux | https://www.kali.org | Yes | Yes |
| KDE Neon | https://neon.kde.org | No | Yes |
| Kodachi | https://www.digi77.com/linux-kodachi/ | No | Yes |
| Linux Lite | https://www.linuxliteos.com | No | Yes |
| LXLE | https://lxle.net/ | No | Yes |
| Mageia | https://www.mageia.org | Yes | No |
| Manjaro | https://manjaro.org | No | Yes |
| Mint | https://linuxmint.com | No | Yes |
| Microsoft Windows | https://www.microsoft.com | User supplied media | No |
| MirOS | http://www.mirbsd.org | Yes | No |
| Nitrux | https://nxos.org/ | No | Yes |
| NixOS | https://nixos.org | Yes | No |
| OpenBSD | https://openbsd.org | Yes | No |
| openEuler | https://openeuler.org | Yes | No |
| openSUSE | https://opensuse.org | Yes | No |
| Oracle Linux | https://www.oracle.com/linux/ | Yes | Installer |
| Parrot Security | https://www.parrotsec.org | No | Yes |
| Peppermint | https://peppermintos.com | No | Yes |
| Pop OS |https://system76.com/pop| No | Yes |
| Proxmox Open Source Products | https://www.proxmox.com/ | Yes | No |
| Q4OS | https://q4os.org | No | Yes |
| Raizo | https://sourceforge.net/projects/live-raizo/ | No | Yes |
| Red Hat Enterprise Linux | https://www.redhat.com | User supplied media | No |
| Regolith | https://regolith-linux.org | No | Yes |
| Rocky Linux | https://rockylinux.org/ | Yes | No |
| Septor | https://septor.sourceforge.io | No | Yes |
| Slackware | https://www.slackware.com | Yes | No |
| SmartOS | https://www.smartos.org/ | Yes | No |
| SparkyLinux | https://sparkylinux.org/ | No | Yes |
| Tails | https://tails.net | No | Yes |
| Talos | https://www.talos.dev/ | Yes | No |
| Tiny Core Linux | https://tinycorelinux.net | Yes | Yes |
| Ubuntu | https://www.ubuntu.com | Yes | Yes |
| VMware | https://www.vmware.com | User supplied media | No |
| VMware Photon | https://vmware.github.io/photon/ | Yes | No |
| Vanilla OS | https://vanillaos.org | No | Yes |
| Voyager | https://voyagerlive.org | No | Yes |
| VyOS | https://vyos.io | Yes | No |
| Zen Installer | https://sourceforge.net/projects/revenge-installer | Yes | No |
| Zorin OS | https://zorin.com | No | Yes |
### Utilities
| Name | URL | Type |
|------------|-------------------------|------|
| 4MLinux | https://4mlinux.com/ | Kernel/Initrd |
| Boot Repair CD | https://sourceforge.net/projects/boot-repair-cd/ | LiveCD |
| Breakin | https://www.advancedclustering.com/products/software/breakin/ | Kernel/Initrd |
| CAINE | https://www.caine-live.net/ | LiveCD |
| Clonezilla | https://www.clonezilla.org/ | LiveCD |
| DBAN | https://www.dban.org/ | Kernel |
| GParted | https://gparted.org | LiveCD |
| Grml | https://grml.org | LiveCD |
| Kaspersky Rescue Disk | https://support.kaspersky.com/krd18 | LiveCD |
| Memtest | https://www.memtest.org/ | Kernel |
| MemTest86 Free | https://www.memtest86.com | USB Img |
| Redo Rescue | http://redorescue.com/ | LiveCD |
| Rescatux | https://www.supergrubdisk.org/rescatux/ | LiveCD |
| Rescuezilla | https://rescuezilla.com/ | LiveCD |
| ShredOS | https://github.com/PartialVolume/shredos.x86_64 | Kernel |
| Super Grub2 Disk | https://www.supergrubdisk.org | ISO - Memdisk |
| System Rescue | https://system-rescue.org/ | LiveCD |
| Ultimate Boot CD | https://www.ultimatebootcd.com | ISO - Memdisk |
| ZFSBootMenu | https://docs.zfsbootmenu.org/ | Kernel |
### Stargazers over time
[](https://starchart.cc/netbootxyz/netboot.xyz)
### Feedback
Feel free to open up an [issue](https://github.com/netbootxyz/netboot.xyz/issues) on Github or ping us on [Discord](https://discord.gg/An6PA2a). Follow us on [Twitter](https://twitter.com/netbootxyz) and like us on [Facebook](https://www.facebook.com/netboot.xyz)!
================================================
FILE: docker-build-root/dumper.sh
================================================
#! /bin/sh
# check for dump dir
if [ -d /buildout ]; then
# if there are no files in that directory use 777 perms as root
if [ `find /buildout -prune -empty 2>/dev/null` ]; then
/bin/mkdir -p /buildout/buildout
/bin/cp -r /mnt/* /buildout/buildout/
/bin/chmod 777 -R /buildout/buildout
# match the ownership of the first file we see
else
PERMS=`/usr/bin/find /buildout/* -print -quit |xargs stat -c "%u:%g"`
/bin/mkdir -p /buildout/buildout
/bin/cp -r /mnt/* /buildout/buildout/
/bin/chown $PERMS -R /buildout/buildout
fi
else
/bin/echo "/buildout not found exiting"
exit 1
fi
================================================
FILE: endpoints.yml
================================================
endpoints:
kali-xfce-squash:
path: /debian-squash/releases/download/2025.4-f03c4b56/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: kali
version: '2025.4'
flavor: xfce
kernel: kali-xfce-squash
kde-neon-user:
path: /ubuntu-squash/releases/download/20260312-0746-88395a11/
files:
- vmlinuz
- filesystem.squashfs
- initrd.lz
os: neon
version: 20260312-0746
flavor: user
kernel: kde-neon-user
regolith-current:
path: /ubuntu-squash/releases/download/1.2-e7db33e3/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: regolith
version: current
flavor: ubuntu
kernel: regolith-current
breakin:
path: /asset-mirror/releases/download/4.26.1-f22abf78/
files:
- vmlinuz
- initrd
os: breakin
version: 4.26.1
dban:
path: /asset-mirror/releases/download/2.3.0-dca9acb4/
files:
- DBAN.BZI
os: dban
version: 2.3.0
sparky-stable-mingui:
path: /debian-squash/releases/download/8.2-d8df60d4/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: sparky
version: stable
flavor: xfce-min
kernel: sparky-stable-mingui
sparky-stable-gui:
path: /debian-squash/releases/download/8.2-28fbf253/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: sparky
version: stable
flavor: xfce
kernel: sparky-stable-gui
sparky-stable-lxqt:
path: /debian-squash/releases/download/8.2-16df4761/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: sparky
version: stable
flavor: lxqt
kernel: sparky-stable-lxqt
sparky-rolling-mingui:
path: /debian-squash/releases/download/2026.03-8a7a4cf8/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: sparky
version: rolling
flavor: xfce-min
kernel: sparky-rolling-mingui
sparky-rolling-gui:
path: /debian-squash/releases/download/2026.03-314f0a50/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: sparky
version: rolling
flavor: xfce
kernel: sparky-rolling-gui
sparky-rolling-lxqt:
path: /debian-squash/releases/download/2026.03-1a7f6c6a/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: sparky
version: rolling
flavor: lxqt
kernel: sparky-rolling-lxqt
oracle-8:
path: /asset-mirror/releases/download/6-c7882e2d/
files:
- vmlinuz
- initrd
- squashfs.img
os: oracle
version: '8'
arch: x86_64
kodachi-6:
path: /ubuntu-squash/releases/download/6.2-2a23039c/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: kodachi
version: '6'
devuan-ascii:
path: /debian-squash/releases/download/2.1-c1f637a9/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: devuan
version: '2'
flavor: ascii
gparted-stable:
path: /debian-squash/releases/download/1.8.0-2-5616e296/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: gparted
version: stable
rescatux:
path: /debian-squash/releases/download/0.72-beta8-55ca0efd/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: rescatux
version: current
caine:
path: /ubuntu-squash/releases/download/13.0-4216585a/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: caine
version: '13.0'
dts:
path: /dts/v2.7.1
files:
- initrd
- vmlinuz
os: dts
version: 2.7.1
bootrepair:
path: /ubuntu-squash/releases/download/current-e035b00c/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: bootrepair
version: current
blackarch-installer:
path: /asset-mirror/releases/download/2023.04.01-cfc58a6d/
files:
- initrd
- vmlinuz
- airootfs.sfs
os: blackarch
version: current
bluestar:
path: /asset-mirror/releases/download/6.7.8-2024.03.04-d4e083fc/
files:
- initrd
- vmlinuz
- airootfs.sfs
os: bluestar
version: current
zeninstall:
path: /asset-mirror/releases/download/2020.05.27-b25da634/
files:
- initrd
- vmlinuz
- airootfs.sfs
os: zeninstall
version: current
lxle:
path: /ubuntu-squash/releases/download/18.04.3-83291c4b/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: lxle
version: current
kaspersky-rescue:
path: /asset-mirror/releases/download/18-7f6056db/
files:
- initrd.xz
- initrd
- vmlinuz
- kernel.dat
- 000-core.srm
- 001-xorg.srm
- 002-xfce.srm
- 003-kl.srm
- 004-krt.srm
- 005-bases.srm
- 008-firefox.srm
os: kaspersky
version: '18'
septor:
path: /debian-squash/releases/download/2022-32f07395/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: septor
version: current
manjaro-xfce-current:
path: /manjaro-squash/releases/download/26.0.3-260228-linux618-93c4b57e/
files:
- livefs.sfs
- rootfs.sfs
- mhwdfs.sfs
- desktopfs.sfs
- initrd
- vmlinuz
os: manjaro
version: current
flavor: xfce
kernel: manjaro-xfce-current
manjaro-gnome-current:
path: /manjaro-squash/releases/download/26.0.3-260228-linux618-917f9a0a/
files:
- livefs.sfs
- rootfs.sfs
- mhwdfs.sfs
- desktopfs.sfs
- initrd
- vmlinuz
os: manjaro
version: current
flavor: gnome
kernel: manjaro-gnome-current
manjaro-kde-current:
path: /manjaro-squash/releases/download/26.0.3-260228-linux618-df3b24fa/
files:
- livefs.sfs
- rootfs.sfs
- mhwdfs.sfs
- desktopfs.sfs
- initrd
- vmlinuz
os: manjaro
version: current
flavor: kde
kernel: manjaro-kde-current
fatdog:
path: /asset-mirror/releases/download/903-eefda31d/
files:
- vmlinuz
- initrd
os: fatdog
version: current
raizo:
path: /debian-squash/releases/download/v17.26.01.25i-5c171de0/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: raizo
version: current
4mlinux:
path: /asset-mirror/releases/download/50.1-fcaac630/
files:
- initrd
- vmlinuz
os: 4mlinux
version: current
flavor: full
4mlinux-thesss:
path: /asset-mirror/releases/download/51.0-bb45ecde/
files:
- initrd
- vmlinuz
os: 4mlinux
version: current
flavor: TheSSS
4mlinux-bakandimg:
path: /asset-mirror/releases/download/51.0-978b0518/
files:
- initrd
- vmlinuz
os: 4mlinux
version: current
flavor: BakAndImg
4mlinux-antivirus:
path: /asset-mirror/releases/download/51.0-1.5.1-6a1b14f1/
files:
- initrd
- vmlinuz
os: 4mlinux
version: current
flavor: AntivirusLiveCD
ubuntu-20.04-default-squash:
path: /ubuntu-squash/releases/download/20.04.6-edcc76af/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '20.04'
flavor: GNOME
kernel: ubuntu-20.04-default-squash
ubuntu-20.04-KDE-squash:
path: /ubuntu-squash/releases/download/20.04.6-de797e6a/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '20.04'
flavor: KDE
kernel: ubuntu-20.04-KDE-squash
ubuntu-20.04-XFCE-squash:
path: /ubuntu-squash/releases/download/20.04.6-ecac5789/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '20.04'
flavor: XFCE
kernel: ubuntu-20.04-XFCE-squash
ubuntu-20.04-Budgie-squash:
path: /ubuntu-squash/releases/download/20.04.6-4901a824/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '20.04'
flavor: Budgie
kernel: ubuntu-20.04-Budgie-squash
ubuntu-20.04-MATE-squash:
path: /ubuntu-squash/releases/download/20.04.6-b988c78f/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '20.04'
flavor: MATE
kernel: ubuntu-20.04-MATE-squash
ubuntu-20.04-kylin-squash:
path: /ubuntu-squash/releases/download/20.04.6-fe97e81a/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '20.04'
flavor: kylin
kernel: ubuntu-20.04-kylin-squash
voyager-focal-squash:
path: /ubuntu-squash/releases/download/focal-594b12a7/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: Voyager
version: focal
flavor: focal
kernel: voyager-focal-squash
pop-20.04-default-squash:
path: /ubuntu-squash/releases/download/5-66b7e861/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: pop
version: '20.04'
flavor: intel-amd
kernel: pop-20.04-default-squash
pop-20.04-nvidia-squash:
path: /ubuntu-squash/releases/download/5-6efd1d75/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: pop
version: '20.04'
flavor: nvidia
kernel: pop-20.04-nvidia-squash
nixos-20.03:
path: /asset-mirror/releases/download/124244129-bd20f138/
files:
- bzImage
- initrd
- netboot.ipxe
os: nixos
version: '20.03'
kodachi-7:
path: /ubuntu-squash/releases/download/7.6-5b1ead62/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: kodachi
version: '7'
linux-lite-5-squash:
path: /ubuntu-squash/releases/download/5.8-75cb937c/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: lite
version: 5.8
kernel: linux-lite-5-squash
vyos-rolling:
path: /debian-squash/releases/download/2026.03.19-0028-rolling-bf6bd56c/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: vyos
version: rolling
flavor: rolling
kernel: vyos-rolling
pureos-gnome:
path: /ubuntu-squash/releases/download/2020-08-06-83257efc/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: pureos
version: current
flavor: gnome
kernel: pureos-gnome
rescuezilla:
path: /asset-mirror/releases/download/2.6.1-123ed276/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: rescuezilla
version: 2.6.1
nitrux-release:
path: /ubuntu-squash/releases/download/2022.02.28-e364d0a5/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: nitrux
version: 2022.02.28
endeavouros:
path: /asset-mirror/releases/download/Neo-2026.01.12-a0604436/
files:
- airootfs.sfs
- initrd
- vmlinuz
os: endeavouros
version: Neo-2026.01.12
kodachi-8:
path: /ubuntu-squash/releases/download/8.2-625e11fa/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: kodachi
version: '8'
redorescue:
path: /asset-mirror/releases/download/4.0.0-000d2575/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: redorescue
version: 4.0.0
elementaryos-6-default-squash:
path: /ubuntu-squash/releases/download/6-3e90a5ea/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: elementary-os
version: '6'
kernel: elementaryos-6-default-squash
voyager-bullseye-squash:
path: /debian-squash/releases/download/bullseye-a59d37d9/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: Voyager
version: bullseye
flavor: bullseye
kernel: voyager-bullseye-squash
memtest86:
path: /asset-mirror/releases/download/11.6-e4a137e7/
files:
- memtest86-usb.img
os: memtest86-free
version: '11.6'
gentoo-x86:
path: /asset-mirror/releases/download/20241209T170323Z-4e10abc5/
files:
- image.squashfs
- initrd
- vmlinuz
os: gentoo
version: 20241209T170323Z
arch: x86
gentoo-arm64:
path: /asset-mirror/releases/download/20260113T194558Z-3c528165/
files:
- image.squashfs
- initrd
- vmlinuz
os: gentoo
version: 20260113T194558Z
arch: arm64
gentoo-amd64:
path: /asset-mirror/releases/download/20260125T170113Z-9aa997ef/
files:
- image.squashfs
- initrd
- vmlinuz
os: gentoo
version: 20260125T170113Z
arch: amd64
tails:
path: /asset-mirror/releases/download/7.5-17629562/
files:
- vmlinuz
- initrd.img
- 9990-misc-helpers.sh
- tails-amd64.iso
os: tails
version: '7.5'
arch: amd64
hrmpf:
path: /asset-mirror/releases/download/20231124-1008bb6d/
files:
- vmlinuz
- initrd
- squashfs.img
os: hrmpf
version: '20231124'
ubuntu-netboot-20.04-arm64:
path: /ubuntu-squash/releases/download/20.04.5-bb142c3d/
files:
- initrd
- vmlinuz
os: ubuntu
version: 20.04.5
codename: focal
flavor: netboot
kernel: ubuntu-netboot-20.04-arm64
arch: arm64
ubuntu-netboot-20.04-amd64:
path: /ubuntu-squash/releases/download/20.04.6-b13ed0a8/
files:
- initrd
- vmlinuz
os: ubuntu
version: 20.04.6
codename: focal
flavor: netboot
kernel: ubuntu-netboot-20.04-amd64
arch: amd64
systemrescue-i686:
path: /asset-mirror/releases/download/9.03-0f19cc5c/
files:
- airootfs.sfs
- initrd
- vmlinuz
os: systemrescue
version: 9.03
arch: i686
systemrescue-amd64:
path: /asset-mirror/releases/download/12.03-d20a63ac/
files:
- airootfs.sfs
- initrd
- vmlinuz
- archiso_pxe_http
os: systemrescue
version: 12.03
arch: amd64
shredos-i686:
path: /asset-mirror/releases/download/0.34_32-bit_20221231-c4450e3a/
files:
- shredos
os: shredos
version: 0.34_32-bit_20221231
arch: i686
shredos-x86_64:
path: /asset-mirror/releases/download/2025.11_28_x86-64_0.40-bf7a6bdf/
files:
- shredos
os: shredos
version: 2025.11_28_x86-64_0.40
arch: x86_64
archlinux-32:
path: /asset-mirror/releases/download/2024.07.10-2797a944/
files:
- airootfs.sfs
- initramfs-linux.img
- vmlinuz-linux
os: archlinux
version: 2024.07.10
arch: i686
clonezilla-debian-stable-amd64:
path: /debian-squash/releases/download/3.3.1-35-1a41a72c/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: clonezilla
version: 3.3.1-35
flavor: stable
kernel: clonezilla-debian-stable-amd64
arch: amd64
clonezilla-ubuntu-stable-amd64:
path: /ubuntu-squash/releases/download/20260220-questing-b835723b/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: clonezilla
version: 20260220-questing
flavor: stable
kernel: clonezilla-ubuntu-stable-amd64
arch: amd64
clonezilla-debian-testing-amd64:
path: /debian-squash/releases/download/3.3.2-8-8db01622/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: clonezilla
version: 3.3.2-8
flavor: testing
kernel: clonezilla-debian-testing-amd64
arch: amd64
clonezilla-ubuntu-testing-amd64:
path: /ubuntu-squash/releases/download/20260318-resolute-bea81d96/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: clonezilla
version: 20260318-resolute
flavor: testing
kernel: clonezilla-ubuntu-testing-amd64
arch: amd64
garuda-dr460nized-gaming:
path: /asset-mirror/releases/download/250801-a96201bb/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: dr460nized-gaming
version: 250801
garuda-dr460nized:
path: /asset-mirror/releases/download/250801-f610be58/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: dr460nized
version: 250801
garuda-xfce:
path: /asset-mirror/releases/download/250801-c866e6bf/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: xfce
version: 250801
garuda-gnome:
path: /asset-mirror/releases/download/250801-c80a21be/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: gnome
version: 250801
garuda-lxqt-kwin:
path: /asset-mirror/releases/download/230501-f13b4b24/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: lxqt-kwin
version: 230501
garuda-wayfire:
path: /asset-mirror/releases/download/230501-61b681d1/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: wayfire
version: 230501
garuda-qtile:
path: /asset-mirror/releases/download/231029-9dfb930b/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: qtile
version: 231029
garuda-i3wm:
path: /asset-mirror/releases/download/250801-d48b8f05/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: i3wm
version: 250801
garuda-sway:
path: /asset-mirror/releases/download/250801-8d451890/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: sway
version: 250801
garuda-mate:
path: /asset-mirror/releases/download/230501-3af08aa6/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: mate
version: 230501
garuda-kde-barebones:
path: /asset-mirror/releases/download/220329-198784ed/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: kde-barebones
version: 220329
proxmox-backup-server:
path: /asset-mirror/releases/download/4.1-1-6f50261b/
files:
- initrd
- vmlinuz
- proxmox.iso
os: proxmox-backup-server
version: 4.1-1
proxmox-ve:
path: /asset-mirror/releases/download/9.1-1-1d6923a5/
files:
- initrd
- proxmox.iso
- vmlinuz
os: proxmox-ve
version: 9.1-1
proxmox-mailgateway:
path: /asset-mirror/releases/download/9.0-1-ded4eba1/
files:
- initrd
- vmlinuz
- proxmox.iso
os: proxmox-mailgateway
version: 9.0-1
ubuntu-netboot-22.04-amd64:
path: /ubuntu-squash/releases/download/22.04.5-be230164/
files:
- initrd
- vmlinuz
os: ubuntu
version: 22.04.5
codename: jammy
flavor: netboot
kernel: ubuntu-netboot-22.04-amd64
arch: amd64
ubuntu-netboot-22.04-arm64:
path: /ubuntu-squash/releases/download/22.04.5-9d9df014/
files:
- initrd
- vmlinuz
os: ubuntu
version: 22.04.5
codename: jammy
flavor: netboot
kernel: ubuntu-netboot-22.04-arm64
arch: arm64
ubuntu-22.04-default-squash:
path: /ubuntu-squash/releases/download/22.04.5-9d09e9e2/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '22.04'
flavor: GNOME
kernel: ubuntu-22.04-default-squash
ubuntu-22.04-XFCE-squash:
path: /ubuntu-squash/releases/download/22.04.5-f1d182b7/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '22.04'
flavor: XFCE
kernel: ubuntu-22.04-XFCE-squash
ubuntu-22.04-MATE-squash:
path: /ubuntu-squash/releases/download/22.04.5-96688be7/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '22.04'
flavor: MATE
kernel: ubuntu-22.04-MATE-squash
ubuntu-22.04-Budgie-squash:
path: /ubuntu-squash/releases/download/22.04.5-a893fa5a/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '22.04'
flavor: Budgie
kernel: ubuntu-22.04-Budgie-squash
ubuntu-22.04-KDE-squash:
path: /ubuntu-squash/releases/download/22.04.5-45d5c769/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '22.04'
flavor: KDE
kernel: ubuntu-22.04-KDE-squash
ubuntu-22.04-kylin-squash:
path: /ubuntu-squash/releases/download/22.04.5-943f61f5/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '22.04'
flavor: kylin
kernel: ubuntu-22.04-kylin-squash
voyager-jammy-squash:
path: /ubuntu-squash/releases/download/jammy-e9ee9abe/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: Voyager
version: jammy
flavor: jammy
kernel: voyager-jammy-squash
pop-22.04-default-squash:
path: /ubuntu-squash/releases/download/21-31dbd35b/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: pop
version: '22.04'
flavor: intel-amd
kernel: pop-22.04-default-squash
vmware-photon-x86_64:
path: /asset-mirror/releases/download/4.0-febcf67e/
files:
- initrd.img
- vmlinuz
os: vmware-photon
version: '4.0'
arch: x86_64
vmware-photon-aarch64:
path: /asset-mirror/releases/download/4.0-ed208546/
files:
- initrd.img
- vmlinuz
os: vmware-photon
version: '4.0'
arch: aarch64
harvester:
path: /asset-mirror/releases/download/v1.7.1-fcf0fd7f/
files:
- harvester-vmlinuz-amd64
- harvester-initrd-amd64
- harvester-rootfs-amd64.squashfs
- harvester-amd64.sha512
- version.yaml
os: harvester
version: v1.7.1
linux-lite-6-squash:
path: /ubuntu-squash/releases/download/6.4-2550834c/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: lite
version: 6.4
kernel: linux-lite-6-squash
mint-21-cinnamon-squash:
path: /ubuntu-squash/releases/download/21-32bd7a0e/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '21'
flavor: Cinnamon
kernel: mint-21-cinnamon-squash
mint-21-mate-squash:
path: /ubuntu-squash/releases/download/21-f0dbd590/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '21'
flavor: mate
kernel: mint-21-mate-squash
mint-21-xfce-squash:
path: /ubuntu-squash/releases/download/21-48716442/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '21'
flavor: xfce
kernel: mint-21-xfce-squash
oracle-9-x86_64:
path: /asset-mirror/releases/download/U1-23c7d963/
files:
- vmlinuz
- initrd
- squashfs.img
os: oracle
version: '9'
arch: x86_64
oracle-9-aarch64:
path: /asset-mirror/releases/download/U1-f576e989/
files:
- vmlinuz
- initrd
- squashfs.img
os: oracle
version: '9'
arch: aarch64
parrot-home:
path: /debian-squash/releases/download/6.3.2-27d6d20b/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: parrot
version: 6.3.2
flavor: home
parrot-security:
path: /debian-squash/releases/download/6.3.2-b763048a/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: parrot
version: 6.3.2
flavor: security
xcp-ng:
path: /asset-mirror/releases/download/8.3-55521b28/
files:
- xen.gz
- vmlinuz
- install.img
os: xcp-ng
version: '8.2'
garuda-cinnamon:
path: /asset-mirror/releases/download/250801-0b360492/
files:
- amd_ucode.img
- desktopfs.sfs
- intel_ucode.img
- livefs.sfs
- initramfs.img
- mhwdfs.sfs
- rootfs.sfs
- vmlinuz
os: garuda
flavor: cinnamon
version: 250801
elementaryos-7-default-squash:
path: /ubuntu-squash/releases/download/7-82f69428/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: elementary-os
version: '7'
kernel: elementaryos-7-default-squash
ubuntu-20.04-LXQT-squash:
path: /ubuntu-squash/releases/download/20.04.5-07228691/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '20.04'
flavor: LXQT
kernel: ubuntu-20.04-LXQT-squash
ubuntu-22.04-LXQT-squash:
path: /ubuntu-squash/releases/download/22.04.5-81dbf90b/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: ubuntu
version: '22.04'
flavor: LXQT
kernel: ubuntu-22.04-LXQT-squash
backbox-default-squash:
path: /ubuntu-squash/releases/download/8.1-c2287989/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: BackBox
version: '8.1'
flavor: desktop
kernel: backbox-default-squash
bodhi-standard:
path: /ubuntu-squash/releases/download/7.0.0-f22738f2/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: bodhi
version: 7.0.0
flavor: standard
bodhi-apppack:
path: /ubuntu-squash/releases/download/7.0.0-b588d8e1/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: bodhi
version: 7.0.0
flavor: apppack
mfsbsd-14:
path: /asset-mirror/releases/download/14.2-f360f980/
files:
- default.img
- special-edition.img
os: freebsd
version: '14'
zorin-core-squash:
path: /ubuntu-squash/releases/download/17.3-a87e018b/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: zorin
version: '17.3'
flavor: Core
kernel: zorin-core-squash
q4os-plasma-squash:
path: /debian-squash/releases/download/6.6-65fa9dd9/
files:
- filesystem.squashfs
os: Q4OS
version: '6.6'
flavor: plasma
kernel: q4os-default-squash
q4os-default-squash:
path: /debian-squash/releases/download/6.6-5d30850e/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: Q4OS
version: '6.6'
flavor: trinity
kernel: q4os-default-squash
memtest86plus:
path: /asset-mirror/releases/download/8.00-32a14678/
files:
- memtest32.bin
- memtest32.efi
- memtest64.bin
- memtest64.efi
- mt86p_i586
- mt86p_la64
- mt86p_x86_64
os: memtest86-plus
version: '8.00'
ubuntu-netboot-24.04-arm64:
path: /ubuntu-squash/releases/download/24.04.4-b13d6c2e/
files:
- initrd
- vmlinuz
os: ubuntu
version: 24.04.4
codename: noble
flavor: netboot
kernel: ubuntu-netboot-24.04-arm64
arch: arm64
ubuntu-netboot-24.04-amd64:
path: /ubuntu-squash/releases/download/24.04.4-717d3a1a/
files:
- initrd
- vmlinuz
os: ubuntu
version: 24.04.4
codename: noble
flavor: netboot
kernel: ubuntu-netboot-24.04-amd64
arch: amd64
fedora-40-gnome:
path: /fedora-assets/releases/download/1.14-aefc8f89/
files:
- vmlinuz
- initrd
- squashfs.img
os: fedora
version: 40
flavor: GNOME
ubuntu-24.04-default-squash:
path: /ubuntu-squash/releases/download/24.04.4-315cc059/
files:
- filesystem.squashfs
- initrd
- vmlinuz
- minimal.standard.live.squashfs
- minimal.standard.squashfs
- minimal.squashfs
os: ubuntu
version: '24.04'
flavor: GNOME
kernel: ubuntu-24.04-default-squash
vanilla-os:
path: /asset-mirror/releases/download/20240728-32e3ebb7/
files:
- initrd
- filesystem.squashfs
- vmlinuz
os: vanilla-os
version: 2-20240728
zfsbootmenu:
path: /asset-mirror/releases/download/3.1.0-1620b6a3/
files:
- zfsbootmenu-recovery-x86_64.efi
os: zfsbootmenu
version: 3.1.0
supergrubdisk:
path: /asset-mirror/releases/download/2.06s4-30515aca/
files:
- supergrub2-classic-x86_64.efi
os: supergrubdisk
version: 2.06s4
mint-22-xfce-squash:
path: /ubuntu-squash/releases/download/22-e45bc094/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '22'
flavor: xfce
kernel: mint-22-xfce-squash
mint-22-cinnamon-squash:
path: /ubuntu-squash/releases/download/22-14b93ac4/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '22'
flavor: Cinnamon
kernel: mint-22-cinnamon-squash
mint-22-mate-squash:
path: /ubuntu-squash/releases/download/22-482b71dc/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '22'
flavor: mate
kernel: mint-22-mate-squash
ubuntu-netboot-24.10-amd64:
path: /ubuntu-squash/releases/download/24.10-01d20dde/
files:
- initrd
- vmlinuz
os: ubuntu
version: '24.10'
codename: oracular
flavor: netboot
kernel: ubuntu-netboot-24.10-amd64
arch: amd64
ubuntu-netboot-24.10-arm64:
path: /ubuntu-squash/releases/download/24.10-f22a7742/
files:
- initrd
- vmlinuz
os: ubuntu
version: '24.10'
codename: oracular
flavor: netboot
kernel: ubuntu-netboot-24.10-arm64
arch: arm64
grml-small-amd64:
path: /debian-squash/releases/download/2025.12-ca5dc013/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: grml
version: '2025.12'
flavor: small
arch: amd64
grml-full-amd64:
path: /debian-squash/releases/download/2025.12-ee78df85/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: grml
version: '2025.12'
flavor: full
arch: amd64
grml-full-arm64:
path: /debian-squash/releases/download/2025.12-f76c469c/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: grml
version: '2025.12'
flavor: full
arch: arm64
grml-small-arm64:
path: /debian-squash/releases/download/2025.12-d7d97ac4/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: grml
version: '2025.12'
flavor: small
arch: arm64
uefishell:
path: /asset-mirror/releases/download/edk2-stable202002-a6917535/
files:
- uefi-shell-x64.efi
- uefi-shell-aarch64.efi
- uefi-shell-arm.efi
os: uefi-shell
version: edk2-stable202002
uefi-shell-x64:
path: /asset-mirror/releases/download/edk2-stable202002-a9ce7096/
files:
- uefi-shell-x64.efi
os: uefi-shell-x64
version: edk2-stable202002
ubuntu-netboot-25.04-amd64:
path: /ubuntu-squash/releases/download/25.04-fa10ffe9/
files:
- initrd
- vmlinuz
os: ubuntu
version: '25.04'
codename: plucky
flavor: netboot
kernel: ubuntu-netboot-25.04-amd64
arch: amd64
ubuntu-netboot-25.04-arm64:
path: /ubuntu-squash/releases/download/25.04-63097bc7/
files:
- initrd
- vmlinuz
os: ubuntu
version: '25.04'
codename: plucky
flavor: netboot
kernel: ubuntu-netboot-25.04-arm64
arch: arm64
mint-20-xfce-squash:
path: /ubuntu-squash/releases/download/20.3-af4b8d97/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '20.3'
flavor: xfce
kernel: mint-20-xfce-squash
mint-20-cinnamon-squash:
path: /ubuntu-squash/releases/download/20.3-33df4cad/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '20.3'
flavor: Cinnamon
kernel: mint-20-cinnamon-squash
mint-20-mate-squash:
path: /ubuntu-squash/releases/download/20.3-7b17290c/
files:
- initrd
- vmlinuz
- filesystem.squashfs
os: mint
version: '20.3'
flavor: mate
kernel: mint-20-mate-squash
mint-lmde-cinnamon-squash:
path: /debian-squash/releases/download/6-1834227b/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: mint
version: '6'
flavor: Cinnamon
kernel: mint-lmde-cinnamon-squash
ubuntu-spins:
path: /asset-mirror/releases/download/0.0.3-d0cf8373/
files:
- vmlinuz
- initrd
os: ubuntu-spins
version: 0.0.3
cachyos:
path: /asset-mirror/releases/download/260308-b5de98b7/
files:
- airootfs.sfs
- initrd
- vmlinuz
- archiso_pxe_http
os: cachyos
version: '260308'
deepin-20-squash:
path: /debian-squash/releases/download/20.9-a4ce5fe4/
files:
- filesystem.squashfs
- initrd
- vmlinuz
os: Deepin
version: '20.9'
kernel: deepin-20-squash
debian-13-live-kernel:
path: /debian-core-13/releases/download/13.3.0-0a426450/
files:
- initrd
- vmlinuz
os: debian
version: '13'
debian-13-default-squash:
path: /debian-squash/releases/download/13.4.0-9d9b777e/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: core
kernel: debian-13-live-kernel
debian-13-lxde-squash:
path: /debian-squash/releases/download/13.4.0-98209c44/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: lxde
kernel: debian-13-live-kernel
debian-13-kde-squash:
path: /debian-squash/releases/download/13.4.0-c5f83616/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: kde
kernel: debian-13-live-kernel
debian-13-gnome-squash:
path: /debian-squash/releases/download/13.4.0-0aea8fe2/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: gnome
kernel: debian-13-live-kernel
debian-13-lxqt-squash:
path: /debian-squash/releases/download/13.4.0-6936b7a0/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: lxqt
kernel: debian-13-live-kernel
debian-13-mate-squash:
path: /debian-squash/releases/download/13.4.0-f3c0e3ad/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: mate
kernel: debian-13-live-kernel
ubuntu-netboot-25.10-amd64:
path: /ubuntu-squash/releases/download/25.10-64f54a86/
files:
- initrd
- vmlinuz
os: ubuntu
version: '25.10'
codename: questing
flavor: netboot
kernel: ubuntu-netboot-25.10-amd64
arch: amd64
ubuntu-netboot-25.10-arm64:
path: /ubuntu-squash/releases/download/25.10-9fc235de/
files:
- initrd
- vmlinuz
os: ubuntu
version: '25.10'
codename: questing
flavor: netboot
kernel: ubuntu-netboot-25.10-arm64
arch: arm64
debian-13-cinnamon-squash:
path: /debian-squash/releases/download/13.4.0-bcf1dab7/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: cinnamon
kernel: debian-13-live-kernel
debian-13-xfce-squash:
path: /debian-squash/releases/download/13.4.0-5048a26b/
files:
- filesystem.squashfs
os: debian
version: 13.4.0
flavor: xfce
kernel: debian-13-live-kernel
proxmox-datacenter-manager:
path: /asset-mirror/releases/download/1.0-2-6fa12487/
files:
- initrd
- proxmox.iso
- vmlinuz
os: proxmox-datacenter-manager
version: 1.0-2
ubuntu-netboot-hwe-24.04-amd64:
path: /ubuntu-squash/releases/download/24.04.4-5d65e4e9/
files:
- initrd
- vmlinuz
os: ubuntu
version: 24.04.4
codename: noble
flavor: netboot-hwe
kernel: ubuntu-netboot-hwe-24.04-amd64
arch: amd64
ubuntu-netboot-hwe-24.04-arm64:
path: /ubuntu-squash/releases/download/24.04.4-940f2f1c/
files:
- initrd
- vmlinuz
os: ubuntu
version: 24.04.4
codename: noble
flavor: netboot-hwe
kernel: ubuntu-netboot-hwe-24.04-arm64
arch: arm64
================================================
FILE: etc/netbootxyz/custom/README.md
================================================
# Custom Menus for Self Hosted netboot.xyz
This directory contains custom iPXE files that are rendered
during menu generation and available from the main menu via
the custom menu option.
When these options are set:
```
custom_generate_menus: true
custom_templates_dir: "{{ netbootxyz_conf_dir }}/custom"
```
the menu will add an option for custom menus and attempt to load into
custom/custom.ipxe. From there custom options can be built and
maintained seperately from the netboot.xyz source tree so that both
menus can be updated independently.
A sample menu is provided to demonstrate how to configure and set up
a menu. You can copy the custom directory from the repo:
```
cp -r etc/netbootxyz/custom /etc/netbootxyz/custom
```
If you are building via Docker, you can create a `custom` folder in
the root source directory and then set the variable like so:
```
custom_generate_menus: true
custom_templates_dir: "/ansible/custom"
```
================================================
FILE: etc/netbootxyz/custom/custom.ipxe.j2
================================================
#!ipxe
###
### {{ site_name }} custom menu example
###
:custom
clear custom_choice
menu This is a Test Menu
item --gap This is the first sub menu
item option_one ${space} Loading a kernel and initrd
item option_two ${space} Loading an ISO
item --gap This is a second sub menu
item option_three ${space} Loads another custom sub menu
item option_four ${space} This is option four
choose custom_choice || goto custom_exit
echo ${cls}
goto ${custom_choice}
goto custom_exit
:option_one
kernel http://path.to/vmlinuz
initrd http://path.to/initrd
imgargs vmlinuz put_kernel_img_args_here
boot || goto custom_exit
:option_two
kernel {{ memdisk_location }} raw iso
initrd http://path.to/iso
boot || goto custom_exit
:option_three
echo Chains into another menu...
chain custom1.ipxe || goto custom
:custom_exit
exit
================================================
FILE: renovate.json
================================================
{
"extends": [
"config:recommended"
],
"regexManagers": [
{
"fileMatch": ["^\\.github\\/workflows\\/.*\\.ya?ml$"],
"matchStrings": [
"pip(?:3)?\\s+install(?:\\s+(?:-U|--upgrade))?\\s+(?<depName>[A-Za-z0-9_.+-]+(?:\\[[^\\]]+\\])?)==(?<currentValue>\\d+(?:\\.\\d+)*)"
],
"datasourceTemplate": "pypi"
}
]
}
================================================
FILE: roles/netbootxyz/README.md
================================================
Ansible role: netbootxyz
========================
Uses Ansible to generate a self hosted environment of netboot.xyz for use anywhere
Requirements
------------
Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
Role Variables
--------------
A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
Dependencies
------------
A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
Example Playbook
----------------
Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
- hosts: servers
roles:
- { role: username.rolename, x: 42 }
License
-------
Apache
Author Information
------------------
Website: https://netboot.xyz
Author: Antony Messerli
================================================
FILE: roles/netbootxyz/defaults/main.yml
================================================
boot_domain: boot.netboot.xyz
boot_timeout: 300000
boot_version: 3.x
bootloader_disks:
- netboot.xyz
bootloader_http_enabled: true
bootloader_https_enabled: true
bootloaders:
arm:
- desc: Used for CD/DVD, Virtual CDs, DRAC/iLO, VMware, Virtual Box
ipxe_bin: ipxe.iso
output_bin: -arm64.iso
type: ISO
- desc: Used for creation of USB Keys
ipxe_bin: ipxe.img
output_bin: -arm64.img
type: IMG
- desc: DHCP EFI boot image file, uses built-in iPXE NIC drivers
ipxe_bin: ipxe.efi
output_bin: -arm64.efi
type: DHCP
- desc: EFI w/ Simple Network Protocol, attempts to boot all net devices
ipxe_bin: snp.efi
output_bin: -arm64-snp.efi
type: DHCP-snp
- desc: EFI w/ Simple Network Protocol, only boots from device chained from
ipxe_bin: snponly.efi
output_bin: -arm64-snponly.efi
type: DHCP-snponly
hybrid:
- desc: Used for CD/DVD, Virtual CDs, DRAC/iLO, VMware, Virtual Box
ipxe_bin: ipxe.iso
output_bin: .iso
type: ISO
- desc: Used for creation of USB Keys
ipxe_bin: ipxe.img
output_bin: .img
type: IMG
legacy:
- desc: Used for booting from GRUB/EXTLINUX
ipxe_bin: ipxe.lkrn
output_bin: .lkrn
type: Kernel
- desc: Virtual floppy disk for DRAC/iLO, VMware, Virtual Box, etc
ipxe_bin: ipxe.dsk
output_bin: .dsk
type: Floppy
- desc: Padded Virtual floppy disk for DRAC/iLO, VMware, Virtual Box, etc
ipxe_bin: ipxe.pdsk
output_bin: .pdsk
type: Floppy
- desc: DHCP boot image file, uses built-in iPXE NIC drivers
ipxe_bin: ipxe.kpxe
output_bin: .kpxe
type: DHCP
- desc: DHCP boot image file, use if you have NIC issues
ipxe_bin: undionly.kpxe
output_bin: -undionly.kpxe
type: DHCP-undionly
multiarch:
- desc: Used for CD/DVD, Virtual CDs, DRAC/iLO, VMware, Virtual Box
ipxe_bin: ipxe.iso
output_bin: -multiarch.iso
type: ISO
- desc: Used for creation of USB Keys
ipxe_bin: ipxe.img
output_bin: -multiarch.img
type: IMG
rpi:
- desc: Raspberry Pi 4 - USB/SD Card Image
ipxe_bin: rpi4-sdcard.img
output_bin: -rpi4-sdcard.img
type: USB/SD Card
- desc: Raspberry Pi 4 - EFI Image
ipxe_bin: snp.efi
output_bin: -rpi4-snp.efi
type: DHCP-snp
secureboot_arm64:
- desc: Secure Boot ARM64 ISO for CD/DVD/Virtual Media
output_bin: -sb-arm64.iso
type: ISO
- desc: Secure Boot ARM64 USB image
output_bin: -sb-arm64.img
type: IMG
secureboot_x86_64:
- desc: Secure Boot x86_64 ISO for CD/DVD/Virtual Media
output_bin: -sb.iso
type: ISO
- desc: Secure Boot x86_64 USB image
output_bin: -sb.img
type: IMG
uefi:
- desc: DHCP EFI boot image file, uses built-in iPXE NIC drivers
ipxe_bin: ipxe.efi
output_bin: .efi
type: DHCP
- desc: EFI w/ Simple Network Protocol, attempts to boot all net devices
ipxe_bin: snp.efi
output_bin: -snp.efi
type: DHCP-snp
- desc: EFI w/ Simple Network Protocol, only boots from device chained from
ipxe_bin: snponly.efi
output_bin: -snponly.efi
type: DHCP-snponly
- desc: DHCP EFI Floppy boot image file, uses built-in iPXE NIC drivers
ipxe_bin: ipxe.efi.dsk
output_bin: .efi.dsk
type: Floppy
- desc: EFI Floppy image w/ Simple Network Protocol, attempts to boot all net devices
ipxe_bin: snp.efi.dsk
output_bin: -snp.efi.dsk
type: Floppy-snp
cert_dir: /etc/netbootxyz/certs
cert_file_filename: ca-netboot-xyz.crt
checksums_filename: '{{ site_name }}-sha256-checksums.txt'
codesign_cert_filename: codesign.crt
codesign_key_filename: codesign.key
custom_generate_menus: false
custom_github_menus: true
custom_templates_dir: '{{ netbootxyz_conf_dir }}/custom'
custom_url_menus: true
early_menu_contents: '### put early ipxe settings here'
early_menu_enabled: false
generate_checksums: true
generate_disks: true
generate_disks_arm: false
generate_disks_efi: true
generate_disks_hybrid: false
generate_disks_legacy: true
generate_disks_linux: false
generate_disks_rpi: false
generate_disks_secureboot: false
generate_local_vars: true
generate_menus: true
generate_signatures: false
generate_version_file: true
ipxe_branch: master
ipxe_ca_filename: ca-ipxe-org.crt
ipxe_ca_url: http://ca.ipxe.org/ca.crt
ipxe_debug_enabled: false
ipxe_debug_options: httpcore,tls
ipxe_repo: https://github.com/ipxe/ipxe
ipxe_secureboot_archive_url: https://github.com/ipxe/ipxe/releases/download/{{ ipxe_secureboot_version
}}/ipxeboot.tar.gz
ipxe_secureboot_version: v2.0.0
ipxe_source_dir: /usr/src/ipxe
kernel_params: initrd=initrd.magic ${cmdline}
live_endpoint: https://github.com/netbootxyz
make_num_jobs: 1
memdisk_location: http://${boot_domain}/memdisk
netbootxyz_conf_dir: /etc/netbootxyz
netbootxyz_root: /var/www/html
pciids_url: https://raw.githubusercontent.com/netbootxyz/pciids/master/pciids.ipxe
pipxe_branch: master
pipxe_repo: https://github.com/netbootxyz/pipxe
pipxe_source_dir: /usr/src/pipxe
releases:
almalinux:
base_dir: almalinux
enabled: true
menu: linux
mirror: http://repo.almalinux.org
name: AlmaLinux
versions:
- code_name: 10
name: 10 (Latest)
- code_name: 9
name: 9 (Latest)
- code_name: 8
name: 8 (Latest)
alpinelinux:
base_dir: alpine
enabled: true
menu: linux
mirror: http://dl-cdn.alpinelinux.org
name: Alpine Linux
versions:
- code_name: v3.23
name: '3.23'
- code_name: edge
name: Edge (development)
archlinux:
base_dir: archlinux
enabled: true
menu: linux
mirror: mirrors.kernel.org
name: Arch Linux
versions:
- code_name: 2026.03.01
name: 2026.03.01
blackarch:
enabled: true
menu: linux
name: BlackArch
versions:
- code_name: current
name: current
centos:
base_dir: null
enabled: true
menu: linux
mirror: https://mirror.stream.centos.org
name: CentOS Stream
versions:
- code_name: 10-stream
name: 10.0 Stream
- code_name: 9-stream
name: 9.0 Stream
coreos:
base_dir: prod/streams
enabled: true
menu: linux
mirror: https://builds.coreos.fedoraproject.org
name: Fedora CoreOS
versions:
- code_name: 43.20260301.3.1
name: stable
- code_name: 43.20260316.2.1
name: testing
- code_name: 44.20260316.1.1
name: next
debian:
archive_mirror: http://archive.debian.org
base_dir: debian
enabled: true
menu: linux
mirror: http://deb.debian.org
name: Debian
versions:
stable:
- code_name: trixie
name: 13.0 (trixie)
- code_name: bookworm
name: 12.0 (bookworm)
testing:
- code_name: forky
name: forky (testing)
- code_name: sid
name: sid (unstable)
devuan:
base_dir: devuan
enabled: true
menu: linux
mirror: http://deb.devuan.org
name: Devuan
versions:
stable:
- code_name: daedalus
name: 5.0 Daedalus (stable)
- code_name: chimaera
name: 4.0 Chimaera (oldstable)
- code_name: beowulf
name: 3.1 Beowulf (oldoldstable)
testing:
- code_name: excalibur
name: Excalibur (testing)
fedora:
base_dir: fedora
enabled: true
menu: linux
mirror: http://mirrors.kernel.org
name: Fedora
versions:
- code_name: 43
name: 43
- code_name: 42
name: 42
flatcar:
enabled: true
menu: linux
mirror: ''
name: Flatcar Container Linux
versions:
- code_name: stable
name: Stable Channel
- code_name: beta
name: Beta Channel
- code_name: alpha
name: Alpha Channel
- code_name: edge
name: Edge Channel
freebsd:
enabled: true
menu: bsd
name: FreeBSD
freedos:
base_dir: pub/micro/pc-stuff/freedos/files/distributions/1.4
enabled: true
menu: dos
mirror: http://www.ibiblio.org
name: FreeDOS
versions:
- code_name: FD14-FullUSB
name: 1.4 Full Installer
- code_name: FD14-LiteUSB
name: 1.4 Lite Installer
gentoo:
enabled: true
menu: linux
name: Gentoo
harvester:
enabled: true
menu: linux
name: Harvester
ipfire:
base_dir: releases/ipfire-2.x
enabled: true
menu: linux
mirror: https://downloads.ipfire.org
name: IPFire
versions:
- code_name: 2.29-core200
name: 2.29 Core200
k3os:
enabled: true
menu: linux
mirror: https://github.com/rancher/k3os/releases
name: k3OS
kairos:
enabled: true
flavors:
- key: core
name: Core
- key: k3sv1.30.11-k3s1
name: k3s v1.30.11-k3s1 (Standard)
- key: k3sv1.31.7-k3s1
name: k3s v1.31.7-k3s1 (Standard)
- key: k3sv1.32.3-k3s1
name: k3s v1.32.3-k3s1 (Standard)
menu: linux
mirror: https://github.com/kairos-io/kairos/releases
name: Kairos
platforms:
- key: alpine-3.21
name: Alpine Linux 3.21
- key: debian-12
name: Debian 12
- key: fedora-40
name: Fedora 40
- key: opensuse-leap-15.6
name: openSUSE Leap 15.6
- key: opensuse-tumbleweed
name: openSUSE Tumbleweed
- key: rockylinux-9
name: Rocky Linux 9
- key: ubuntu-22.04
name: Ubuntu 22.04
- key: ubuntu-24.04
name: Ubuntu 24.04
- key: ubuntu-24.10
name: Ubuntu 24.10
version: v3.5.3
kali:
base_dir: kali
enabled: true
menu: linux
mirror: http://http.kali.org
name: Kali Linux
versions:
- code_name: rolling
name: Rolling Edition
mageia:
base_dir: mageia
enabled: true
menu: linux
mirror: http://mirrors.kernel.org
name: Mageia
versions:
- code_name: '8'
name: '8'
- code_name: cauldron
name: cauldron
nixos:
base_dir: nixos
enabled: true
menu: linux
name: NixOS
versions:
- code_name: nixos-25.11
name: nixos-25.11
- code_name: nixos-25.05
name: nixos-25.05
- code_name: nixos-24.11
name: nixos-24.11
- code_name: nixos-24.05
name: nixos-24.05
- code_name: nixos-23.11
name: nixos-23.11
- code_name: nixos-23.05
name: nixos-23.05
- code_name: nixos-22.11
name: nixos-22.11
- code_name: nixos-22.05
name: nixos-22.05
- code_name: nixos-21.11
name: nixos-21.11
- code_name: nixos-21.05
name: nixos-21.05
- code_name: nixos-20.09
name: nixos-20.09
openEuler:
base_dir: null
enabled: true
menu: linux
mirror: http://repo.openeuler.org
name: openEuler
versions:
- code_name: openEuler-24.09
name: openEuler-24.09
- code_name: openEuler-24.03-LTS-SP1
name: openEuler-24.03-LTS-SP1
- code_name: openEuler-20.03-LTS-SP3
name: openEuler-20.03-LTS-SP3
- code_name: openEuler-22.03-LTS
name: openEuler-22.03-LTS
- code_name: openEuler-22.03-LTS-SP1
name: openEuler-22.03-LTS-SP1
- code_name: openEuler-22.03-LTS-SP2
name: openEuler-22.03-LTS-SP2
openbsd:
base_dir: pub/OpenBSD
enabled: true
menu: bsd
mirror: http://cdn.openbsd.org
name: OpenBSD
versions:
- code_name: snapshots
image_ver: '78'
name: 7.8 Latest Snapshot
- code_name: '7.8'
image_ver: '78'
name: '7.8'
- code_name: '7.7'
image_ver: '77'
name: '7.7'
opensuse:
base_dir: distribution/leap
enabled: true
menu: linux
mirror: http://download.opensuse.org
name: openSUSE
versions:
- code_name: '16.0'
name: openSUSE Leap 16.0
- code_name: '15.6'
name: openSUSE Leap 15.6
- code_name: tumbleweed
name: openSUSE tumbleweed
oracle:
enabled: true
menu: linux
mirror: https://yum.oracle.com
name: Oracle Linux
paths:
8: /repo/OracleLinux/OL8/baseos/latest
9: /repo/OracleLinux/OL9/baseos/latest
photon:
enabled: true
menu: linux
name: VMware Photon
proxmox:
enabled: true
menu: linux
name: Proxmox
rhel:
enabled: true
menu: linux
name: Red Hat Enterprise Linux
rockylinux:
base_dir: pub/rocky
enabled: true
menu: linux
mirror: http://download.rockylinux.org
name: Rocky Linux
versions:
- code_name: 10
name: 10 (Latest)
- code_name: 9
name: 9 (Latest)
- code_name: 8
name: 8 (Latest)
slackware:
base_dir: slackware
enabled: true
menu: linux
mirror: http://mirrors.kernel.org
name: Slackware
versions:
- code_name: current
name: Current
- code_name: '14.2'
name: '14.2'
- code_name: '14.1'
name: '14.1'
- code_name: '15.0'
name: '15.0'
smartos:
base_dir: /platform/i86pc/
enabled: true
menu: unix
mirror: https://netboot.smartos.org/os/
name: SmartOS
versions:
- code_name: 20260319T000507Z
name: 20260319T000507Z
- code_name: 20260306T044811Z
name: 20260306T044811Z
- code_name: 20260305T000543Z
name: 20260305T000543Z
- code_name: 20260219T015737Z
name: 20260219T015737Z
talos:
enabled: true
menu: linux
mirror: https://github.com/siderolabs/talos/releases
name: Talos
platforms:
- key: metal
name: Bare Metal
- key: aws
name: AWS
- key: azure
name: Azure
- key: digitalocean
name: Digital Ocean
- key: equinixMetal
name: Equinix Metal
- key: gcp
name: GCP
- key: hcloud
name: Hetzner Cloud
- key: nocloud
name: Nocloud
- key: openstack
name: Openstack
- key: oracle
name: oracle
- key: scaleway
name: Scaleway
- key: upcloud
name: Upcloud
- key: vmware
name: VMware
- key: vultr
name: Vultr
tinycore:
enabled: true
menu: linux
mirror: http://distro.ibiblio.org/tinycorelinux
name: Tiny Core Linux
versions:
- arch: x86
code_name: core
initrd: /17.x/x86/release/distribution_files/core.gz
kernel: /17.x/x86/release/distribution_files/vmlinuz
name: Core
- arch: x86_64
code_name: corepure
initrd: /17.x/x86_64/release/distribution_files/corepure64.gz
kernel: /17.x/x86_64/release/distribution_files/vmlinuz64
name: CorePure
- arch: x86
code_name: dcorebionic
initrd: /dCore/x86/release/dCore-bionic/dCore-bionic.gz
kernel: /dCore/x86/release/dCore-bionic/vmlinuz-bionic
name: dCore Bionic
- arch: x86
code_name: dcorebionicplus
initrd: /dCore/x86/release/dCore-bionic/dCorePlus-bionic.gz
kernel: /dCore/x86/release/dCore-bionic/vmlinuz-bionic
name: dCore Bionic Plus
- arch: x86
code_name: dcorejessie
initrd: /dCore/x86/release/dCore-jessie/dCore-jessie.gz
kernel: /dCore/x86/release/dCore-jessie/vmlinuz-jessie
name: dCore Jessie
- arch: x86
code_name: dcorejessieplus
initrd: /dCore/x86/release/dCore-jessie/dCorePlus-jessie.gz
kernel: /dCore/x86/release/dCore-jessie/vmlinuz-jessie
name: dCore Jessie Plus
- arch: x86
code_name: dcorestretch
initrd: /dCore/x86/release/dCore-stretch/dCore-stretch.gz
kernel: /dCore/x86/release/dCore-stretch/vmlinuz-stretch
name: dCore Stretch
- arch: x86
code_name: dcorestretchplus
initrd: /dCore/x86/release/dCore-stretch/dCorePlus-stretch.gz
kernel: /dCore/x86/release/dCore-stretch/vmlinuz-stretch
name: dCore Stretch Plus
- arch: x86
code_name: dcoretrusty
initrd: /dCore/x86/release/dCore-trusty/dCore-trusty.gz
kernel: /dCore/x86/release/dCore-trusty/vmlinuz-trusty
name: dCore Trusty
- arch: x86
code_name: dcoretrustyplus
initrd: /dCore/x86/release/dCore-trusty/dCorePlus-trusty.gz
kernel: /dCore/x86/release/dCore-trusty/vmlinuz-trusty
name: dCore Trusty Plus
- arch: x86
code_name: dcorewheezy
initrd: /dCore/x86/release/dCore-wheezy/dCore-wheezy.gz
kernel: /dCore/x86/release/dCore-wheezy/vmlinuz-wheezy
name: dCore Wheezy
- arch: x86
code_name: dcorewheezyplus
initrd: /dCore/x86/release/dCore-wheezy/dCorePlus-wheezy.gz
kernel: /dCore/x86/release/dCore-wheezy/vmlinuz-wheezy
name: dCore Wheezy Plus
- arch: x86
code_name: dcorexenial
initrd: /dCore/x86/release/dCore-xenial/dCore-xenial.gz
kernel: /dCore/x86/release/dCore-xenial/vmlinuz-xenial
name: dCore Xenial
- arch: x86
code_name: dcorexenialplus
initrd: /dCore/x86/release/dCore-xenial/dCorePlus-xenial.gz
kernel: /dCore/x86/release/dCore-xenial/vmlinuz-xenial
name: dCore Xenial Plus
- arch: x86_64
code_name: dcore64bionic
initrd: /dCore/x86_64/release/dCore-bionic64/dCore-bionic64.gz
kernel: /dCore/x86_64/release/dCore-bionic64/vmlinuz-bionic64
name: dCore64 Bionic
- arch: x86_64
code_name: dcore64bionicplus
initrd: /dCore/x86_64/release/dCore-bionic64/dCorePlus-bionic64.gz
kernel: /dCore/x86_64/release/dCore-bionic64/vmlinuz-bionic64
name: dCore64 Bionic Plus
- arch: x86_64
code_name: dcore64buster
initrd: /dCore/x86_64/release/dCore-buster64/dCore-buster64.gz
kernel: /dCore/x86_64/release/dCore-buster64/vmlinuz-buster64
name: dCore64 Buster
- arch: x86_64
code_name: dcore64busterplus
initrd: /dCore/x86_64/release/dCore-buster64/dCorePlus-buster64.gz
kernel: /dCore/x86_64/release/dCore-buster64/vmlinuz-buster64
name: dCore64 Buster Plus
- arch: x86_64
code_name: dcore64stretch
initrd: /dCore/x86_64/release/dCore-stretch64/dCore-stretch64.gz
kernel: /dCore/x86_64/release/dCore-stretch64/vmlinuz-stretch64
name: dCore64 Stretch
- arch: x86_64
code_name: dcore64stretchplus
initrd: /dCore/x86_64/release/dCore-stretch64/dCorePlus-stretch64.gz
kernel: /dCore/x86_64/release/dCore-stretch64/vmlinuz-stretch64
name: dCore Stretch Plus
ubuntu:
archive_mirror: http://old-releases.ubuntu.com
base_dir: ubuntu
enabled: true
menu: linux
mirror: http://archive.ubuntu.com
name: Ubuntu
versions:
- code_name: questing
name: 25.10 Questing Quokka
- code_name: plucky
name: 25.04 Plucky Puffin
- code_name: oracular
name: 24.10 Oracular Oriole
- code_name: noble
name: 24.04 LTS Noble Numbat
- code_name: jammy
name: 22.04 LTS Jammy Jellyfish
- code_name: focal
name: 20.04 LTS Focal Fossa (Subiquity)
- code_name: focal-legacy
name: 20.04 LTS Focal Fossa (Legacy)
- code_name: bionic
name: 18.04 LTS Bionic Beaver
- code_name: xenial
name: 16.04 LTS Xenial Xerus
vmware:
enabled: true
menu: linux
name: VMware ESXi
vyos:
enabled: true
menu: linux
name: VyOS
versions:
- code_name: rolling
name: 1.5 rolling
zeninstall:
enabled: true
menu: linux
name: Zen Installer Arch
versions:
- code_name: current
name: current
sigs_dir: '{{ netbootxyz_root }}/sigs'
sigs_enabled: false
sigs_location: http://${boot_domain}/sigs/
sigs_menu: false
site_name: netboot.xyz
time_server: 0.pool.ntp.org
utilitiesarm:
memtest86:
enabled: false
kernel: ${live_endpoint}{{ endpoints.memtest86.path }}memtest86-usb.img
name: Memtest86 Free - {{ endpoints.memtest86.version }}
type: sanboot
uefishell:
enabled: true
kernel: ${live_endpoint}{{ endpoints.uefishell.path }}uefi-shell-aarch64.efi
name: UEFI Shell
type: direct
utilitiesefi:
4mlinux:
enabled: true
name: 4MLinux
type: ipxemenu
bootrepair:
enabled: true
initrd: ${live_endpoint}{{ endpoints.bootrepair.path }}initrd
kernel: ${live_endpoint}{{ endpoints.bootrepair.path }}vmlinuz ip=dhcp boot=casper
netboot=http fetch=${live_endpoint}{{ endpoints.bootrepair.path }}filesystem.squashfs
{{ kernel_params }}
name: Boot Repair CD
type: direct
caine:
enabled: true
initrd: ${live_endpoint}{{ endpoints.caine.path }}initrd
kernel: ${live_endpoint}{{ endpoints.caine.path }}vmlinuz ip=dhcp boot=casper
netboot=url url=${live_endpoint}{{ endpoints.caine.path }}filesystem.squashfs
{{ kernel_params }}
name: CAINE
type: direct
clonezilla:
enabled: true
name: Clonezilla
type: ipxemenu
dts:
enabled: true
initrd: https://boot.dasharo.com{{ endpoints.dts.path }}/dts-base-image-v{{ endpoints.dts.version
}}.cpio.gz
kernel: https://boot.dasharo.com{{ endpoints.dts.path }}/bzImage-v{{ endpoints.dts.version
}}
name: Dasharo Tools Suite
type: direct
gparted:
enabled: true
name: GParted
type: ipxemenu
kaspersky:
enabled: true
name: Kaspersky Rescue Disk
type: ipxemenu
memtest86plus:
enabled: true
name: Memtest86+ {{ endpoints.memtest86plus.version }}
type: memtest
util_path: ${live_endpoint}{{ endpoints.memtest86plus.path }}mt86p_x86_64
version: '{{ endpoints.memtest86plus.version }}'
redorescue:
enabled: true
initrd: ${live_endpoint}{{ endpoints.redorescue.path }}initrd
kernel: ${live_endpoint}{{ endpoints.redorescue.path }}vmlinuz boot=live noprompt
nocomponents setkmap=us fetch=${live_endpoint}{{ endpoints.redorescue.path }}filesystem.squashfs
{{ kernel_params }}
name: RedoRescue
type: direct
rescatux:
enabled: true
initrd: ${live_endpoint}{{ endpoints.rescatux.path }}initrd
kernel: ${live_endpoint}{{ endpoints.rescatux.path }}vmlinuz boot=live fetch=${live_endpoint}{{
endpoints.rescatux.path }}filesystem.squashfs selinux=1 security=selinux enforcing=0
{{ kernel_params }}
name: Rescatux
type: direct
rescuezilla:
enabled: true
name: Rescuezilla
type: ipxemenu
shredos:
enabled: true
name: ShredOS
type: ipxemenu
supergrubdisk:
enabled: true
kernel: ${live_endpoint}{{ endpoints.supergrubdisk.path }}supergrub2-classic-x86_64.efi
name: Super Grub2 Disk
type: direct
systemrescue:
enabled: true
name: System Rescue CD
type: ipxemenu
uefishell:
enabled: true
kernel: ${live_endpoint}{{ endpoints.uefishell.path }}uefi-shell-x64.efi
name: UEFI Shell
type: direct
zfsbootmenu:
enabled: true
kernel: ${live_endpoint}{{ endpoints.zfsbootmenu.path }}zfsbootmenu-recovery-x86_64.efi
name: ZFSBootMenu
type: direct
utilitiespcbios32:
clonezilla:
enabled: true
name: Clonezilla
type: ipxemenu
memtest86legacy:
enabled: true
name: Memtest86+ 5.01.0
type: memtest
util_path: https://boot.netboot.xyz/utils/memtest86-5.01.0
version: 5.01.0
memtest86plus:
enabled: true
name: Memtest86+ {{ endpoints.memtest86plus.version }}
type: memtest
util_path: ${live_endpoint}{{ endpoints.memtest86plus.path }}mt86p_i586
version: '{{ endpoints.memtest86plus.version }}'
shredos:
enabled: true
name: ShredOS
type: ipxemenu
systemrescue:
enabled: true
name: System Rescue CD
type: ipxemenu
utilitiespcbios64:
4mlinux:
enabled: true
name: 4MLinux
type: ipxemenu
bootrepair:
enabled: true
initrd: ${live_endpoint}{{ endpoints.bootrepair.path }}initrd
kernel: ${live_endpoint}{{ endpoints.bootrepair.path }}vmlinuz ip=dhcp boot=casper
netboot=http fetch=${live_endpoint}{{ endpoints.bootrepair.path }}filesystem.squashfs
{{ kernel_params }}
name: Boot Repair CD
type: direct
breakin:
enabled: true
initrd: ${live_endpoint}{{ endpoints.breakin.path }}initrd
kernel: ${live_endpoint}{{ endpoints.breakin.path }}vmlinuz sshpasswd=breakin
startup=breakin {{ kernel_params }}
name: Breakin
type: direct
caine:
enabled: true
initrd: ${live_endpoint}{{ endpoints.caine.path }}initrd
kernel: ${live_endpoint}{{ endpoints.caine.path }}vmlinuz ip=dhcp boot=casper
netboot=http fetch=${live_endpoint}{{ endpoints.caine.path }}filesystem.squashfs
{{ kernel_params }}
name: CAINE
type: direct
clonezilla:
enabled: true
name: Clonezilla
type: ipxemenu
dban:
enabled: true
name: DBAN
type: ipxemenu
dts:
enabled: true
initrd: https://boot.dasharo.com{{ endpoints.dts.path }}/dts-base-image-v{{ endpoints.dts.version
}}.cpio.gz
kernel: https://boot.dasharo.com{{ endpoints.dts.path }}/bzImage-v{{ endpoints.dts.version
}}
name: Dasharo Tools Suite
type: direct
gparted:
enabled: true
name: GParted
type: ipxemenu
kaspersky:
enabled: true
name: Kaspersky Rescue Disk
type: ipxemenu
memtest86legacy:
enabled: true
name: Memtest86+ 5.01.0
type: memtest
util_path: https://boot.netboot.xyz/utils/memtest86-5.01.0
version: 5.01.0
memtest86plus:
enabled: true
name: Memtest86+ {{ endpoints.memtest86plus.version }}
type: memtest
util_path: ${live_endpoint}{{ endpoints.memtest86plus.path }}mt86p_x86_64
version: '{{ endpoints.memtest86plus.version }}'
redorescue:
enabled: true
initrd: ${live_endpoint}{{ endpoints.redorescue.path }}initrd
kernel: ${live_endpoint}{{ endpoints.redorescue.path }}vmlinuz boot=live noprompt
nocomponents setkmap=us fetch=${live_endpoint}{{ endpoints.redorescue.path }}filesystem.squashfs
{{ kernel_params }}
name: RedoRescue
type: direct
rescatux:
enabled: true
initrd: ${live_endpoint}{{ endpoints.rescatux.path }}initrd
kernel: ${live_endpoint}{{ endpoints.rescatux.path }}vmlinuz boot=live fetch=${live_endpoint}{{
endpoints.rescatux.path }}filesystem.squashfs selinux=1 security=selinux enforcing=0
{{ kernel_params }}
name: Rescatux
type: direct
rescuezilla:
enabled: true
name: Rescuezilla
type: ipxemenu
shredos:
enabled: true
name: ShredOS
type: ipxemenu
supergrub:
enabled: true
name: Super GRUB2 Disk
type: memdisk
util_path: http://master.dl.sourceforge.net/project/supergrub2/2.04s1/super_grub2_disk_2.04s1/super_grub2_disk_hybrid_2.04s1.iso
version: 2.04s1
systemrescue:
enabled: true
name: System Rescue CD
type: ipxemenu
ubcd:
enabled: true
name: Ultimate Boot CD (UBCD)
type: memdisk
util_path: https://mirror.sysadminguide.net/ubcd/ubcd539.iso
version: '539'
wimboot_location: http://${boot_domain}/wimboot
wimboot_upstream_url: https://github.com/ipxe/wimboot/releases/latest/download/wimboot
================================================
FILE: roles/netbootxyz/files/ipxe/local/colour.h
================================================
#undef COLOR_NORMAL_FG
#undef COLOR_NORMAL_BG
#undef COLOR_SELECT_FG
#undef COLOR_SELECT_BG
#undef COLOR_SEPARATOR_FG
#undef COLOR_SEPARATOR_BG
#undef COLOR_EDIT_FG
#undef COLOR_EDIT_BG
#undef COLOR_ALERT_FG
#undef COLOR_ALERT_BG
#undef COLOR_URL_FG
#undef COLOR_URL_BG
#undef COLOR_PXE_FG
#undef COLOR_PXE_BG
#define COLOR_NORMAL_FG COLOR_CYAN
#define COLOR_NORMAL_BG COLOR_BLACK
#define COLOR_SELECT_FG COLOR_WHITE
#define COLOR_SELECT_BG COLOR_BLUE
#define COLOR_SEPARATOR_FG COLOR_WHITE
#define COLOR_SEPARATOR_BG COLOR_BLACK
#define COLOR_EDIT_FG COLOR_BLACK
#define COLOR_EDIT_BG COLOR_CYAN
#define COLOR_ALERT_FG COLOR_WHITE
#define COLOR_ALERT_BG COLOR_RED
#define COLOR_URL_FG COLOR_CYAN
#define COLOR_URL_BG COLOR_BLUE
#define COLOR_PXE_FG COLOR_BLACK
#define COLOR_PXE_BG COLOR_WHITE
================================================
FILE: roles/netbootxyz/files/ipxe/local/console.h
================================================
#define CONSOLE_FRAMEBUFFER /* Graphical framebuffer console */
================================================
FILE: roles/netbootxyz/files/ipxe/local/crypto.h
================================================
#undef OCSP_CHECK
================================================
FILE: roles/netbootxyz/files/ipxe/local/general.h
================================================
#define CERT_CMD /* Certificate management commands */
#define CONSOLE_CMD /* Console command */
#define DIGEST_CMD /* Image crypto digest commands */
#define DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */
#define DOWNLOAD_PROTO_NFS /* NFS */
#define IMAGE_COMBOOT /* COMBOOT */
#define IMAGE_TRUST_CMD /* Image trust management commands */
#define IMAGE_GZIP /* GZIP image support */
#define IMAGE_PNG /* PNG image support */
#define IMAGE_ZLIB /* ZLIB image support */
#define NET_PROTO_IPV6 /* IPv6 protocol */
#define NET_PROTO_LLDP /* Link Layer Discovery protocol */
#define NSLOOKUP_CMD /* DNS resolving command */
#define NTP_CMD /* NTP commands */
#define PARAM_CMD /* Form parameter commands */
#define PCI_CMD /* PCI commands */
#define PING_CMD /* Ping command */
#define POWEROFF_CMD /* Power off commands */
#define REBOOT_CMD /* Reboot command */
#define TIME_CMD /* Time commands */
#define VLAN_CMD /* VLAN commands */
================================================
FILE: roles/netbootxyz/files/ipxe/local/general.h.efi
================================================
#define CERT_CMD /* Certificate management commands */
#define CONSOLE_CMD /* Console command */
#define DIGEST_CMD /* Image crypto digest commands */
#define DOWNLOAD_PROTO_HTTPS /* Secure Hypertext Transfer Protocol */
#define DOWNLOAD_PROTO_NFS /* NFS */
#define IMAGE_TRUST_CMD /* Image trust management commands */
#define IMAGE_GZIP /* GZIP image support */
#define IMAGE_PNG /* PNG image support */
#define IMAGE_ZLIB /* ZLIB image support */
#define NET_PROTO_IPV6 /* IPv6 protocol */
#define NET_PROTO_LLDP /* Link Layer Discovery protocol */
#define NSLOOKUP_CMD /* DNS resolving command */
#define NTP_CMD /* NTP commands */
#define PARAM_CMD /* Form parameter commands */
#define PCI_CMD /* PCI commands */
#define PING_CMD /* Ping command */
#define POWEROFF_CMD /* Power off commands */
#define REBOOT_CMD /* Reboot command */
#define TIME_CMD /* Time commands */
#define VLAN_CMD /* VLAN commands */
================================================
FILE: roles/netbootxyz/meta/main.yml
================================================
galaxy_info:
author: Antony Messerli
description: Installs a self hosted version of netboot.xyz
license: Apache-2.0
min_ansible_version: 2.7
platforms:
- name: Ubuntu
versions:
- all
- name: Centos
versions:
- all
galaxy_tags:
- system
dependencies: []
================================================
FILE: roles/netbootxyz/tasks/generate_checksums.yml
================================================
---
- name: Register a listing of all created iPXE bootloaders
ansible.builtin.shell: ls -p -I {{ checksums_filename }} {{ netbootxyz_root }}/ipxe/ | grep -v /
register: netboot_disks
- name: Generate date
ansible.builtin.command: date
register: current_date
- name: Gather stat listing of directory
ansible.builtin.command: sha256sum -b {{ item }}
with_items:
- "{{ netboot_disks.stdout_lines }}"
args:
chdir: "{{ netbootxyz_root }}/ipxe/"
register: netboot_disks_stat
- name: Generate ipxe disk checksums
ansible.builtin.template:
src: checksums.txt.j2
dest: "{{ netbootxyz_root }}/ipxe/{{ checksums_filename }}"
- name: Generate site name banner for index
ansible.builtin.shell: toilet -f standard {{ site_name | quote }} --html | grep span
register: index_title
when: ansible_facts['os_family'] == "Debian"
- name: Reset bootloader filename to first in list
ansible.builtin.set_fact:
bootloader_filename: "{{ bootloader_disks | first }}"
- name: Generate netboot.xyz index template
ansible.builtin.template:
src: index.html.j2
dest: "{{ netbootxyz_root }}/index.html"
================================================
FILE: roles/netbootxyz/tasks/generate_disks.yml
================================================
---
- name: Set up iPXE build environment
ansible.builtin.include_tasks: generate_disks_base.yml
- name: Generate legacy iPXE bootloaders
ansible.builtin.include_tasks: generate_disks_legacy.yml
when:
- generate_disks_legacy | default(true) | bool
- name: Generate linux iPXE bootloader
ansible.builtin.include_tasks: generate_disks_linux.yml
when:
- generate_disks_linux | default(false) | bool
- name: Generate EFI iPXE bootloaders
ansible.builtin.include_tasks: generate_disks_efi.yml
when:
- generate_disks_efi | default(true) | bool
- name: Generate ARM iPXE bootloaders
ansible.builtin.include_tasks: generate_disks_arm.yml
when:
- generate_disks_arm | default(false) | bool
- name: Generate RPI iPXE bootloaders
ansible.builtin.include_tasks: generate_disks_rpi.yml
when:
- generate_disks_rpi | default(false) | bool
- bootloader_filename == "netboot.xyz"
- name: Generate hybrid iPXE bootloaders
ansible.builtin.include_tasks: generate_disks_hybrid.yml
when:
- generate_disks_hybrid | default(false) | bool
- bootloader_filename == "netboot.xyz"
- name: Generate Secure Boot iPXE bootloaders
ansible.builtin.include_tasks: generate_disks_secureboot.yml
when:
- generate_disks_secureboot | default(false) | bool
- bootloader_filename == "netboot.xyz"
- name: Remove stale autoexec.ipxe when Secure Boot is disabled
ansible.builtin.file:
path: "{{ netbootxyz_root }}/ipxe/autoexec.ipxe"
state: absent
when:
- not (generate_disks_secureboot | default(false) | bool)
================================================
FILE: roles/netbootxyz/tasks/generate_disks_arm.yml
================================================
---
- name: Copy netboot.xyz local EFI iPXE configs
ansible.builtin.copy:
src: "ipxe/local/{{ item }}"
dest: "{{ ipxe_source_dir }}/src/config/local/{{ item }}"
with_items:
- colour.h
- console.h
- crypto.h
- name: Copy netboot.xyz general.h.efi iPXE config
ansible.builtin.copy:
src: "ipxe/local/general.h.efi"
dest: "{{ ipxe_source_dir }}/src/config/local/general.h"
- name: Set trust file to ipxe ca
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }}"
when: not generate_signatures
- name: Combine trust files if set
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }},{{ cert_dir }}/{{ cert_file_filename }}"
when: generate_signatures | bool
# iPXE workaround
# http://lists.ipxe.org/pipermail/ipxe-devel/2018-August/006254.html
# apply patch to fix arm64 builds on amd64 builds
- name: Workaround in iPXE for arm
ansible.builtin.shell: sed -i '/WORKAROUND_CFLAGS/d' arch/arm64/Makefile
args:
chdir: "{{ ipxe_source_dir }}/src"
- name: Compile iPXE bootloaders for EFI arm64
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
CROSS_COMPILE=aarch64-linux-gnu- \
ARCH=arm64 \
EMBED={{ bootloader_filename }} \
TRUST={{ trust_files }} \
bin-arm64-efi/ipxe.efi \
bin-arm64-efi/snp.efi \
bin-arm64-efi/snponly.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool == false
- name: Compile iPXE bootloader for EFI arm64 with debug flags
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
CROSS_COMPILE=aarch64-linux-gnu- \
ARCH=arm64 \
DEBUG={{ ipxe_debug_options }} \
EMBED={{ bootloader_filename }} \
TRUST={{ trust_files }} \
bin-arm64-efi/snp.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool
- name: Copy iPXE arm64 EFI builds to http directory
ansible.builtin.copy:
src: "{{ ipxe_source_dir }}/src/{{ item.src }}"
dest: "{{ netbootxyz_root }}/ipxe/{{ item.dest }}"
remote_src: true
with_items:
- {src: "bin-arm64-efi/ipxe.efi", dest: "{{ bootloader_filename }}-arm64.efi"}
- {src: "bin-arm64-efi/snp.efi", dest: "{{ bootloader_filename }}-arm64-snp.efi"}
- {src: "bin-arm64-efi/snponly.efi", dest: "{{ bootloader_filename }}-arm64-snponly.efi"}
================================================
FILE: roles/netbootxyz/tasks/generate_disks_base.yml
================================================
---
- name: Gathering facts
ansible.builtin.setup:
- name: Gather variables for each operating system
ansible.builtin.include_vars: "{{ item }}"
with_first_found:
- "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_version'] | lower }}.yml"
- "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
- "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
- "{{ ansible_facts['distribution'] | lower }}.yml"
- "{{ ansible_facts['os_family'] | lower }}.yml"
- name: Ensure EPEL is enabled
ansible.builtin.dnf:
name: epel-release
state: present
when:
- ansible_facts['distribution'] == "CentOS"
- name: Set var to bootloader of loop
ansible.builtin.set_fact:
bootloader_filename: "{{ bootloader_file }}"
- name: Create iPXE file directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- "{{ netbootxyz_root }}/ipxe"
- "{{ cert_dir }}"
- name: Retrieve latest wimboot
ansible.builtin.get_url:
url: "{{ wimboot_upstream_url }}"
dest: "{{ netbootxyz_root }}/wimboot"
- name: Copy helper apps
ansible.builtin.copy:
src: "{{ item }}"
dest: "{{ netbootxyz_root }}"
with_items:
- memdisk
- name: Install required packages
ansible.builtin.package:
name: "{{ item }}"
state: present
with_items: "{{ netbootxyz_packages }}"
- name: Check out latest iPXE sources
ansible.builtin.git:
repo: "{{ ipxe_repo }}"
dest: "{{ ipxe_source_dir }}"
version: "{{ ipxe_branch }}"
force: true
register: ipxe_git_checkout
- name: Copy iPXE Bootloader template to iPXE source directory
ansible.builtin.template:
src: "disks/{{ bootloader_filename }}.j2"
dest: "{{ ipxe_source_dir }}/src/{{ bootloader_filename }}"
- name: Touch iPXE config local files
ansible.builtin.file:
path: "{{ ipxe_source_dir }}/{{ item }}"
state: touch
with_items:
- src/config/local/umalloc.h
- src/config/local/nap.h
- src/config/local/timer.h
- src/config/local/branding.h
- src/config/local/serial.h
- src/config/local/reboot.h
- src/config/local/sanboot.h
- src/config/local/fault.h
- src/config/local/dhcp.h
- src/config/local/sideband.h
- src/config/local/entropy.h
- src/config/local/crypto.h
- src/config/local/usb.h
- src/config/local/settings.h
- src/config/local/isa.h
- name: Retrieve iPXE CA
ansible.builtin.get_url:
url: "{{ ipxe_ca_url }}"
dest: "{{ cert_dir }}/{{ ipxe_ca_filename }}"
================================================
FILE: roles/netbootxyz/tasks/generate_disks_efi.yml
================================================
---
- name: Copy netboot.xyz local EFI iPXE configs
ansible.builtin.copy:
src: "ipxe/local/{{ item }}"
dest: "{{ ipxe_source_dir }}/src/config/local/{{ item }}"
with_items:
- colour.h
- console.h
- crypto.h
- name: Copy netboot.xyz general.h.efi iPXE config
ansible.builtin.copy:
src: "ipxe/local/general.h.efi"
dest: "{{ ipxe_source_dir }}/src/config/local/general.h"
- name: Set trust file to ipxe ca
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }}"
when: not generate_signatures
- name: Combine trust files if set
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }},{{ cert_dir }}/{{ cert_file_filename }}"
when: generate_signatures | bool
- name: Compile iPXE bootloader for EFI
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
EMBED={{ bootloader_filename }} \
TRUST={{ trust_files }} \
bin-x86_64-efi/ipxe.efi \
bin-x86_64-efi/snp.efi \
bin-x86_64-efi/snponly.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool == false
- name: Compile iPXE bootloader for EFI with debug flags
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
EMBED={{ bootloader_filename }} \
DEBUG={{ ipxe_debug_options }} \
TRUST={{ trust_files }} \
bin-x86_64-efi/ipxe.efi \
bin-x86_64-efi/snp.efi \
bin-x86_64-efi/snponly.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool
- name: Generate iPXE floppy images for EFI
ansible.builtin.shell: |
truncate -s 1440k bin-x86_64-efi/ipxe.efi.dsk
mformat -i bin-x86_64-efi/ipxe.efi.dsk -f 1440 ::
mmd -i bin-x86_64-efi/ipxe.efi.dsk ::EFI
mmd -i bin-x86_64-efi/ipxe.efi.dsk ::EFI/BOOT
cp bin-x86_64-efi/ipxe.efi.dsk bin-x86_64-efi/snp.efi.dsk
mcopy -i bin-x86_64-efi/ipxe.efi.dsk bin-x86_64-efi/ipxe.efi ::EFI/BOOT/BOOTX64.EFI
mcopy -i bin-x86_64-efi/snp.efi.dsk bin-x86_64-efi/snp.efi ::EFI/BOOT/BOOTX64.EFI
args:
chdir: "{{ ipxe_source_dir }}/src"
- name: Copy iPXE EFI builds to http directory
ansible.builtin.copy:
src: "{{ ipxe_source_dir }}/src/{{ item.src }}"
dest: "{{ netbootxyz_root }}/ipxe/{{ item.dest }}"
remote_src: true
with_items:
- {src: "bin-x86_64-efi/ipxe.efi", dest: "{{ bootloader_filename }}.efi"}
- {src: "bin-x86_64-efi/snp.efi", dest: "{{ bootloader_filename }}-snp.efi"}
- {src: "bin-x86_64-efi/snponly.efi", dest: "{{ bootloader_filename }}-snponly.efi"}
- {src: "bin-x86_64-efi/ipxe.efi.dsk", dest: "{{ bootloader_filename }}.efi.dsk"}
- {src: "bin-x86_64-efi/snp.efi.dsk", dest: "{{ bootloader_filename }}-snp.efi.dsk"}
================================================
FILE: roles/netbootxyz/tasks/generate_disks_hybrid.yml
================================================
---
- name: Generate hybrid ISO x86_64 image
ansible.builtin.shell: |
./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.iso \
-s {{ bootloader_filename }} \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.efi \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.lkrn
args:
chdir: "{{ ipxe_source_dir }}/src"
when:
- generate_disks_hybrid | default(false) | bool
- generate_disks_legacy | default(true) | bool
- generate_disks_efi | default(true) | bool
- name: Generate hybrid ISO multiarch image
ansible.builtin.shell: |
./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-multiarch.iso \
-s {{ bootloader_filename }} \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.efi \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.lkrn \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-arm64.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when:
- generate_disks_hybrid | default(false) | bool
- generate_disks_legacy | default(true) | bool
- generate_disks_arm | default(false) | bool
- generate_disks_efi | default(true) | bool
- name: Generate hybrid ISO arm64 image
ansible.builtin.shell: |
./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-arm64.iso \
-s {{ bootloader_filename }} \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-arm64.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when:
- generate_disks_hybrid | default(false) | bool
- generate_disks_arm | default(false) | bool
- name: Generate hybrid USB x86_64 image
ansible.builtin.shell: |
./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.img \
-s {{ bootloader_filename }} \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.efi \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.lkrn
args:
chdir: "{{ ipxe_source_dir }}/src"
when:
- generate_disks_hybrid | default(false) | bool
- generate_disks_legacy | default(true) | bool
- generate_disks_efi | default(true) | bool
- name: Generate hybrid USB multiarch image
ansible.builtin.shell: |
./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-multiarch.img \
-s {{ bootloader_filename }} \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.efi \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}.lkrn \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-arm64.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when:
- generate_disks_hybrid | default(false) | bool
- generate_disks_legacy | default(true) | bool
- generate_disks_arm | default(false) | bool
- generate_disks_efi | default(true) | bool
- name: Generate hybrid USB arm64 image
ansible.builtin.shell: |
./util/genfsimg -o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-arm64.img \
-s {{ bootloader_filename }} \
{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-arm64.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when:
- generate_disks_hybrid | default(false) | bool
- generate_disks_arm | default(false) | bool
================================================
FILE: roles/netbootxyz/tasks/generate_disks_legacy.yml
================================================
---
- name: Copy netboot.xyz local legacy iPXE configs
ansible.builtin.copy:
src: "ipxe/local/{{ item }}"
dest: "{{ ipxe_source_dir }}/src/config/local/{{ item }}"
with_items:
- colour.h
- console.h
- crypto.h
- general.h
- name: Set trust file to ipxe ca
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }}"
when: not generate_signatures
- name: Combine trust args if set
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }},{{ cert_dir }}/{{ cert_file_filename }}"
when: generate_signatures | bool
- name: Compile iPXE bootloader for Legacy BIOS
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
EMBED={{ bootloader_filename }} \
TRUST={{ trust_files }} \
bin/ipxe.dsk \
bin/ipxe.pdsk \
bin/ipxe.lkrn \
bin/ipxe.kpxe \
bin/undionly.kpxe
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool == false
- name: Compile iPXE bootloader for Legacy BIOS with debug flags
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
EMBED={{ bootloader_filename }} \
DEBUG={{ ipxe_debug_options }} \
TRUST={{ trust_files }} \
bin/ipxe.dsk \
bin/ipxe.pdsk \
bin/ipxe.lkrn \
bin/ipxe.kpxe \
bin/undionly.kpxe
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool
- name: Copy iPXE files for Legacy BIOS to http directory
ansible.builtin.copy:
src: "{{ ipxe_source_dir }}/src/bin/ipxe{{ item }}"
dest: "{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}{{ item }}"
remote_src: true
with_items:
- ".pdsk"
- ".dsk"
- ".lkrn"
- ".kpxe"
when: bootloader_filename != "netboot.xyz-metal"
- name: Copy iPXE files for Legacy BIOS to http directory
ansible.builtin.copy:
src: "{{ ipxe_source_dir }}/src/bin/ipxe{{ item }}"
dest: "{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}{{ item }}"
remote_src: true
with_items:
- ".kpxe"
when: bootloader_filename == "netboot.xyz-metal"
- name: Copy undionly.kpxe for Legacy BIOS to http directory
ansible.builtin.copy:
src: "{{ ipxe_source_dir }}/src/bin/undionly.kpxe"
dest: "{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-undionly.kpxe"
remote_src: true
when: bootloader_filename != "netboot.xyz-metal"
================================================
FILE: roles/netbootxyz/tasks/generate_disks_linux.yml
================================================
---
- name: Copy netboot.xyz local legacy iPXE configs
ansible.builtin.copy:
src: "ipxe/local/{{ item }}"
dest: "{{ ipxe_source_dir }}/src/config/local/{{ item }}"
with_items:
- colour.h
- console.h
- crypto.h
- name: Copy netboot.xyz general.h.efi iPXE config
ansible.builtin.copy:
src: "ipxe/local/general.h.efi"
dest: "{{ ipxe_source_dir }}/src/config/local/general.h"
- name: Set trust file to ipxe ca
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }}"
when: not generate_signatures
- name: Combine trust args if set
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }},{{ cert_dir }}/{{ cert_file_filename }}"
when: generate_signatures | bool
- name: Compile iPXE Linux bootloader for Legacy BIOS
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
EMBED={{ bootloader_filename }} \
TRUST={{ trust_files }} \
bin-x86_64-linux/slirp.linux
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool == false
- name: Compile iPXE Linux bootloader for Legacy BIOS with debug flags
ansible.builtin.shell: |
make clean
make -j{{ make_num_jobs }} \
EMBED={{ bootloader_filename }} \
DEBUG={{ ipxe_debug_options }} \
TRUST={{ trust_files }} \
bin-x86_64-linux/slirp.linux
args:
chdir: "{{ ipxe_source_dir }}/src"
when: ipxe_debug_enabled | bool
- name: Copy iPXE linux binary for Legacy BIOS to http directory
ansible.builtin.copy:
src: "{{ ipxe_source_dir }}/src/bin-x86_64-linux/slirp.linux"
dest: "{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-linux.bin"
remote_src: true
when: bootloader_filename != "netboot.xyz-metal"
================================================
FILE: roles/netbootxyz/tasks/generate_disks_rpi.yml
================================================
---
- name: Install required packages
ansible.builtin.package:
name: "{{ item }}"
state: present
with_items: "{{ pipxe_packages }}"
- name: Check out latest pipxe sources
ansible.builtin.git:
repo: "{{ pipxe_repo }}"
dest: "{{ pipxe_source_dir }}"
version: "{{ pipxe_branch }}"
force: true
recursive: true
register: pipxe_git_checkout
- name: Copy iPXE Bootloader template to iPXE source directory
ansible.builtin.template:
src: "disks/{{ bootloader_filename }}.j2"
dest: "{{ pipxe_source_dir }}/ipxe/src/{{ bootloader_filename }}"
- name: Copy netboot.xyz local EFI iPXE configs
ansible.builtin.copy:
src: "ipxe/local/{{ item }}"
dest: "{{ pipxe_source_dir }}/ipxe/src/config/local/{{ item }}"
with_items:
- colour.h
- console.h
- crypto.h
- name: Copy netboot.xyz general.h.efi iPXE config
ansible.builtin.copy:
src: "ipxe/local/general.h.efi"
dest: "{{ pipxe_source_dir }}/ipxe/src/config/local/general.h"
- name: Set trust file to ipxe ca
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }}"
when: not generate_signatures
- name: Combine trust files if set
ansible.builtin.set_fact:
trust_files: "{{ cert_dir }}/{{ ipxe_ca_filename }},{{ cert_dir }}/{{ cert_file_filename }}"
when: generate_signatures | bool
- name: Copy Makefile template into pipxe
ansible.builtin.template:
src: pipxe/Makefile-rpi4.j2
dest: "{{ pipxe_source_dir }}/Makefile"
- name: Compile iPXE bootloader for RPI build
ansible.builtin.shell: |
make -j{{ make_num_jobs }}
args:
chdir: "{{ pipxe_source_dir }}"
- name: Copy iPXE RPI builds to http directory
ansible.builtin.copy:
src: "{{ pipxe_source_dir }}/{{ item.src }}"
dest: "{{ netbootxyz_root }}/ipxe/{{ item.dest }}"
remote_src: true
with_items:
- {src: "sdcard.img", dest: "{{ bootloader_filename }}-rpi4-sdcard.img"}
- {src: "ipxe/src/bin-arm64-efi/snp.efi", dest: "{{ bootloader_filename }}-rpi4-snp.efi"}
================================================
FILE: roles/netbootxyz/tasks/generate_disks_secureboot.yml
================================================
---
- name: Create Secure Boot output directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- "{{ netbootxyz_root }}/ipxe/secureboot-x86_64"
- "{{ netbootxyz_root }}/ipxe/secureboot-arm64"
- name: Download iPXE Secure Boot archive
ansible.builtin.get_url:
url: "{{ ipxe_secureboot_archive_url }}"
dest: "/tmp/ipxeboot.tar.gz"
- name: Extract iPXE Secure Boot archive
ansible.builtin.unarchive:
src: "/tmp/ipxeboot.tar.gz"
dest: "/tmp"
remote_src: true
- name: Copy x86_64 Secure Boot binaries to output directory
ansible.builtin.copy:
src: "/tmp/ipxeboot/x86_64-sb/{{ item }}"
dest: "{{ netbootxyz_root }}/ipxe/secureboot-x86_64/{{ item }}"
remote_src: true
with_items:
- ipxe.efi
- ipxe-shim.efi
- shimx64.efi
- snponly.efi
- snponly-shim.efi
- name: Copy ARM64 Secure Boot binaries to output directory
ansible.builtin.copy:
src: "/tmp/ipxeboot/arm64-sb/{{ item }}"
dest: "{{ netbootxyz_root }}/ipxe/secureboot-arm64/{{ item }}"
remote_src: true
with_items:
- ipxe.efi
- ipxe-shim.efi
- shimaa64.efi
- snponly.efi
- snponly-shim.efi
when: generate_disks_arm | default(false) | bool
- name: Template autoexec.ipxe for x86_64 Secure Boot
ansible.builtin.template:
src: "disks/autoexec.ipxe.j2"
dest: "{{ netbootxyz_root }}/ipxe/secureboot-x86_64/autoexec.ipxe"
- name: Template autoexec.ipxe for ARM64 Secure Boot
ansible.builtin.template:
src: "disks/autoexec.ipxe.j2"
dest: "{{ netbootxyz_root }}/ipxe/secureboot-arm64/autoexec.ipxe"
when: generate_disks_arm | default(false) | bool
- name: Generate Secure Boot x86_64 ISO image
ansible.builtin.shell: |
./util/genfsimg \
-o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-sb.iso \
-s {{ netbootxyz_root }}/ipxe/secureboot-x86_64/autoexec.ipxe \
-e /tmp/ipxeboot/x86_64-sb/shimx64.efi \
/tmp/ipxeboot/x86_64-sb/ipxe.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
- name: Generate Secure Boot x86_64 USB image
ansible.builtin.shell: |
./util/genfsimg \
-o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-sb.img \
-s {{ netbootxyz_root }}/ipxe/secureboot-x86_64/autoexec.ipxe \
-e /tmp/ipxeboot/x86_64-sb/shimx64.efi \
/tmp/ipxeboot/x86_64-sb/ipxe.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
- name: Generate Secure Boot ARM64 ISO image
ansible.builtin.shell: |
./util/genfsimg \
-o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-sb-arm64.iso \
-s {{ netbootxyz_root }}/ipxe/secureboot-arm64/autoexec.ipxe \
-e /tmp/ipxeboot/arm64-sb/shimaa64.efi \
/tmp/ipxeboot/arm64-sb/ipxe.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when: generate_disks_arm | default(false) | bool
- name: Generate Secure Boot ARM64 USB image
ansible.builtin.shell: |
./util/genfsimg \
-o {{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-sb-arm64.img \
-s {{ netbootxyz_root }}/ipxe/secureboot-arm64/autoexec.ipxe \
-e /tmp/ipxeboot/arm64-sb/shimaa64.efi \
/tmp/ipxeboot/arm64-sb/ipxe.efi
args:
chdir: "{{ ipxe_source_dir }}/src"
when: generate_disks_arm | default(false) | bool
- name: Copy autoexec.ipxe to ipxe root as standalone release asset
ansible.builtin.copy:
src: "{{ netbootxyz_root }}/ipxe/secureboot-x86_64/autoexec.ipxe"
dest: "{{ netbootxyz_root }}/ipxe/autoexec.ipxe"
remote_src: true
- name: Remove Secure Boot directories after ISO/USB generation
ansible.builtin.file:
path: "{{ item }}"
state: absent
with_items:
- "{{ netbootxyz_root }}/ipxe/secureboot-x86_64"
- "{{ netbootxyz_root }}/ipxe/secureboot-arm64"
- name: Clean up Secure Boot archive
ansible.builtin.file:
path: "{{ item }}"
state: absent
with_items:
- "/tmp/ipxeboot.tar.gz"
- "/tmp/ipxeboot"
================================================
FILE: roles/netbootxyz/tasks/generate_menus.yml
================================================
---
- name: Combine overrides with release defaults
ansible.builtin.set_fact:
_releases: "{{ releases | combine(release_overrides, recursive=True) }}"
when: release_overrides is defined
- name: Set releases with user overrides
ansible.builtin.set_fact:
releases: "{{ _releases }}"
when: release_overrides is defined
# PC BIOS utilities
- name: Combine overrides with utilitiespcbios64 defaults
ansible.builtin.set_fact:
_utilitiespcbios64: "{{ utilitiespcbios64 | combine(utilitiespcbios64_overrides, recursive=True) }}"
when: utilitiespcbios64_overrides is defined
- name: Set utilitypcbios64 with user overrides
ansible.builtin.set_fact:
utilitiespcbios64: "{{ _utilitiespcbios64 }}"
when: utilitiespcbios64_overrides is defined
- name: Combine overrides with utilitiespcbios32 defaults
ansible.builtin.set_fact:
_utilitiespcbios32: "{{ utilitiespcbios32 | combine(utilitiespcbios32_overrides, recursive=True) }}"
when: utilitiespcbios32_overrides is defined
- name: Set utilitypcbios32 with user overrides
ansible.builtin.set_fact:
utilitiespcbios32: "{{ _utilitiespcbios32 }}"
when: utilitiespcbios32_overrides is defined
# EFI utilities
- name: Combine overrides with utilitiesefi defaults
ansible.builtin.set_fact:
_utilitiesefi: "{{ utilitiesefi | combine(utilitiesefi_overrides, recursive=True) }}"
when: utilitiesefi_overrides is defined
- name: Set utilityefi with user overrides
ansible.builtin.set_fact:
utilitiesefi: "{{ _utilitiesefi }}"
when: utilitiesefi_overrides is defined
- name: Generate directories
ansible.builtin.file:
path: "{{ netbootxyz_root }}"
state: directory
- name: Set menu version
ansible.builtin.set_fact:
upstream_version: "{{ boot_version }}"
when:
- generate_version_file | bool
- name: Generate version.ipxe for upstream
ansible.builtin.template:
src: "version.ipxe.j2"
dest: "{{ netbootxyz_root }}/version.ipxe"
when:
- generate_version_file | bool
- name: Generate netboot.xyz source files templates
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ netbootxyz_root }}/{{ item.path | regex_replace('.j2', '') }}"
with_community.general.filetree: "{{ 'templates/menu/' }}"
when: item.state == "file"
- name: Generate local-vars.ipxe if enabled
ansible.builtin.template:
src: "local-vars.ipxe.j2"
dest: "{{ netbootxyz_root }}/local-vars.ipxe"
when:
- generate_local_vars | bool
- name: Retrieve pciids.ipxe
ansible.builtin.get_url:
url: "{{ pciids_url }}"
dest: "{{ netbootxyz_root }}/pciids.ipxe"
================================================
FILE: roles/netbootxyz/tasks/generate_menus_custom.yml
================================================
---
- name: Generate directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- "{{ custom_templates_dir }}"
- "{{ netbootxyz_root }}/custom"
- name: Generate custom user menu templates
ansible.builtin.template:
src: "{{ item.src }}"
dest: "{{ netbootxyz_root }}/custom/{{ item.path | regex_replace('.j2', '') }}"
with_community.general.filetree: "{{ custom_templates_dir }}"
when: item.state == "file"
================================================
FILE: roles/netbootxyz/tasks/generate_signatures.yml
================================================
---
- name: Gather list of source files
ansible.builtin.command: ls {{ netbootxyz_root }}
register: source_files
- name: Create directories for signatures
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- "{{ sigs_dir }}"
- name: Generate signatures for source files
ansible.builtin.shell: |
openssl cms -sign -binary -noattr -in {{ netbootxyz_root }}/{{ item }} \
-signer {{ codesign_cert_filename }} -inkey {{ codesign_key_filename }} -certfile {{ cert_file_filename }} -outform DER \
-out {{ sigs_dir }}/{{ item }}.sig
args:
chdir: "{{ cert_dir }}"
with_items:
- "{{ source_files.stdout_lines }}"
================================================
FILE: roles/netbootxyz/tasks/main.yml
================================================
---
- name: Print Bootloader Disks to Build
ansible.builtin.debug:
var: bootloader_disks
- name: Generate menus
ansible.builtin.include_tasks: generate_menus.yml
when:
- generate_menus | default(true) | bool
- name: Generate custom menus
ansible.builtin.include_tasks: generate_menus_custom.yml
when:
- custom_generate_menus | default(false) | bool
- name: Generate iPXE bootloaders
ansible.builtin.include_tasks: generate_disks.yml
with_items:
- "{{ bootloader_disks }}"
loop_control:
loop_var: bootloader_file
when:
- generate_disks | default(true) | bool
- name: Generate checksums
ansible.builtin.include_tasks: generate_checksums.yml
when:
- generate_checksums | default(true) | bool
- name: Generate signatures
ansible.builtin.include_tasks: generate_signatures.yml
when:
- generate_signatures | default(false) | bool
================================================
FILE: roles/netbootxyz/templates/checksums.txt.j2
================================================
# {{ site_name }} bootloaders generated at {{ current_date.stdout }}
# iPXE Commit: {{ ipxe_repo }}/commit/{{ ipxe_git_checkout.after }}
{% for item in netboot_disks_stat.results %}
{{ item.stdout }}
{% endfor %}
================================================
FILE: roles/netbootxyz/templates/disks/autoexec.ipxe.j2
================================================
#!ipxe
#
# {{ site_name }} - Secure Boot autoexec.ipxe
#
# This script is loaded automatically by iPXE v2.0.0+ Secure Boot
# binaries from the same directory. It replaces the embedded script
# used in self-compiled netboot.xyz bootloaders.
#
set esc:hex 1b
set bold ${esc:string}[1m
set boldoff ${esc:string}[22m
set fg_gre ${esc:string}[32m
set fg_cya ${esc:string}[36m
set fg_whi ${esc:string}[37m
set HTTPS_ERR HTTPS appears to have failed... attempting HTTP
set HTTP_ERR HTTP has failed, localbooting...
set site_name {{ site_name }}
set boot_domain {{ boot_domain }}
set ipxe_version ${version}
set version {{ boot_version }}
set conn_type https
:start
echo ${bold}${fg_gre}${site_name} - ${fg_whi}v${version} (Secure Boot)${boldoff}
iseq ${site_name} netboot.xyz || echo ${bold}${fg_whi}Powered by ${fg_gre}netboot.xyz${fg_whi}${boldoff}
prompt --key m --timeout 4000 Hit the ${bold}m${boldoff} key to open failsafe menu... && goto failsafe || goto dhcp
:dhcp
echo
dhcp || goto netconfig
goto menu
:failsafe
menu ${boot_domain} Failsafe Menu
item localboot Boot to local drive
item netconfig Manual network configuration
item retry Retry boot
item debug iPXE Debug Shell
item reboot Reboot System
choose failsafe_choice || exit
goto ${failsafe_choice}
:netconfig
echo Network Configuration:
echo Available interfaces...
ifstat
imgfree
echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
isset ${net} || set net 0
echo -n IP: && read net${net}/ip
echo -n Subnet mask: && read net${net}/netmask
echo -n Gateway: && read net${net}/gateway
echo -n DNS: && read dns
ifopen net${net}
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:menu
{% if bootloader_https_enabled | bool %}
:menu_https
set conn_type https
goto menu_start
{% endif %}
{% if bootloader_http_enabled | bool %}
:menu_http
set conn_type http
goto menu_start
{% endif %}
:menu_start
isset ${netX/dns6} && goto menu_v6 || goto menu_v4
:menu_v6
isset ${netX/dns6_bak} && set netX/dns6 ${netX/dns6_bak} ||
set netX/dns6_bak ${netX/dns6}
echo Attempting ${conn_type} boot over IPv6...
chain --autofree ${conn_type}://${boot_domain}/menu.ipxe || echo ${conn_type} IPv6 failed... attempting IPv4...
clear netX/dns6
:menu_v4
echo Attempting ${conn_type} boot over IPv4...
chain --autofree ${conn_type}://${boot_domain}/menu.ipxe || echo ${conn_type} IPv4 failed...
iseq ${conn_type} https && goto menu_http || goto localboot
:localboot
exit
:retry
goto start
:reboot
reboot
goto start
:debug
echo Type "exit" to return to menu
shell
goto failsafe
================================================
FILE: roles/netbootxyz/templates/disks/netboot.xyz-gce.j2
================================================
#!ipxe
set esc:hex 1b
set bold ${esc:string}[1m
set boldoff ${esc:string}[22m
set fg_gre ${esc:string}[32m
set fg_cya ${esc:string}[36m
set fg_whi ${esc:string}[37m
set HTTPS_ERR HTTPS appears to have failed... attempting HTTP
set HTTP_ERR HTTP has failed, localbooting...
set ipxe_version ${version}
set version {{ boot_version }}
set ipxe_cloud_config gce
:start
echo ${bold}${fg_gre}netboot.xyz ${fg_whi}v${version} for ${fg_cya}Google Compute Engine${boldoff}
prompt --key m --timeout 4000 Hit the ${bold}m${boldoff} key to open failsafe menu... && goto failsafe || goto dhcp
:dhcp
echo
dhcp || goto netconfig
goto menu
:failsafe
menu netboot.xyz Failsafe Menu
item localboot Boot to local drive
item netconfig Manual network configuration
item vlan Manual VLAN configuration
item retry Retry boot
item debug iPXE Debug Shell
item reboot Reboot System
choose failsafe_choice || exit
goto ${failsafe_choice}
:netconfig
echo Network Configuration:
echo Available interfaces...
ifstat
imgfree
echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
isset ${net} || set net 0
echo -n IP: && read net${net}/ip
echo -n Subnet mask: && read net${net}/netmask
echo -n Gateway: && read net${net}/gateway
echo -n DNS: && read dns
ifopen net${net}
echo Attempting chainload of netboot.xyz...
goto menu || goto failsafe
:vlan
echo VLAN Configuration:
echo Available interfaces...
ifstat
imgfree
echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
isset ${net} || set net 0
echo -n Set VLAN 802.1Q tag [0 to 4094]: ${} && read vlan
vcreate --tag ${vlan} net${net}
ifconf --configurator dhcp net${net}-${vlan} || echo DHCP failed trying manual && goto netvlan
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:netvlan
echo -n IP: && read net${net}-${vlan}/ip
echo -n Subnet mask: && read net${net}-${vlan}/netmask
echo -n Gateway: && read net${net}-${vlan}/gateway
echo -n DNS: && read dns
ifopen net${net}-${vlan}
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:menu
set conn_type https
chain --autofree https://boot.netboot.xyz/menu.ipxe || echo ${HTTPS_ERR}
sleep 5
set conn_type http
chain --autofree http://boot.netboot.xyz/menu.ipxe || echo ${HTTP_ERR}
goto localboot
:localboot
exit
:retry
goto start
:reboot
reboot
goto start
:debug
echo Type "exit" to return to menu
shell
goto failsafe
================================================
FILE: roles/netbootxyz/templates/disks/netboot.xyz-metal.j2
================================================
#!ipxe
set esc:hex 1b
set bold ${esc:string}[1m
set boldoff ${esc:string}[22m
set fg_gre ${esc:string}[32m
set fg_red ${esc:string}[31m
set fg_cya ${esc:string}[36m
set fg_whi ${esc:string}[37m
set HTTPS_ERR HTTPS appears to have failed... attempting HTTP
set HTTP_ERR HTTP has failed, localbooting...
set ipxe_version ${version}
set version {{ boot_version }}
set ipxe_cloud_config metal
:start
echo ${bold}${fg_gre}netboot.xyz ${fg_whi}v${version} for ${fg_red}metal.equinix.com${fg_whi}${boldoff}
prompt --key m --timeout 4000 Hit the ${bold}m${boldoff} key to open failsafe menu... && goto failsafe || goto dhcp
:dhcp
echo
dhcp || goto netconfig
goto menu
:failsafe
menu netboot.xyz Failsafe Menu
item localboot Boot to local drive
item netconfig Manual network configuration
item vlan Manual VLAN configuration
item retry Retry boot
item debug iPXE Debug Shell
item reboot Reboot System
choose failsafe_choice || exit
goto ${failsafe_choice}
:netconfig
echo Network Configuration:
echo Available interfaces...
ifstat
imgfree
echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
isset ${net} || set net 0
echo -n IP: && read net${net}/ip
echo -n Subnet mask: && read net${net}/netmask
echo -n Gateway: && read net${net}/gateway
echo -n DNS: && read dns
ifopen net${net}
echo Attempting chainload of netboot.xyz...
goto menu || goto failsafe
:vlan
echo VLAN Configuration:
echo Available interfaces...
ifstat
imgfree
echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
isset ${net} || set net 0
echo -n Set VLAN 802.1Q tag [0 to 4094]: ${} && read vlan
vcreate --tag ${vlan} net${net}
ifconf --configurator dhcp net${net}-${vlan} || echo DHCP failed trying manual && goto netvlan
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:netvlan
echo -n IP: && read net${net}-${vlan}/ip
echo -n Subnet mask: && read net${net}-${vlan}/netmask
echo -n Gateway: && read net${net}-${vlan}/gateway
echo -n DNS: && read dns
ifopen net${net}-${vlan}
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:menu
set conn_type https
chain --autofree https://boot.netboot.xyz/menu.ipxe || echo ${HTTPS_ERR}
sleep 5
set conn_type http
chain --autofree http://boot.netboot.xyz/menu.ipxe || echo ${HTTP_ERR}
goto localboot
:localboot
exit
:retry
goto start
:reboot
reboot
goto start
:debug
echo Type "exit" to return to menu
shell
goto failsafe
================================================
FILE: roles/netbootxyz/templates/disks/netboot.xyz.j2
================================================
#!ipxe
set esc:hex 1b
set bold ${esc:string}[1m
set boldoff ${esc:string}[22m
set fg_gre ${esc:string}[32m
set fg_cya ${esc:string}[36m
set fg_whi ${esc:string}[37m
set VARS_ERR Local vars file not found... attempting TFTP boot...
set TFTP_ERR Local TFTP failed... attempting remote HTTPS
set V6_ERR IPv6 appears to have failed... attempting IPv4...
set HTTPS_ERR HTTPS appears to have failed... attempting HTTP
set HTTP_ERR HTTP has failed, localbooting...
set site_name {{ site_name }}
set boot_domain {{ boot_domain }}
set ipxe_version ${version}
set version {{ boot_version }}
set conn_type https
set tftp-root-path /
:start
echo ${bold}${fg_gre}${site_name} - ${fg_whi}v${version}${boldoff}
iseq ${site_name} netboot.xyz || echo ${bold}${fg_whi}Powered by ${fg_gre}netboot.xyz${fg_whi}${boldoff}
prompt --key m --timeout 4000 Hit the ${bold}m${boldoff} key to open failsafe menu... && goto failsafe || goto dhcp
:dhcp
echo
dhcp || goto netconfig
isset ${next-server} && isset ${proxydhcp/next-server} && goto choose-tftp || set tftp-server ${next-server} && goto load-custom-ipxe
:choose-tftp
# Load "proxy settings" from root server
chain tftp://${next-server}/local-vars.ipxe || echo ${VARS_ERR}
# Check if the proxy-dhcp-vars script has made any usable command about how to progress with a next-server and a proxy-next-server being set
isset ${use_proxydhcp_settings} && iseq ${use_proxydhcp_settings} true && goto set-next-server ||
prompt --key p --timeout 4000 DHCP proxy detected, press ${bold}p${boldoff} to boot from ${proxydhcp/next-server}... && set use_proxydhcp_settings true || set use_proxydhcp_settings false
goto set-next-server
:set-next-server
iseq ${use_proxydhcp_settings} true && set tftp-server ${proxydhcp/next-server} || set tftp-server ${next-server}
goto load-custom-ipxe
:load-custom-ipxe
isset ${tftp-server} && iseq ${filename} {{ bootloader_filename }}.kpxe && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} {{ bootloader_filename }}-undionly.kpxe && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} {{ bootloader_filename }}.efi && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} {{ bootloader_filename }}-snp.efi && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} {{ bootloader_filename }}-snponly.efi && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} {{ bootloader_filename }}-arm64.efi && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} ${tftp-root-path}{{ bootloader_filename }}.kpxe && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} ${tftp-root-path}{{ bootloader_filename }}-undionly.kpxe && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} ${tftp-root-path}{{ bootloader_filename }}.efi && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} ${tftp-root-path}{{ bootloader_filename }}-snp.efi && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} ${tftp-root-path}{{ bootloader_filename }}-snponly.efi && goto tftpmenu ||
isset ${tftp-server} && iseq ${filename} ${tftp-root-path}{{ bootloader_filename }}-arm64.efi && goto tftpmenu ||
goto menu
:failsafe
menu ${boot_domain} Failsafe Menu
item localboot Boot to local drive
item netconfig Manual network configuration
item vlan Manual VLAN configuration
item retry Retry boot
item debug iPXE Debug Shell
item reboot Reboot System
choose failsafe_choice || exit
goto ${failsafe_choice}
:netconfig
echo Network Configuration:
echo Available interfaces...
ifstat
imgfree
echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
isset ${net} || set net 0
echo -n IP: && read net${net}/ip
echo -n Subnet mask: && read net${net}/netmask
echo -n Gateway: && read net${net}/gateway
echo -n DNS: && read dns
ifopen net${net}
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:vlan
echo VLAN Configuration:
echo Available interfaces...
ifstat
imgfree
echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net
isset ${net} || set net 0
echo -n Set VLAN 802.1Q tag [0 to 4094]: ${} && read vlan
vcreate --tag ${vlan} net${net}
ifconf --configurator dhcp net${net}-${vlan} || echo DHCP failed trying manual && goto netvlan
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:netvlan
echo -n IP: && read net${net}-${vlan}/ip
echo -n Subnet mask: && read net${net}-${vlan}/netmask
echo -n Gateway: && read net${net}-${vlan}/gateway
echo -n DNS: && read dns
ifopen net${net}-${vlan}
echo Attempting chainload of ${boot_domain}...
goto menu || goto failsafe
:tftpmenu
chain tftp://${tftp-server}/local-vars.ipxe || echo ${VARS_ERR}
isset ${hostname} && chain --autofree tftp://${tftp-server}/HOSTNAME-${hostname}.ipxe || echo Custom boot by Hostname not found trying MAC...
chain --autofree tftp://${tftp-server}/MAC-${mac:hexraw}.ipxe || echo Custom boot by MAC (hexraw) not found, attempting by MAC (hexhyp)...
chain --autofree tftp://${tftp-server}/MAC-${mac:hexhyp}.ipxe || echo Custom boot by MAC (hexhyp) not found, booting default...
chain --autofree tftp://${tftp-server}/menu.ipxe || echo ${TFTP_ERR} && goto menu
:menu
{% if bootloader_https_enabled | bool %}
:menu_https
set conn_type https
goto menu_start
{% endif %}
{% if bootloader_http_enabled | bool %}
:menu_http
set conn_type http
goto menu_start
{% endif %}
:menu_start
isset ${netX/dns6} && goto menu_v6 || goto menu_v4
:menu_v6
isset ${netX/dns6_bak} && set netX/dns6 ${netX/dns6_bak} ||
set netX/dns6_bak ${netX/dns6}
echo Attempting ${conn_type} boot over IPv6...
chain --autofree ${conn_type}://${boot_domain}/menu.ipxe || echo ${conn_type} IPv6 failed... attempting IPv4...
clear netX/dns6
:menu_v4
echo Attempting ${conn_type} boot over IPv4...
chain --autofree ${conn_type}://${boot_domain}/menu.ipxe || echo ${conn_type} IPv4 failed...
iseq ${conn_type} https && goto menu_http || goto localboot
:localboot
exit
:retry
goto start
:reboot
reboot
goto start
:debug
echo Type "exit" to return to menu
shell
goto failsafe
================================================
FILE: roles/netbootxyz/templates/index.html.j2
================================================
#!ipxe
#### {{ boot_domain }} initial loader ####
#### see https://netboot.xyz for more information ####
{% if bootloader_https_enabled | bool %}
set conn_type https
chain --autofree https://{{ boot_domain }}/menu.ipxe || echo HTTPS failed... attempting HTTP...
{% endif %}
{% if bootloader_http_enabled | bool %}
set conn_type http
chain --autofree http://{{ boot_domain }}/menu.ipxe || echo HTTP failed, localbooting...
{% endif %}
exit
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{ site_name }} BootLoaders - Powered by netboot.xyz</title>
<meta name='description' content='Download links for available {{ site_name }} bootloaders.'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
table, th, td {
padding: 5px;
border: 1px solid black;
}
</style>
</head>
<body>
<div style="font-family: monospace, fixed; font-weight: bold;">
{% if index_title.stdout is defined %}
{{ index_title.stdout }}
{% else %}
<h1>{{ site_name }}</h1>
{% endif %}
<p>
Version: {{ boot_version }}<br>
Powered by <a href=https://netboot.xyz>netboot.xyz</a>
</p>
{% if generate_disks_hybrid == true %}
<p>x86_64 Legacy and EFI Combined iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.hybrid %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
<p>Multi-arch (x86_64 and arm64) Legacy and EFI Combined iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.multiarch %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if generate_disks_legacy == true %}
<p>x86_64 Legacy (PCBIOS) iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.legacy %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if generate_disks_efi == true %}
<p>x86_64 UEFI iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.uefi %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if generate_disks_arm == true %}
<p>ARM64 UEFI iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.arm %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if generate_disks_secureboot == true %}
<p>x86_64 UEFI Secure Boot iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.secureboot_x86_64 %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
{% if generate_disks_arm == true %}
<p>ARM64 UEFI Secure Boot iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.secureboot_arm64 %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
{% endif %}
{% endif %}
{% if generate_disks_rpi == true %}
<p>Raspberry Pi iPXE Bootloaders</p>
<table style="width:100%">
<!-- table header -->
<tr>
<th style="width:10%;"> Type </th>
<th style="width:20%;"> Bootloader </th>
<th style="width:70%;"> Description </th>
</tr>
<!-- table rows -->
{% for item in bootloaders.rpi %}
<tr>
<td> {{ item.type }} </td>
<td> <a href="ipxe/{{ bootloader_filename }}{{ item.output_bin }}">{{ bootloader_filename }}{{ item.output_bin }}</a> </td>
<td> {{ item.desc }} </td>
</tr>
{% endfor %}
</table>
{% endif %}
<p>Checksums<p>
<a href="ipxe/{{ site_name }}-sha256-checksums.txt">SHA256 checksums</a>
</div>
</body>
</html>
================================================
FILE: roles/netbootxyz/templates/local-vars.ipxe.j2
================================================
#!ipxe
### used for adding local variables before loading the menu
### set to enable enable github custom menu
#set github_user my_github_username
# If a DHCP proxy server is found and this variable is set to true, the tftp server provided by the DHCP proxy will be used instead of the tftp server provided by the root DHCP
# Please note that this variable is always read from the local-vars.ipxe onb the tftp server the root DHCP provided
# If the variable isn't present at runtime, the user will be queried to press a key to boot from the proxy DHCP prtovided ftfp server
#set use_proxydhcp_settings true
### Media Locations for Licensed Distros
#set rhel_base_url http://my_rhel_mirror/rhel/
#set win_base_url http://my_windows_mirror/windows/
### Sets the local live endpoint for the users local installation
#set live_endpoint http://my_ip_address:8080
### Sets the default boot timeout
#set boot_timeout 300000
================================================
FILE: roles/netbootxyz/templates/menu/4mlinux.ipxe.j2
================================================
#!ipxe
goto ${menu} ||
:live_menu
set os 4MLinux
menu ${os} - Current Arch [ ${arch} ]
item --gap ${os} Versions
{% for key, value in endpoints.items() | sort %}
{% if value.os == "4mlinux" %}
item {{ value.version }}-{{ value.flavor }} ${space} ${os} {{ value.version }} {{ value.flavor }}
{% endif %}
{% endfor %}
choose version || goto exit
goto ${version}
{% for key, value in endpoints.items() | sort %}
{% if value.os == "4mlinux" %}
:{{ value.version }}-{{ value.flavor }}
set url ${live_endpoint}{{ value.path }}
goto boot
{% endif %}
{% endfor %}
:boot
imgfree
kernel ${url}vmlinuz root=/dev/ram0 vga=normal {{ kernel_params }}
initrd ${url}initrd
boot
:live_exit
clear menu
exit 0
================================================
FILE: roles/netbootxyz/templates/menu/about.ipxe.j2
================================================
#!ipxe
set esc:hex 1b
set bold ${esc:string}[1m
set ital ${esc:string}[3m
set under ${esc:string}[4m
set boldoff ${esc:string}[22m
set italoff ${esc:string}[23m
set underoff ${esc:string}[24m
set fs_bla ${esc:string}[30m
set fg_red ${esc:string}[31m
set fg_gre ${esc:string}[32m
set fg_yel ${esc:string}[33m
set fg_blu ${esc:string}[34m
set fg_mag ${esc:string}[35m
set fg_cya ${esc:string}[36m
set fg_whi ${esc:string}[37m
:netabout
menu ${fg_cya}${bold}About netboot.xyz ${fg_whi}(v${version})
item about
item about ${fg_gre}${bold}Thanks for using netboot.xyz! We'd love to hear your feedback.
item about
item --gap -- ${fg_whi}${bold}--- Community --------------------------------------------------------------
item about ${fg_cya}${bold}X (Twitter): ${fg_whi}${boldoff}@netbootxyz
item about ${fg_mag}${bold}Discord: ${fg_whi}${boldoff}https://discord.gg/An6PA2a
item about ${fg_cya}${bold}GitHub Repo: ${fg_whi}${boldoff}https://github.com/netbootxyz/netboot.xyz
item about
item --gap -- ${fg_whi}${bold}--- Support the Project ----------------------------------------------------
item about ${fg_gre}${bold}Open Collective: ${fg_whi}${boldoff}https://opencollective.com/netbootxyz
item about ${fg_gre}${bold}Github Sponsors: ${fg_whi}${boldoff}https://github.com/sponsors/netbootxyz
item about ${fg_yel}${bold}Official Store: ${fg_whi}${boldoff}https://store.netboot.xyz
isset ${upstream_version} && goto display_version || goto skip_version
:display_version
item about
iseq ${version} ${upstream_version} || item about ${fg_yel}${bold}>>> Update available: ${fg_whi}${boldoff}${upstream_version}
:skip_version
item --gap -- ${fg_whi}${bold}-------------------------------------------------------------------------------
item exit ${fg_cya}${bold}<-- Back to main menu
choose selected || goto exit
goto ${selected}
:about
clear menu
goto netabout
:exit
clear menu
exit
================================================
FILE: roles/netbootxyz/templates/menu/almalinux.ipxe.j2
================================================
#!ipxe
# AlmaLinux Operating System
# https://almalinux.org/
isset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::${gateway}:${netmask}:::none nameserver=${dns}
set ipparam BOOTIF=${netX/mac} ${ipparam}
goto ${menu} ||
:almalinux
clear osversion
set os {{ releases.almalinux.name }}
set os_arch ${arch}
iseq ${os_arch} x86_64 && set os_arch x86_64 ||
iseq ${os_arch} arm64 && set os_arch aarch64 ||
menu ${os} - ${os_arch}
{% for item in releases.almalinux.versions %}
item {{ item.code_name }} ${space} ${os} {{ item.name }}
{% endfor %}
isset ${osversion} || choose osversion || goto linux_menu
echo ${cls}
set dir ${almalinux_base_dir}/${osversion}/BaseOS/${os_arch}/os
set repo ${almalinux_mirror}/${dir}
goto boottype
:boottype
set ova ${os} ${osversion}
menu ${os} ${os_arch} boot type
item graphical ${ova} graphical installer
item text ${ova} text based installer
item rescue ${ova} rescue
item kickstart ${ova} set kickstart url [ ${ks_url} ]
isset ${bt} || choose bt || goto almalinux
echo ${cls}
iseq ${bt} text && goto text ||
iseq ${bt} rescue && goto rescue ||
iseq ${bt} kickstart && goto kickstart ||
iseq ${bt} kickstart_device && goto kickstart_device ||
goto bootos_images
:graphical
set install_mode inst.graphical ||
goto bootos_images
:text
set install_mode inst.text ||
goto bootos_images
:rescue
set params inst.rescue ||
goto bootos_images
:kickstart
echo -n Specify kickstart URL for ${os} ${osversion}: && read ks_url
set params inst.ks=${ks_url} ||
clear bt
goto boottype
:bootos_images
imgfree
kernel ${almalinux_mirror}/${dir}/images/pxeboot/vmlinuz inst.repo=${repo} ${install_mode} ${params} ${ipparam} {{ kernel_params }}
initrd ${almalinux_mirror}/${dir}/images/pxeboot/initrd.img
echo
echo MD5sums:
md5sum vmlinuz initrd.img
boot
goto linux_menu
:linux_menu
clear menu
exit 0
================================================
FILE: roles/netbootxyz/templates/menu/alpinelinux.ipxe.j2
================================================
#!ipxe
# Alpine Linux
# https://alpinelinux.org
isset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::${gateway}:${netmask}::::${dns}
goto ${menu}
:alpinelinux
clear alpine_version
set os {{ releases.alpinelinux.name }}
set os_arch ${arch}
iseq ${os_arch} x86_64 && set os_arch x86_64 ||
iseq ${os_arch} i386 && set os_arch x86 ||
iseq ${os_arch} arm64 && set os_arch aarch64 ||
menu ${os} - ${os_arch}
item --gap Releases
{% for item in releases.alpinelinux.versions %}
item {{ item.code_name }} ${space} ${os} {{ item.name }}
{% endfor %}
choose alpine_version || goto alpine_exit
goto boot
:boot
set base-url ${alpinelinux_mirror}
set dir ${alpinelinux_base_dir}/${alpine_version}/releases/${os_arch}/netboot
set repo-url ${alpinelinux_mirror}/${alpinelinux_base_dir}/${alpine_version}/main
imgfree
kernel ${base-url}/${dir}/vmlinuz-lts ${ipparam} alpine_repo=${repo-url} modules=loop,squashfs modloop=${base-url}/${dir}/modloop-lts quiet nomodeset {{ kernel_params }}
initrd ${base-url}/${dir}/initramfs-lts
echo
echo MD5sums:
md5sum vmlinuz-lts initramfs-lts
boot
:alpine_exit
clear menu
exit 0
================================================
FILE: roles/netbootxyz/templates/menu/arch
gitextract_zt7mag3n/ ├── .ansible-lint ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ └── workflows/ │ ├── claude.yml │ ├── development.yml │ ├── pull-requests.yml │ ├── release-candidate.yml │ ├── release.yml │ └── rolling.yml ├── AGENTS.md ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── README.md ├── docker-build-root/ │ └── dumper.sh ├── endpoints.yml ├── etc/ │ └── netbootxyz/ │ └── custom/ │ ├── README.md │ └── custom.ipxe.j2 ├── renovate.json ├── roles/ │ └── netbootxyz/ │ ├── README.md │ ├── defaults/ │ │ └── main.yml │ ├── files/ │ │ ├── ipxe/ │ │ │ └── local/ │ │ │ ├── colour.h │ │ │ ├── console.h │ │ │ ├── crypto.h │ │ │ ├── general.h │ │ │ └── general.h.efi │ │ └── memdisk │ ├── meta/ │ │ └── main.yml │ ├── tasks/ │ │ ├── generate_checksums.yml │ │ ├── generate_disks.yml │ │ ├── generate_disks_arm.yml │ │ ├── generate_disks_base.yml │ │ ├── generate_disks_efi.yml │ │ ├── generate_disks_hybrid.yml │ │ ├── generate_disks_legacy.yml │ │ ├── generate_disks_linux.yml │ │ ├── generate_disks_rpi.yml │ │ ├── generate_disks_secureboot.yml │ │ ├── generate_menus.yml │ │ ├── generate_menus_custom.yml │ │ ├── generate_signatures.yml │ │ └── main.yml │ ├── templates/ │ │ ├── checksums.txt.j2 │ │ ├── disks/ │ │ │ ├── autoexec.ipxe.j2 │ │ │ ├── netboot.xyz-gce.j2 │ │ │ ├── netboot.xyz-metal.j2 │ │ │ └── netboot.xyz.j2 │ │ ├── index.html.j2 │ │ ├── local-vars.ipxe.j2 │ │ ├── menu/ │ │ │ ├── 4mlinux.ipxe.j2 │ │ │ ├── about.ipxe.j2 │ │ │ ├── almalinux.ipxe.j2 │ │ │ ├── alpinelinux.ipxe.j2 │ │ │ ├── archlinux.ipxe.j2 │ │ │ ├── blackarch.ipxe.j2 │ │ │ ├── boot.cfg.j2 │ │ │ ├── bsd.ipxe.j2 │ │ │ ├── centos.ipxe.j2 │ │ │ ├── clonezilla.ipxe.j2 │ │ │ ├── coreos.ipxe.j2 │ │ │ ├── dban.ipxe.j2 │ │ │ ├── debian.ipxe.j2 │ │ │ ├── devuan.ipxe.j2 │ │ │ ├── endeavouros.ipxe.j2 │ │ │ ├── fedora.ipxe.j2 │ │ │ ├── flatcar.ipxe.j2 │ │ │ ├── freebsd.ipxe.j2 │ │ │ ├── freedos.ipxe.j2 │ │ │ ├── gentoo.ipxe.j2 │ │ │ ├── gparted.ipxe.j2 │ │ │ ├── harvester.ipxe.j2 │ │ │ ├── ipfire.ipxe.j2 │ │ │ ├── k3os.ipxe.j2 │ │ │ ├── kairos.ipxe.j2 │ │ │ ├── kali.ipxe.j2 │ │ │ ├── kaspersky.ipxe.j2 │ │ │ ├── linux-arm.ipxe.j2 │ │ │ ├── linux-i386.ipxe.j2 │ │ │ ├── linux.ipxe.j2 │ │ │ ├── live-arm.ipxe.j2 │ │ │ ├── live-backbox.ipxe.j2 │ │ │ ├── live-bluestar.ipxe.j2 │ │ │ ├── live-bodhi.ipxe.j2 │ │ │ ├── live-cachyos.ipxe.j2 │ │ │ ├── live-debian.ipxe.j2 │ │ │ ├── live-devuan.ipxe.j2 │ │ │ ├── live-elementary.ipxe.j2 │ │ │ ├── live-endeavouros.ipxe.j2 │ │ │ ├── live-fatdog.ipxe.j2 │ │ │ ├── live-fedora.ipxe.j2 │ │ │ ├── live-feren.ipxe.j2 │ │ │ ├── live-garuda.ipxe.j2 │ │ │ ├── live-grml.ipxe.j2 │ │ │ ├── live-hrmpf.ipxe.j2 │ │ │ ├── live-k3os.ipxe.j2 │ │ │ ├── live-kali.ipxe.j2 │ │ │ ├── live-kodachi.ipxe.j2 │ │ │ ├── live-lite.ipxe.j2 │ │ │ ├── live-lxle.ipxe.j2 │ │ │ ├── live-manjaro.ipxe.j2 │ │ │ ├── live-mint.ipxe.j2 │ │ │ ├── live-neon.ipxe.j2 │ │ │ ├── live-nitrux.ipxe.j2 │ │ │ ├── live-parrot.ipxe.j2 │ │ │ ├── live-peppermint.ipxe.j2 │ │ │ ├── live-popos.ipxe.j2 │ │ │ ├── live-q4os.ipxe.j2 │ │ │ ├── live-raizo.ipxe.j2 │ │ │ ├── live-regolith.ipxe.j2 │ │ │ ├── live-septor.ipxe.j2 │ │ │ ├── live-sparky.ipxe.j2 │ │ │ ├── live-tails.ipxe.j2 │ │ │ ├── live-ubuntu.ipxe.j2 │ │ │ ├── live-vanillaos.ipxe │ │ │ ├── live-voyager.ipxe.j2 │ │ │ ├── live-zorin.ipxe.j2 │ │ │ ├── live.ipxe.j2 │ │ │ ├── lspci.ipxe.j2 │ │ │ ├── mageia.ipxe.j2 │ │ │ ├── menu.ipxe.j2 │ │ │ ├── nbxyz.ipxe.j2 │ │ │ ├── netinfo.ipxe.j2 │ │ │ ├── nixos.ipxe.j2 │ │ │ ├── openEuler.ipxe.j2 │ │ │ ├── openbsd.ipxe.j2 │ │ │ ├── opensuse.ipxe.j2 │ │ │ ├── oracle.ipxe.j2 │ │ │ ├── photon.ipxe.j2 │ │ │ ├── proxmox.ipxe.j2 │ │ │ ├── rescuezilla.ipxe.j2 │ │ │ ├── rhel.ipxe.j2 │ │ │ ├── rockylinux.ipxe.j2 │ │ │ ├── shredos.ipxe.j2 │ │ │ ├── slackware.ipxe.j2 │ │ │ ├── smartos.ipxe.j2 │ │ │ ├── systemrescue.ipxe.j2 │ │ │ ├── talos.ipxe.j2 │ │ │ ├── tinycore.ipxe.j2 │ │ │ ├── ubuntu-spins.ipxe.j2 │ │ │ ├── ubuntu.ipxe.j2 │ │ │ ├── unix.ipxe.j2 │ │ │ ├── utils-arm.ipxe.j2 │ │ │ ├── utils-efi.ipxe.j2 │ │ │ ├── utils-pcbios-32.ipxe.j2 │ │ │ ├── utils-pcbios-64.ipxe.j2 │ │ │ ├── vmware.ipxe.j2 │ │ │ ├── vyos.ipxe.j2 │ │ │ ├── windows.ipxe.j2 │ │ │ └── zeninstall.ipxe.j2 │ │ ├── pipxe/ │ │ │ ├── Makefile-rpi3.j2 │ │ │ └── Makefile-rpi4.j2 │ │ └── version.ipxe.j2 │ ├── tests/ │ │ ├── inventory │ │ └── test.yml │ └── vars/ │ ├── debian.yml │ ├── main.yml │ ├── redhat.yml │ └── ubuntu.yml ├── script/ │ ├── build_release │ ├── message │ ├── netbootxyz-overrides.yml │ ├── retrieve_certs │ └── tag ├── site.yml ├── user_overrides.yml └── version.txt
Condensed preview — 170 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (363K chars).
[
{
"path": ".ansible-lint",
"chars": 485,
"preview": "# .ansible-lint\nskip_list:\n - '208'\n - command-instead-of-module # Using command rather than module.\n - command-inst"
},
{
"path": ".dockerignore",
"chars": 5,
"preview": ".git\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 47,
"preview": "github: netbootxyz\nopen_collective: netbootxyz\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 751,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: 'bug'\nassignees: ''\n\n---\n\n[]: This bug "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 384,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Ask a question in the Discussions area\n url: https://github.com/"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 642,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: 'enhancement'\nassignees: ''\n\n---\n\n**"
},
{
"path": ".github/workflows/claude.yml",
"chars": 1088,
"preview": "name: Claude PR Assistant\n\non:\n issue_comment:\n types: [created]\n pull_request_review_comment:\n types: [created]"
},
{
"path": ".github/workflows/development.yml",
"chars": 1503,
"preview": "name: development\n\non:\n push:\n branches:\n - development\n workflow_dispatch:\n\nenv:\n DISCORD_HOOK_URL: ${{ secr"
},
{
"path": ".github/workflows/pull-requests.yml",
"chars": 1008,
"preview": "name: pull-requests\n\non:\n pull_request:\n branches:\n - development\n - RC\n - master\n\njobs:\n test-pr:\n "
},
{
"path": ".github/workflows/release-candidate.yml",
"chars": 2537,
"preview": "name: release-candidate\n\non:\n push:\n branches:\n - RC\n workflow_dispatch:\n\nenv:\n DISCORD_HOOK_URL: ${{ secrets"
},
{
"path": ".github/workflows/release.yml",
"chars": 2321,
"preview": "name: release\n\non:\n push:\n branches:\n - master\n\nenv:\n DISCORD_HOOK_URL: ${{ secrets.DISCORD_HOOK_URL }}\n GITH"
},
{
"path": ".github/workflows/rolling.yml",
"chars": 2125,
"preview": "name: rolling\n\non:\n workflow_dispatch:\n # Disabled automatic rolling releases during version updates\n # push:\n # p"
},
{
"path": "AGENTS.md",
"chars": 7587,
"preview": "# AGENTS.md\n\nGuidelines for AI coding agents working in the netboot.xyz repository.\n\n## Project Summary\n\nnetboot.xyz gen"
},
{
"path": "CHANGELOG.md",
"chars": 20158,
"preview": "<!-- markdownlint-configure-file {\"MD024\": { \"siblings_only\": true } } -->\n# Changelog\n\nAll notable changes to this proj"
},
{
"path": "CONTRIBUTING.md",
"chars": 3624,
"preview": "# Contributing to netboot.xyz\n\nFirst of all, thank you for supporting the netboot.xyz community and for \nconsidering con"
},
{
"path": "Dockerfile",
"chars": 552,
"preview": "ARG NBXYZ_OVERRIDES=default\n\nFROM ghcr.io/netbootxyz/builder:latest AS builder\n\n# repo for build\nCOPY . /ansible\n\nFROM b"
},
{
"path": "LICENSE",
"chars": 10143,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 12451,
"preview": "## netboot.xyz [](https://twitter.com/inten"
},
{
"path": "docker-build-root/dumper.sh",
"chars": 624,
"preview": "#! /bin/sh\n\n# check for dump dir\nif [ -d /buildout ]; then\n # if there are no files in that directory use 777 perms as "
},
{
"path": "endpoints.yml",
"chars": 35526,
"preview": "endpoints:\n kali-xfce-squash:\n path: /debian-squash/releases/download/2025.4-f03c4b56/\n files:\n - filesystem.s"
},
{
"path": "etc/netbootxyz/custom/README.md",
"chars": 945,
"preview": "# Custom Menus for Self Hosted netboot.xyz\n\nThis directory contains custom iPXE files that are rendered\nduring menu gene"
},
{
"path": "etc/netbootxyz/custom/custom.ipxe.j2",
"chars": 813,
"preview": "#!ipxe\n###\n### {{ site_name }} custom menu example\n###\n\n:custom\nclear custom_choice\nmenu This is a Test Menu\nitem --gap "
},
{
"path": "renovate.json",
"chars": 356,
"preview": "{\n \"extends\": [\n \"config:recommended\"\n ],\n \"regexManagers\": [\n {\n \"fileMatch\": [\"^\\\\.github\\\\/workflows\\\\/"
},
{
"path": "roles/netbootxyz/README.md",
"chars": 1344,
"preview": "Ansible role: netbootxyz\n========================\n\nUses Ansible to generate a self hosted environment of netboot.xyz for"
},
{
"path": "roles/netbootxyz/defaults/main.yml",
"chars": 26562,
"preview": "boot_domain: boot.netboot.xyz\nboot_timeout: 300000\nboot_version: 3.x\nbootloader_disks:\n- netboot.xyz\nbootloader_http_ena"
},
{
"path": "roles/netbootxyz/files/ipxe/local/colour.h",
"chars": 807,
"preview": "#undef COLOR_NORMAL_FG\n#undef COLOR_NORMAL_BG\n#undef COLOR_SELECT_FG\n#undef COLOR_SELECT_BG\n#undef COLOR_SEPARATOR_FG\n#u"
},
{
"path": "roles/netbootxyz/files/ipxe/local/console.h",
"chars": 63,
"preview": "#define\tCONSOLE_FRAMEBUFFER\t/* Graphical framebuffer console */"
},
{
"path": "roles/netbootxyz/files/ipxe/local/crypto.h",
"chars": 18,
"preview": "#undef OCSP_CHECK\n"
},
{
"path": "roles/netbootxyz/files/ipxe/local/general.h",
"chars": 1159,
"preview": "#define CERT_CMD /* Certificate management commands */\n#define CONSOLE_CMD /* Console command */\n"
},
{
"path": "roles/netbootxyz/files/ipxe/local/general.h.efi",
"chars": 1115,
"preview": "#define CERT_CMD /* Certificate management commands */\n#define CONSOLE_CMD /* Console command */\n"
},
{
"path": "roles/netbootxyz/meta/main.yml",
"chars": 305,
"preview": "galaxy_info:\n author: Antony Messerli\n description: Installs a self hosted version of netboot.xyz\n license: Apache-2."
},
{
"path": "roles/netbootxyz/tasks/generate_checksums.yml",
"chars": 1134,
"preview": "---\n- name: Register a listing of all created iPXE bootloaders\n ansible.builtin.shell: ls -p -I {{ checksums_filename }"
},
{
"path": "roles/netbootxyz/tasks/generate_disks.yml",
"chars": 1566,
"preview": "---\n\n- name: Set up iPXE build environment\n ansible.builtin.include_tasks: generate_disks_base.yml\n\n- name: Generate le"
},
{
"path": "roles/netbootxyz/tasks/generate_disks_arm.yml",
"chars": 2427,
"preview": "---\n\n- name: Copy netboot.xyz local EFI iPXE configs\n ansible.builtin.copy:\n src: \"ipxe/local/{{ item }}\"\n dest: "
},
{
"path": "roles/netbootxyz/tasks/generate_disks_base.yml",
"chars": 2632,
"preview": "---\n\n- name: Gathering facts\n ansible.builtin.setup:\n\n- name: Gather variables for each operating system\n ansible.buil"
},
{
"path": "roles/netbootxyz/tasks/generate_disks_efi.yml",
"chars": 2774,
"preview": "---\n\n- name: Copy netboot.xyz local EFI iPXE configs\n ansible.builtin.copy:\n src: \"ipxe/local/{{ item }}\"\n dest: "
},
{
"path": "roles/netbootxyz/tasks/generate_disks_hybrid.yml",
"chars": 3199,
"preview": "---\n\n- name: Generate hybrid ISO x86_64 image\n ansible.builtin.shell: |\n ./util/genfsimg -o {{ netbootxyz_root }}/ip"
},
{
"path": "roles/netbootxyz/tasks/generate_disks_legacy.yml",
"chars": 2445,
"preview": "---\n\n- name: Copy netboot.xyz local legacy iPXE configs\n ansible.builtin.copy:\n src: \"ipxe/local/{{ item }}\"\n des"
},
{
"path": "roles/netbootxyz/tasks/generate_disks_linux.yml",
"chars": 1780,
"preview": "---\n\n- name: Copy netboot.xyz local legacy iPXE configs\n ansible.builtin.copy:\n src: \"ipxe/local/{{ item }}\"\n des"
},
{
"path": "roles/netbootxyz/tasks/generate_disks_rpi.yml",
"chars": 2019,
"preview": "---\n- name: Install required packages\n ansible.builtin.package:\n name: \"{{ item }}\"\n state: present\n with_items:"
},
{
"path": "roles/netbootxyz/tasks/generate_disks_secureboot.yml",
"chars": 3901,
"preview": "---\n\n- name: Create Secure Boot output directories\n ansible.builtin.file:\n path: \"{{ item }}\"\n state: directory\n "
},
{
"path": "roles/netbootxyz/tasks/generate_menus.yml",
"chars": 2600,
"preview": "---\n- name: Combine overrides with release defaults\n ansible.builtin.set_fact:\n _releases: \"{{ releases | combine(re"
},
{
"path": "roles/netbootxyz/tasks/generate_menus_custom.yml",
"chars": 464,
"preview": "---\n\n- name: Generate directories\n ansible.builtin.file:\n path: \"{{ item }}\"\n state: directory\n with_items:\n "
},
{
"path": "roles/netbootxyz/tasks/generate_signatures.yml",
"chars": 670,
"preview": "---\n- name: Gather list of source files\n ansible.builtin.command: ls {{ netbootxyz_root }}\n register: source_files\n\n- "
},
{
"path": "roles/netbootxyz/tasks/main.yml",
"chars": 888,
"preview": "---\n\n- name: Print Bootloader Disks to Build\n ansible.builtin.debug:\n var: bootloader_disks\n\n- name: Generate menus\n"
},
{
"path": "roles/netbootxyz/templates/checksums.txt.j2",
"chars": 213,
"preview": "# {{ site_name }} bootloaders generated at {{ current_date.stdout }}\n# iPXE Commit: {{ ipxe_repo }}/commit/{{ ipxe_git_c"
},
{
"path": "roles/netbootxyz/templates/disks/autoexec.ipxe.j2",
"chars": 2574,
"preview": "#!ipxe\n#\n# {{ site_name }} - Secure Boot autoexec.ipxe\n#\n# This script is loaded automatically by iPXE v2.0.0+ Secure Bo"
},
{
"path": "roles/netbootxyz/templates/disks/netboot.xyz-gce.j2",
"chars": 2405,
"preview": "#!ipxe\nset esc:hex 1b\nset bold ${esc:string}[1m\nset boldoff ${esc:string}[22m\nset fg_gre ${esc:string}[32m\nset fg_cya ${"
},
{
"path": "roles/netbootxyz/templates/disks/netboot.xyz-metal.j2",
"chars": 2441,
"preview": "#!ipxe\nset esc:hex 1b\nset bold ${esc:string}[1m\nset boldoff ${esc:string}[22m\nset fg_gre ${esc:string}[32m\nset fg_red ${"
},
{
"path": "roles/netbootxyz/templates/disks/netboot.xyz.j2",
"chars": 5982,
"preview": "#!ipxe\nset esc:hex 1b\nset bold ${esc:string}[1m\nset boldoff ${esc:string}[22m\nset fg_gre ${esc:string}[32m\nset fg_cya ${"
},
{
"path": "roles/netbootxyz/templates/index.html.j2",
"chars": 6246,
"preview": "#!ipxe\n#### {{ boot_domain }} initial loader ####\n#### see https://netboot.xyz for more information ####\n{%"
},
{
"path": "roles/netbootxyz/templates/local-vars.ipxe.j2",
"chars": 922,
"preview": "#!ipxe\n### used for adding local variables before loading the menu\n\n### set to enable enable github custom menu\n#set git"
},
{
"path": "roles/netbootxyz/templates/menu/4mlinux.ipxe.j2",
"chars": 698,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os 4MLinux\nmenu ${os} - Current Arch [ ${arch} ]\nitem --gap ${os} Versions\n{% fo"
},
{
"path": "roles/netbootxyz/templates/menu/about.ipxe.j2",
"chars": 1945,
"preview": "#!ipxe\nset esc:hex 1b\nset bold ${esc:string}[1m\nset ital ${esc:string}[3m\nset under ${esc:string}[4m\nset boldoff ${esc:s"
},
{
"path": "roles/netbootxyz/templates/menu/almalinux.ipxe.j2",
"chars": 1838,
"preview": "#!ipxe\n\n# AlmaLinux Operating System\n# https://almalinux.org/\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ippara"
},
{
"path": "roles/netbootxyz/templates/menu/alpinelinux.ipxe.j2",
"chars": 1121,
"preview": "#!ipxe\n\n# Alpine Linux\n# https://alpinelinux.org\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::$"
},
{
"path": "roles/netbootxyz/templates/menu/archlinux.ipxe.j2",
"chars": 1973,
"preview": "#!ipxe\n\n# Arch Linux Operating System\n# http://www.archlinux.org\n\nset os_arch ${arch}\niseq ${os_arch} x86_64 && set os_a"
},
{
"path": "roles/netbootxyz/templates/menu/blackarch.ipxe.j2",
"chars": 759,
"preview": "#!ipxe\n\n# BlackArch Linux Operating System\n# https://blackarch.org/\n\ngoto ${menu}\n\n:blackarch\nset os {{ releases.blackar"
},
{
"path": "roles/netbootxyz/templates/menu/boot.cfg.j2",
"chars": 3145,
"preview": "#!ipxe\n\n:global_vars\n# set site name\nset site_name {{ site_name }}\n\n# set boot domain\nset boot_domain {{ boot_domain }}\n"
},
{
"path": "roles/netbootxyz/templates/menu/bsd.ipxe.j2",
"chars": 780,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:bsd_menu\n\nmenu BSD Installers - Current Arch [ ${arch} ]\n\n# BSD based systems\nitem --gap BSD B"
},
{
"path": "roles/netbootxyz/templates/menu/centos.ipxe.j2",
"chars": 1803,
"preview": "#!ipxe\n\n# CentOS Stream\n# http://www.centos.org\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::${"
},
{
"path": "roles/netbootxyz/templates/menu/clonezilla.ipxe.j2",
"chars": 1441,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os_arch ${arch}\niseq ${os_arch} x86_64 && set os_arch amd64 ||\niseq ${os_arch} i"
},
{
"path": "roles/netbootxyz/templates/menu/coreos.ipxe.j2",
"chars": 2049,
"preview": "#!ipxe\n\n# Fedora CoreOS\n# https://getfedora.org/coreos/\n# https://github.com/coreos/coreos-installer/blob/master/README."
},
{
"path": "roles/netbootxyz/templates/menu/dban.ipxe.j2",
"chars": 1238,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:dban_menu\nmenu DBAN {{ endpoints.dban.version }} (Darik's Boot and Nuke)\nset kernel_url ${live"
},
{
"path": "roles/netbootxyz/templates/menu/debian.ipxe.j2",
"chars": 2583,
"preview": "#!ipxe\n\n# Debian Operating System\n# http://www.debian.org\n\ngoto ${menu}\n\n:debian\nset os Debian\nset os_arch ${arch}\niseq "
},
{
"path": "roles/netbootxyz/templates/menu/devuan.ipxe.j2",
"chars": 1932,
"preview": "#!ipxe\n\n# Devuan Operating System\n# http://www.devuan.org\n\ngoto ${menu}\n\n:devuan\nset os Devuan\nset os_arch ${arch}\niseq "
},
{
"path": "roles/netbootxyz/templates/menu/endeavouros.ipxe.j2",
"chars": 722,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os EndeavourOS\nmenu ${os}\nset ipparam BOOTIF=${netX/mac} ip=dhcp net.ifnames=0\ni"
},
{
"path": "roles/netbootxyz/templates/menu/fedora.ipxe.j2",
"chars": 2209,
"preview": "#!ipxe\n\n# Fedora Operating System\n# https://getfedora.org/\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ipparam i"
},
{
"path": "roles/netbootxyz/templates/menu/flatcar.ipxe.j2",
"chars": 1467,
"preview": "#!ipxe\n\n# Flatcar Container Linux\n# https://flatcar-linux.org/\n# For further info on:\n# iPXE and flatcar Container Linux"
},
{
"path": "roles/netbootxyz/templates/menu/freebsd.ipxe.j2",
"chars": 1086,
"preview": "#!ipxe\n\n# FreeBSD Operating System\n# http://www.freebsd.org\n\n:freebsd_menu\nset os {{ releases.freebsd.name }}\nmenu ${os}"
},
{
"path": "roles/netbootxyz/templates/menu/freedos.ipxe.j2",
"chars": 500,
"preview": "#!ipxe\n\n# FreeDOS Operating System\n# http://www.freedos.org\n\n:freedos_menu\nset os {{ releases.freedos.name }}\nmenu ${os}"
},
{
"path": "roles/netbootxyz/templates/menu/gentoo.ipxe.j2",
"chars": 1085,
"preview": "#!ipxe\n\n# Gentoo Operating System\n# http://www.gentoo.org\n\n:gentoo\nclear gentoo_version\nset os {{ releases.gentoo.name }"
},
{
"path": "roles/netbootxyz/templates/menu/gparted.ipxe.j2",
"chars": 789,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os GParted Live\nmenu ${os} - Current Arch [ ${arch} ]\nitem --gap ${os} Versions\n"
},
{
"path": "roles/netbootxyz/templates/menu/harvester.ipxe.j2",
"chars": 1574,
"preview": "#!ipxe\n\n# Harvester\n# https://harvesterhci.io/\n# https://docs.harvesterhci.io/v1.0/install/pxe-boot-install/\n\ngoto ${men"
},
{
"path": "roles/netbootxyz/templates/menu/ipfire.ipxe.j2",
"chars": 597,
"preview": "#!ipxe\n\n# IPFire\n# https://www.ipfire.org/\n\ngoto ${menu} ||\n\n:ipfire\nclear osversion\nset os {{ releases.ipfire.name }}\nm"
},
{
"path": "roles/netbootxyz/templates/menu/k3os.ipxe.j2",
"chars": 2335,
"preview": "#!ipxe\n\n# k3OS by Rancher\n# https://k3os.io/\n# https://github.com/rancher/k3os#configuration-reference\n\ngoto ${menu} ||\n"
},
{
"path": "roles/netbootxyz/templates/menu/kairos.ipxe.j2",
"chars": 3699,
"preview": "#!ipxe\n\n# Kairos\n# https://github.com/kairos-io/kairos/releases\n\ngoto ${menu} ||\n\n:kairos\n#set os {{ releases.kairos.nam"
},
{
"path": "roles/netbootxyz/templates/menu/kali.ipxe.j2",
"chars": 946,
"preview": "#!ipxe\n\n# Kali Linux\n# http://www.kali.org\n\ngoto ${menu} ||\n\n:kali\nset os {{ releases.kali.name }}\nset os_arch ${arch}\ni"
},
{
"path": "roles/netbootxyz/templates/menu/kaspersky.ipxe.j2",
"chars": 789,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Kaspersky Rescue Disk\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value "
},
{
"path": "roles/netbootxyz/templates/menu/linux-arm.ipxe.j2",
"chars": 993,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:linux_menu\nmenu Linux Installers - Current Arch [ ${arch} ]\nitem --gap Popular Linux Operating"
},
{
"path": "roles/netbootxyz/templates/menu/linux-i386.ipxe.j2",
"chars": 633,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:linux_menu\nmenu Linux Installers - Current Arch [ ${arch} ]\nitem --gap Popular Linux Operating"
},
{
"path": "roles/netbootxyz/templates/menu/linux.ipxe.j2",
"chars": 642,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:linux_menu\nmenu Linux Installers - Current Arch [ ${arch} ]\nitem --gap Linux Distros:\n{% for k"
},
{
"path": "roles/netbootxyz/templates/menu/live-arm.ipxe.j2",
"chars": 497,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nmenu Live Boot Distributions - Current Arch [ ${arch} ]\nitem --gap Live Boot Distrib"
},
{
"path": "roles/netbootxyz/templates/menu/live-backbox.ipxe.j2",
"chars": 925,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os BackBox\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints.i"
},
{
"path": "roles/netbootxyz/templates/menu/live-bluestar.ipxe.j2",
"chars": 850,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Bluestar\nmenu ${os}\nset ipparam BOOTIF=${netX/mac} ip=dhcp net.ifnames=0\nitem"
},
{
"path": "roles/netbootxyz/templates/menu/live-bodhi.ipxe.j2",
"chars": 797,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Bodhi\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints.ite"
},
{
"path": "roles/netbootxyz/templates/menu/live-cachyos.ipxe.j2",
"chars": 1001,
"preview": "#!ipxe\n\n# CachyOS Operating System\n# https://cachyos.org\n\ngoto ${menu} ||\n\n:live_menu\nset os CachyOS\nmenu ${os}\nset ippa"
},
{
"path": "roles/netbootxyz/templates/menu/live-debian.ipxe.j2",
"chars": 1146,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Debian Live\nmenu ${os}\nitem --gap ${os} Versions\nitem trixie ${space} ${os} 1"
},
{
"path": "roles/netbootxyz/templates/menu/live-devuan.ipxe.j2",
"chars": 791,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Devuan\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints.it"
},
{
"path": "roles/netbootxyz/templates/menu/live-elementary.ipxe.j2",
"chars": 911,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os elementary OS\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpo"
},
{
"path": "roles/netbootxyz/templates/menu/live-endeavouros.ipxe.j2",
"chars": 902,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os EndeavourOS\nmenu ${os}\nset ipparam BOOTIF=${netX/mac} ip=dhcp net.ifnames=0\ni"
},
{
"path": "roles/netbootxyz/templates/menu/live-fatdog.ipxe.j2",
"chars": 619,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Fatdog64\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints."
},
{
"path": "roles/netbootxyz/templates/menu/live-fedora.ipxe.j2",
"chars": 1317,
"preview": "#!ipxe\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::${gateway}:${netmask}:::none nameserver=${d"
},
{
"path": "roles/netbootxyz/templates/menu/live-feren.ipxe.j2",
"chars": 757,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Feren OS Live\nmenu ${os}\nitem --gap ${os} Versions\nitem current ${space} ${os"
},
{
"path": "roles/netbootxyz/templates/menu/live-garuda.ipxe.j2",
"chars": 951,
"preview": "#!ipxe\n\n# Garuda Linux\n# https://garudalinux.org/\n\ngoto ${menu} ||\n\n:live-garuda\nset os Garuda\nmenu ${os} Live\nset ippar"
},
{
"path": "roles/netbootxyz/templates/menu/live-grml.ipxe.j2",
"chars": 1000,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Grml\nset os_arch ${arch}\niseq ${os_arch} x86_64 && set os_arch amd64 ||\niseq "
},
{
"path": "roles/netbootxyz/templates/menu/live-hrmpf.ipxe.j2",
"chars": 976,
"preview": "#!ipxe\n\n# hrmpf\n# https://github.com/leahneukirchen/hrmpf/\n\ngoto ${menu} ||\n\n:live-hrmpf\nclear hrmpf_version\nset os hrmp"
},
{
"path": "roles/netbootxyz/templates/menu/live-k3os.ipxe.j2",
"chars": 1582,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os {{ releases.k3os.name }}\nset os_arch ${arch}\niseq ${os_arch} x86_64 && set os"
},
{
"path": "roles/netbootxyz/templates/menu/live-kali.ipxe.j2",
"chars": 750,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Kali Linux\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoint"
},
{
"path": "roles/netbootxyz/templates/menu/live-kodachi.ipxe.j2",
"chars": 744,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Kodachi\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints.i"
},
{
"path": "roles/netbootxyz/templates/menu/live-lite.ipxe.j2",
"chars": 630,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Linux Lite\nmenu ${os}\nitem --gap Use the username linuxlite with a blank pass"
},
{
"path": "roles/netbootxyz/templates/menu/live-lxle.ipxe.j2",
"chars": 735,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os LXLE\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints.item"
},
{
"path": "roles/netbootxyz/templates/menu/live-manjaro.ipxe.j2",
"chars": 1127,
"preview": "#!ipxe\n\n:live_menu\nset os Manjaro\nmenu ${os} Live\nset ipparam BOOTIF=${netX/mac} ip=dhcp net.ifnames=0\nitem --gap ${os} "
},
{
"path": "roles/netbootxyz/templates/menu/live-mint.ipxe.j2",
"chars": 2525,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Mint Live\nmenu ${os}\nitem --gap ${os} Versions\nitem 21 ${space} ${os} 21\nitem"
},
{
"path": "roles/netbootxyz/templates/menu/live-neon.ipxe.j2",
"chars": 540,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os KDE Neon\nmenu ${os}\nitem --gap ${os} Versions\nitem user ${space} ${os} User\nc"
},
{
"path": "roles/netbootxyz/templates/menu/live-nitrux.ipxe.j2",
"chars": 741,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Nitrux\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints.it"
},
{
"path": "roles/netbootxyz/templates/menu/live-parrot.ipxe.j2",
"chars": 778,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Parrot OS\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints"
},
{
"path": "roles/netbootxyz/templates/menu/live-peppermint.ipxe.j2",
"chars": 792,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Peppermint\nmenu ${os}\nitem --gap ${os} Versions\nitem 10 ${space} ${os} 10\ncho"
},
{
"path": "roles/netbootxyz/templates/menu/live-popos.ipxe.j2",
"chars": 1954,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Pop os Live\nmenu ${os}\nitem --gap ${os} Versions\nitem jammy ${space} ${os} 22"
},
{
"path": "roles/netbootxyz/templates/menu/live-q4os.ipxe.j2",
"chars": 1281,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Q4OS Live\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints"
},
{
"path": "roles/netbootxyz/templates/menu/live-raizo.ipxe.j2",
"chars": 720,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Live Raizo\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoint"
},
{
"path": "roles/netbootxyz/templates/menu/live-regolith.ipxe.j2",
"chars": 561,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Regolith\nmenu ${os}\nitem --gap ${os} Versions\nitem current ${space} ${os} Cur"
},
{
"path": "roles/netbootxyz/templates/menu/live-septor.ipxe.j2",
"chars": 718,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Septor\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoints.it"
},
{
"path": "roles/netbootxyz/templates/menu/live-sparky.ipxe.j2",
"chars": 1301,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os SparkyLinux Live\nmenu ${os}\nitem --gap ${os} Versions\nitem stable ${space} ${"
},
{
"path": "roles/netbootxyz/templates/menu/live-tails.ipxe.j2",
"chars": 1145,
"preview": "#!ipxe\n\n# Tails Operating System\n# https://tails.boum.org/\n\ngoto ${menu} ||\n\n:live-tails\nclear tails_version\nset os Tail"
},
{
"path": "roles/netbootxyz/templates/menu/live-ubuntu.ipxe.j2",
"chars": 1506,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Ubuntu Live\nmenu ${os}\nitem --gap ${os} Versions\nitem jammy ${space} ${os} 22"
},
{
"path": "roles/netbootxyz/templates/menu/live-vanillaos.ipxe",
"chars": 807,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Vanilla OS\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoint"
},
{
"path": "roles/netbootxyz/templates/menu/live-voyager.ipxe.j2",
"chars": 908,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Voyager Live\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoi"
},
{
"path": "roles/netbootxyz/templates/menu/live-zorin.ipxe.j2",
"chars": 1275,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Zorin Live\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoint"
},
{
"path": "roles/netbootxyz/templates/menu/live.ipxe.j2",
"chars": 1754,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nmenu Live Boot Distributions - Current Arch [ ${arch} ]\nitem --gap Live Boot Distrib"
},
{
"path": "roles/netbootxyz/templates/menu/lspci.ipxe.j2",
"chars": 736,
"preview": "#!ipxe\n\n# gather pci devices and list them\nclear addr\npciscan addr && goto pciscan_found ||\necho No PCI devices found..."
},
{
"path": "roles/netbootxyz/templates/menu/mageia.ipxe.j2",
"chars": 1063,
"preview": "#!ipxe\n\n# Mageia Operating System\n# http://www.mageia.org/\n\n# No way to set the network interface by MAC address, let th"
},
{
"path": "roles/netbootxyz/templates/menu/menu.ipxe.j2",
"chars": 4579,
"preview": "#!ipxe\n{% if early_menu_enabled -%}\n{{ early_menu_contents }}\n{%- endif %}\n\n:start\nisset ${arch} && goto skip_arch_detec"
},
{
"path": "roles/netbootxyz/templates/menu/nbxyz.ipxe.j2",
"chars": 1101,
"preview": "#!ipxe\n\n# netboot.xyz endpoints\n# used for accessing the latest internet build menus\ngoto ${menu} ||\n\n:nbxyz\nset os netb"
},
{
"path": "roles/netbootxyz/templates/menu/netinfo.ipxe.j2",
"chars": 949,
"preview": "#!ipxe\n\nmenu Network info\nitem --gap MAC:\nitem mac ${space} ${netX/mac}\nitem --gap IP/mask:\nitem ip ${space} ${netX/ip}/"
},
{
"path": "roles/netbootxyz/templates/menu/nixos.ipxe.j2",
"chars": 553,
"preview": "#!ipxe\n\n# NixOS\n# https://nixos.org/\n\nset os {{ releases.nixos.name }}\nset os_arch ${arch}\niseq ${os_arch} x86_64 && set"
},
{
"path": "roles/netbootxyz/templates/menu/openEuler.ipxe.j2",
"chars": 1667,
"preview": "#!ipxe\n\n# openEuler\n# https://openeuler.org/\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::${gat"
},
{
"path": "roles/netbootxyz/templates/menu/openbsd.ipxe.j2",
"chars": 966,
"preview": "#!ipxe\n\n# OpenBSD Operating System\n# http://www.openbsd.org\n\n:openbsd_menu\nset os {{ releases.openbsd.name }}\nset os_arc"
},
{
"path": "roles/netbootxyz/templates/menu/opensuse.ipxe.j2",
"chars": 3779,
"preview": "#!ipxe\n\n# openSUSE Operating System\n# http://opensuse.org\n\nisset ${dhcp-server} || goto static_ip\nset netsetup netsetup="
},
{
"path": "roles/netbootxyz/templates/menu/oracle.ipxe.j2",
"chars": 1717,
"preview": "#!ipxe\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::${gateway}:${netmask}:::none nameserver=${d"
},
{
"path": "roles/netbootxyz/templates/menu/photon.ipxe.j2",
"chars": 1431,
"preview": "#!ipxe\n\n# VMware Photon\n# https://vmware.github.io/photon/\n\ngoto ${menu} ||\n\n:photon\nset os {{ releases.photon.name }}\ns"
},
{
"path": "roles/netbootxyz/templates/menu/proxmox.ipxe.j2",
"chars": 3842,
"preview": "#!ipxe\n\n# Proxmox Open Source Products\n# https://www.proxmox.com\n\ngoto ${menu} ||\n\n:proxmox\nclear proxmox_choice\nclear p"
},
{
"path": "roles/netbootxyz/templates/menu/rescuezilla.ipxe.j2",
"chars": 790,
"preview": "#!ipxe\n\n# Rescuezilla Disk imaging\n# https://rescuezilla.com/\n\n:rescuezilla\nset os {{ utilitiesefi.rescuezilla.name }}\nm"
},
{
"path": "roles/netbootxyz/templates/menu/rhel.ipxe.j2",
"chars": 1553,
"preview": "#!ipxe\n\n# Redhat Enterprise Linux (RHEL)\n# https://www.redhat.com\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ip"
},
{
"path": "roles/netbootxyz/templates/menu/rockylinux.ipxe.j2",
"chars": 1776,
"preview": "#!ipxe\n\n# Rocky Linux\n# https://rockylinux.org/\n\nisset ${dhcp-server} && set ipparam ip=dhcp || set ipparam ip=${ip}::${"
},
{
"path": "roles/netbootxyz/templates/menu/shredos.ipxe.j2",
"chars": 1424,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:shredos\nset os_arch ${arch}\niseq ${os_arch} x86_64 && set os_arch x86_64 ||\niseq ${os_arch} i3"
},
{
"path": "roles/netbootxyz/templates/menu/slackware.ipxe.j2",
"chars": 814,
"preview": "#!ipxe\n\n# Slackware Operating System\n# http://www.slackware.com\n\ngoto ${menu}\n\n:slackware\nset os slackware\niseq ${arch} "
},
{
"path": "roles/netbootxyz/templates/menu/smartos.ipxe.j2",
"chars": 2479,
"preview": "#!ipxe\n######################################\n# SmartOS #\n# https://www.smartos.org/ "
},
{
"path": "roles/netbootxyz/templates/menu/systemrescue.ipxe.j2",
"chars": 1333,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os System Rescue\nset os_arch ${arch}\nisset ${rootpass_enabled} || set rootpass_e"
},
{
"path": "roles/netbootxyz/templates/menu/talos.ipxe.j2",
"chars": 3029,
"preview": "#!ipxe\n\n# Talos\n# https://github.com/siderolabs/talos/releases\n# https://www.talos.dev/v1.6/talos-guides/install/bare-me"
},
{
"path": "roles/netbootxyz/templates/menu/tinycore.ipxe.j2",
"chars": 1191,
"preview": "#!ipxe\n\n# Tiny Core Linux\n# http://tinycorelinux.net/downloads.html\n\nset tinycore_mirror {{ releases.tinycore.mirror }}\n"
},
{
"path": "roles/netbootxyz/templates/menu/ubuntu-spins.ipxe.j2",
"chars": 733,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:live_menu\nset os Ubuntu Spins\nmenu ${os}\nitem --gap ${os} Versions\n{% for key, value in endpoi"
},
{
"path": "roles/netbootxyz/templates/menu/ubuntu.ipxe.j2",
"chars": 5660,
"preview": "#!ipxe\n\n# Ubuntu Operating System\n# https://www.ubuntu.com\n\ngoto ${menu}\n\n:ubuntu\nset os Ubuntu\nset os_arch ${arch}\niseq"
},
{
"path": "roles/netbootxyz/templates/menu/unix.ipxe.j2",
"chars": 608,
"preview": "#!ipxe\n\ngoto ${menu} ||\n\n:unix_menu\nmenu Unix Installers\nitem --gap Unix Distros:\n{% for key, value in releases.items() "
},
{
"path": "roles/netbootxyz/templates/menu/utils-arm.ipxe.j2",
"chars": 927,
"preview": "#!ipxe\n\nmenu Utilities\nitem --gap Utilities:\n{% for key, value in utilitiesarm.items() | sort(attribute='1.name') %}\n{% "
},
{
"path": "roles/netbootxyz/templates/menu/utils-efi.ipxe.j2",
"chars": 2141,
"preview": "#!ipxe\n\n:utils_menu\nmenu Utilities\nitem --gap Utilities:\n{% for key, value in utilitiesefi.items() | sort(attribute='1.n"
},
{
"path": "roles/netbootxyz/templates/menu/utils-pcbios-32.ipxe.j2",
"chars": 2816,
"preview": "#!ipxe\n\n:utils_menu\nmenu Utilities\nitem --gap Utilities:\n{% for key, value in utilitiespcbios32.items() | sort(attribute"
},
{
"path": "roles/netbootxyz/templates/menu/utils-pcbios-64.ipxe.j2",
"chars": 2816,
"preview": "#!ipxe\n\n:utils_menu\nmenu Utilities\nitem --gap Utilities:\n{% for key, value in utilitiespcbios64.items() | sort(attribute"
},
{
"path": "roles/netbootxyz/templates/menu/vmware.ipxe.j2",
"chars": 1662,
"preview": "#!ipxe\n\n# VMware ESXi\n# https://www.vmware.com\n\ngoto ${menu} ||\n\n:vmware\nset os VMware ESXi\nclear vmware_choice\nmenu ${o"
},
{
"path": "roles/netbootxyz/templates/menu/vyos.ipxe.j2",
"chars": 656,
"preview": "#!ipxe\n\n# VyOS\n# https://vyos.io\n\ngoto ${menu}\n\n:vyos\nset os {{ releases.vyos.name }}\nmenu ${os} Installers\nitem --gap O"
},
{
"path": "roles/netbootxyz/templates/menu/windows.ipxe.j2",
"chars": 1715,
"preview": "#!ipxe\n\n# Microsoft Windows\n# https://www.microsoft.com\n\nset win_arch x64\ngoto ${menu} ||\n\n:windows\nset os Microsoft Win"
},
{
"path": "roles/netbootxyz/templates/menu/zeninstall.ipxe.j2",
"chars": 738,
"preview": "#!ipxe\n\n# Zen Installer for Arch\n# https://sourceforge.net/projects/revenge-installer/\n\n:zen\nset os {{ releases.zeninsta"
},
{
"path": "roles/netbootxyz/templates/pipxe/Makefile-rpi3.j2",
"chars": 2031,
"preview": "FW_URL\t\t:= https://github.com/raspberrypi/firmware/branches/stable/boot\nSHELL\t\t:= /bin/bash\nEFI_BUILD\t:= RELEASE\nEFI_ARC"
},
{
"path": "roles/netbootxyz/templates/pipxe/Makefile-rpi4.j2",
"chars": 2031,
"preview": "FW_URL\t\t:= https://github.com/raspberrypi/firmware/branches/stable/boot\nSHELL\t\t:= /bin/bash\nEFI_BUILD\t:= RELEASE\nEFI_ARC"
},
{
"path": "roles/netbootxyz/templates/version.ipxe.j2",
"chars": 94,
"preview": "#!ipxe\n{% if upstream_version %}\nset upstream_version {{ upstream_version }}\n{% endif %}\nexit\n"
},
{
"path": "roles/netbootxyz/tests/inventory",
"chars": 10,
"preview": "localhost\n"
},
{
"path": "roles/netbootxyz/tests/test.yml",
"chars": 69,
"preview": "---\n- hosts: localhost\n remote_user: root\n roles:\n - netbootxyz\n"
},
{
"path": "roles/netbootxyz/vars/debian.yml",
"chars": 282,
"preview": "---\nnetbootxyz_packages:\n - apache2\n - binutils-dev\n - binutils-aarch64-linux-gnu\n - dosfstools\n - figlet\n - gcc-a"
},
{
"path": "roles/netbootxyz/vars/main.yml",
"chars": 4,
"preview": "---\n"
},
{
"path": "roles/netbootxyz/vars/redhat.yml",
"chars": 165,
"preview": "---\nnetbootxyz_packages:\n - dosfstools\n - figlet\n - gcc\n - genisoimage\n - git\n - httpd\n - libslirp-devel\n - mini"
},
{
"path": "roles/netbootxyz/vars/ubuntu.yml",
"chars": 473,
"preview": "---\nnetbootxyz_packages:\n - apache2\n - binutils-dev\n - binutils-aarch64-linux-gnu\n - dosfstools\n - figlet\n - gcc-a"
},
{
"path": "script/build_release",
"chars": 2438,
"preview": "#!/bin/bash\nset -e\n\nTYPE=$1\nHARD_RELEASE=\"3.x\"\nHARD_RC=\"3.x-RC\"\nDEV_URL=\"dev.boot.netboot.xyz\"\nSTAGING_URL=\"staging.boot"
},
{
"path": "script/message",
"chars": 1584,
"preview": "#!/bin/bash\nset -e\n\nTYPE=$1\n\nif [ \"${TYPE}\" == \"dev-push\" ]; then\n BOOT_URL=\"https://s3.amazonaws.com/dev.boot.netboot."
},
{
"path": "script/netbootxyz-overrides.yml",
"chars": 677,
"preview": "---\nsigs_menu: true\nsigs_enabled: true\ngenerate_disks_arm: true\ngenerate_disks_hybrid: true\ngenerate_disks_linux: true\ng"
},
{
"path": "script/retrieve_certs",
"chars": 376,
"preview": "#!/bin/bash\nset -e\n\n# retrieve certs\ngit clone https://$GIT_USER:$GIT_AUTH@$GIT_URL certs\necho \"Retrieved certs from rep"
},
{
"path": "script/tag",
"chars": 398,
"preview": "#! /bin/bash\n\n# if tag exists append random string to it\nCODE=$(curl -s -o /dev/null -I -w \"%{http_code}\" https://api.gi"
},
{
"path": "site.yml",
"chars": 121,
"preview": "---\n- hosts: localhost\n user: root\n roles:\n - netbootxyz\n vars_files:\n - endpoints.yml\n - user_overrides.yml"
},
{
"path": "user_overrides.yml",
"chars": 1108,
"preview": "---\n\n# overrides defaults in netbootxyz role\ngenerate_menus: true\ngenerate_disks: true\ngenerate_checksums: true\ngenerate"
},
{
"path": "version.txt",
"chars": 6,
"preview": "3.0.0\n"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the netbootxyz/netboot.xyz GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 170 files (329.2 KB), approximately 104.9k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.