{"id":15674439,"url":"https://github.com/rgl/rpi4-uefi-ipxe","last_synced_at":"2025-10-03T22:47:47.927Z","repository":{"id":139753241,"uuid":"381047783","full_name":"rgl/rpi4-uefi-ipxe","owner":"rgl","description":"UEFI iPXE for the Raspberry Pi 4 ARM64","archived":false,"fork":false,"pushed_at":"2024-09-01T14:26:36.000Z","size":20,"stargazers_count":26,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-15T02:42:11.103Z","etag":null,"topics":["arm64","ipxe","pxe","raspberry-pi","uefi"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rgl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-28T13:49:05.000Z","updated_at":"2025-06-04T16:58:22.000Z","dependencies_parsed_at":"2023-12-31T12:22:21.050Z","dependency_job_id":"098241f1-da25-4e21-8960-06d0dc537d29","html_url":"https://github.com/rgl/rpi4-uefi-ipxe","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/rgl/rpi4-uefi-ipxe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Frpi4-uefi-ipxe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Frpi4-uefi-ipxe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Frpi4-uefi-ipxe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Frpi4-uefi-ipxe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rgl","download_url":"https://codeload.github.com/rgl/rpi4-uefi-ipxe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Frpi4-uefi-ipxe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278239971,"owners_count":25954096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-03T02:00:06.070Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm64","ipxe","pxe","raspberry-pi","uefi"],"created_at":"2024-10-03T15:44:47.040Z","updated_at":"2025-10-03T22:47:47.908Z","avatar_url":"https://github.com/rgl.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\n[![build](https://github.com/rgl/rpi4-uefi-ipxe/actions/workflows/build.yml/badge.svg)](https://github.com/rgl/rpi4-uefi-ipxe/actions/workflows/build.yml)\n\nThis builds UEFI iPXE for the Raspberry Pi 4 ARM64 and releases it with the [pftf/RPi4 binaries](https://github.com/pftf/RPi4).\n\nYou can [flash it to a an sd-card](#sd-card-flashing).\n\nThen, you can [try using iPXE](#ipxe-usage).\n\nThis is used by [rgl/talos-vagrant](https://github.com/rgl/talos-vagrant) and is related to [rgl/raspberrypi-uefi-edk2-vagrant](https://github.com/rgl/raspberrypi-uefi-edk2-vagrant).\n\n## sd-card flashing\n\nUse [Raspberry Pi Imager](https://github.com/raspberrypi/rpi-imager) or [Etcher](https://github.com/balena-io/etcher) to flash [a release `rpi4-uefi-ipxe.img.zip`](https://github.com/rgl/rpi4-uefi-ipxe/releases) file into the sd-card.\n\nAlternatively, use the `rpi4-uefi-ipxe.zip` file to manually create the sd-card.\n\nFind which device was allocated for the sd-card that will store the UEFI firmware:\n\n```bash\nlsblk -o KNAME,SIZE,TRAN,FSTYPE,UUID,LABEL,MODEL,SERIAL\n# lsblk should output all the plugged block devices, in my case, this is the device that I'm interested in:\n#\n#   sde    28,9G usb                                                                STORAGE DEVICE   000000078\n#   sde1    256M        vfat   9F2D-0578                            boot\n#   sde2    6,1G        ext4   efc2ea8b-042f-47f5-953e-577d8860de55 rootfs\n```\n\nWipe the sd-card (in this example its at `/dev/sde`) and put a release in it:\n\n```bash\n# switch to root.\nsudo -i\n\n# set the sd-card target device and mount point.\ntarget_device=/dev/sde\ntarget=/mnt/rpi4-uefi\n\n# umount any existing partition that you might have already mounted.\numount ${target_device}?\n\n# format the sd-card at $target_device.\nparted --script $target_device mklabel gpt\nparted --script $target_device mkpart ESP fat32 4MiB 100MB\nparted --script $target_device set 1 esp on\nmkfs -t vfat -F 32 -n RPI4-UEFI ${target_device}1\n\n# show the details.\nparted --script $target_device unit MiB print\n# Model: Generic STORAGE DEVICE (scsi)\n# Disk /dev/sde: 15268MiB\n# Sector size (logical/physical): 512B/512B\n# Partition Table: gpt\n# Disk Flags:\n#\n# Number  Start    End      Size     File system  Name  Flags\n#  1      4,00MiB  95,0MiB  91,0MiB  fat32        ESP   boot, esp\nsfdisk -l $target_device\n# Disk /dev/sde: 14,91 GiB, 16009658368 bytes, 31268864 sectors\n# Disk model: STORAGE DEVICE\n# Units: sectors of 1 * 512 = 512 bytes\n# Sector size (logical/physical): 512 bytes / 512 bytes\n# I/O size (minimum/optimal): 512 bytes / 512 bytes\n# Disklabel type: gpt\n# Disk identifier: 1B1E7509-88AF-4F42-9106-4CD120FD37C9\n#\n# Device     Start    End Sectors Size Type\n# /dev/sde1   8192 194559  186368  91M EFI System\n\n# install the firmware in the sd-card.\nmkdir -p $target\nmount ${target_device}1 $target\nunzip rpi4-uefi-ipxe.zip -d $target\n\n# check the results.\nfind $target\n\n# eject the sd-card.\numount $target\neject $target_device\n\n# exit the root shell.\nexit\n```\n\nRemove the sd-card from the computer.\n\nPut it in the rpi and power it up.\n\n## iPXE Usage\n\nWhen you see the UEFI firmware logo, press ESC to enter the Setup.\n\nSelect `Boot Manager`.\n\nSelect `SD/MMC on Arasan SDHCI`.\n\nPress `Ctrl+B` to enter the iPXE command line.\n\nConfigure the network and the time:\n\n```bash\ndhcp\nntp pool.ntp.org\n```\n\nSee the configuration:\n\n```bash\nconfig # press Ctrl+X to exit.\n```\n\nTry to download a file using HTTP and HTTPS:\n\n```bash\n# see https://ipxe.org/crypto\n# see https://ipxe.org/cfg/crosscert\nimgfetch http://boot.ipxe.org/1mb\nimgfetch https://boot.ipxe.org/1mb\nimgstat\nimgfree 1mb # free one of the named fetched images.\nimgfree     # free all.\n```\n\nBoot into the Debian Installer (https://www.debian.org/distrib/netinst):\n\n**NB** Also see https://github.com/rgl/raspberrypi-uefi-edk2-vagrant/blob/master/rpi.ipxe.\n\n```bash\ndhcp\nntp pool.ntp.org\nset b https://deb.debian.org/debian/dists/bookworm/main/installer-arm64/current/images/netboot/debian-installer/arm64\ninitrd ${b}/initrd.gz\nkernel ${b}/linux\nboot\n```\n\nOnce Debian loads, press `Ctrl+Alt+F2`, type `free -m` to see the total memory. In my RPi4 with 8 GiB of RAM, this was the output:\n\n```console\nBusyBox v1.35.0 (Debian 1:1.35.0-4+b3) built-in shell (ash)\nEnter 'help' for a list of built-in commands.\n\n# free -m\n          total      used      free     shared  buff/cache  available\nMem:    7984044     82956   7758700     129312      142388    7620596\nSwap:         0         0         0\n```\n\nYou can also try to boot into https://netboot.xyz:\n\n**NB** Here, although the netboot.xyz menu loaded correctly, it failed to boot an actual OS.\n\n```bash\nchain --autofree https://boot.netboot.xyz\n```\n\nFor more information see:\n\n* [rgl/raspberrypi-uefi-edk2-vagrant](https://github.com/rgl/raspberrypi-uefi-edk2-vagrant).\n* [rgl/talos-vagrant](https://github.com/rgl/talos-vagrant).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgl%2Frpi4-uefi-ipxe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frgl%2Frpi4-uefi-ipxe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgl%2Frpi4-uefi-ipxe/lists"}