All Projects → pimterry → rpi-pxe-server

pimterry / rpi-pxe-server

Licence: Apache-2.0 license
A ready-to-go PXE + TFTP network boot server for Raspberry Pi, with Resin deployment

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to rpi-pxe-server

PXESetupWizard
PXE Setup Wizard. Netboot Debian, Ubuntu, System Rescue CD, FreeDOS and more.
Stars: ✭ 96 (+41.18%)
Mutual labels:  pxe-boot, tftp, pxe
Cobbler
Cobbler is a versatile Linux deployment server
Stars: ✭ 2,222 (+3167.65%)
Mutual labels:  tftp, pxe
pxe-pilot
API and CLI to manage PXE configurations
Stars: ✭ 56 (-17.65%)
Mutual labels:  pxe-boot, pxe
novaboot
A tool that automates booting of operating systems on target hardware or in qemu
Stars: ✭ 32 (-52.94%)
Mutual labels:  tftp, pxe
Netboot.xyz
Your favorite operating systems in one place. A network-based bootable operating system installer based on iPXE.
Stars: ✭ 2,753 (+3948.53%)
Mutual labels:  tftp, pxe
edeploy
Linux systems provisioning and updating made easy
Stars: ✭ 88 (+29.41%)
Mutual labels:  pxe-boot, pxe
ansible-os-autoinstall
Unattended OS installation configuration system
Stars: ✭ 54 (-20.59%)
Mutual labels:  pxe-boot
TFTP-PXE-Boot-Server
Files and folder setup for a TFTP PXELINUX server
Stars: ✭ 94 (+38.24%)
Mutual labels:  pxe
balena-chromium-kiosk
BalenaOS/BalenaCloud based Kiosk using Chromium on a RaspberryPi
Stars: ✭ 46 (-32.35%)
Mutual labels:  resin-io
homelab
My self-hosting infrastructure, fully automated from empty disk to operating services
Stars: ✭ 4,451 (+6445.59%)
Mutual labels:  pxe
tftp.net
Implements the TFTP (Trivial File Transfer) protocol (client/server) in an easy-to-use C#/.NET library.
Stars: ✭ 67 (-1.47%)
Mutual labels:  tftp
minimyth2
Distro to make disk-less MythTV appliance
Stars: ✭ 43 (-36.76%)
Mutual labels:  pxe-boot
TFTPServer
Managed TFTP server implementation, written in C#. Features: IPv4 and IPv6, blocksize, single port mode, windowed mode, unlimited transfers, MIT licensed
Stars: ✭ 28 (-58.82%)
Mutual labels:  tftp
ariadne-bootloader
A little less unfinished TFTP bootloader for Arduino Ethernet or Arduino with Ethernet Shield
Stars: ✭ 40 (-41.18%)
Mutual labels:  tftp
stiefelsystem
Boot your operating system on a different hardware device via network 👢
Stars: ✭ 27 (-60.29%)
Mutual labels:  network-boot
MultiOS-USB
Boot operating systems directly from ISO files
Stars: ✭ 106 (+55.88%)
Mutual labels:  network-boot
go-tftp
pack.ag/tftp: Go TFTP library with full standards support.
Stars: ✭ 26 (-61.76%)
Mutual labels:  tftp
net-protocol-over-udp
any application layer protocol base udp (DNS/DHCP/TFTP)
Stars: ✭ 11 (-83.82%)
Mutual labels:  tftp
py3tftp
An asynchronous TFTP server in pure Python 3.5
Stars: ✭ 39 (-42.65%)
Mutual labels:  tftp
rackshift
RackShift 是开源的裸金属服务器管理平台,功能覆盖裸金属服务器的发现、带外管理、RAID 配置、固件更新、操作系统安装等。
Stars: ✭ 467 (+586.76%)
Mutual labels:  pxe

rpi-pxe-server

A ready-to-go PXE + TFTP network boot server for Raspberry Pi, with Resin deployment.

Want to boot a machine from the network, don't want to have to fight with all the configuration and setup yourself, and have a raspberry pi to hand? This is the solution.

Tested with:

Set up

  1. Set up your device, with reliable power, a network cable, and optionally wifi (if you want logging or easy access).
  2. Sign up for free on resin.io, create an application, and provision it, optionally with your wifi credentials.
  3. Set the following environmental variables:
    • RESIN_SUPERVISOR_DELTA: 1 // Enables deltas for updates keeping later changes quick
  4. Clone/fork this repo, and push it to your resin.io application's repository to deploy this setup.
  5. Set up your specific PXE config over samba (to /tftp), SCP (to /data/tftp), or over tftp by:
    1. Uploading your PXE bootable image
    2. Adding your PXE config at pxelinux.cfg/default
  6. You're ready to go: put the device on the same network as the target machine (directly or through a router, as long as DHCP is disabled on the router), tell that target machine to boot from the network, and enjoy.

You can change and push a new Dockerfile to your application if you want to carefully update your device to do this differently, or for quick changes there's an SSH port exposed that allows root login with the default password of 'resin'.

Windows example

For the specific Windows boot process this was tested with, scripts are included. See app/windows/setup-windows-pxe.sh in this repo (in /usr/src/app on the device) for full details.

This script:

  • Builds a Windows PE image from a full Windows image.
  • Mounts the full Windows image within the Samba share to make it accessible.
  • Makes the Windows PE image bootable through PXE.

To run this script:

  1. Copy a Windows iso across to the device, either via samba or scp.
  2. SSH into the device
  3. Run /usr/src/app/windows/setup-windows-pxe.sh <path_to_full_windows_iso>

Once this is complete, any machine attached to the device should now boot into Windows PE, from which you can start the full Windows install process.

Note that it seems Microsoft's iso download process makes it easy to end up with corrupted iso's, which will typicall start up, but refuse to install. To check for this, run md5sum on your iso to get its md5, and google for the hash. Any valid official image should return a huge number of related results.

Security

This setup has pretty much no security - do not connect this device to any untrusted network (e.g. the public internet). Root SSH is set up with a default password, and file sharing services are configure with public read/write access to the image you will be booting from. That's super convenient and effective if the device is only connected to you, but it's trivial complete control of both the device and the machine you're booting from if anybody else can connect.

Technical details

  • Device will run as 192.168.0.1, and provide DHCP for the rest of the 255.255.255.0 range.
  • DHCP and TFTP configuration are done with Dnsmasq, see dnsmasq.conf (/etc/dnsmasq.conf on device)
  • TFTP is preconfigured for BIOS PXE, using files from syslinux and pxelinux (see Dockerfile.template for details).
  • A samba share is available, see smb.conf (/etc/smb.conf on device)
  • Direct SSH access is available to examine and change the device at runtime, or transfer files over SCP.

Potential extensions:

I'm open to PRs for these, but I don't need them myself right now, so they won't happen without help.

  • Preprepared config/scripts for other scenarios.
  • Allow setting a BOOT_IMAGE_URL environmental variable for a URL to get the boot image from.
  • UEFI boots. I don't know much about this, but I know this currently supports only BIOS PXE. I believe most current motherboards support this, sometimes with an option like LAN Boot Rom, but for very new machines/in future this may not be true.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].