Skip to content

Instantly share code, notes, and snippets.

@breyer
Forked from johnko/gist:66515a2db2aa22aa51bd
Last active September 4, 2025 22:27
Show Gist options
  • Select an option

  • Save breyer/21f93473a6e7ccdcbabd4e661376ddac to your computer and use it in GitHub Desktop.

Select an option

Save breyer/21f93473a6e7ccdcbabd4e661376ddac to your computer and use it in GitHub Desktop.
How to iPXE boot from http iso on Leaseweb virtual cloud server
Install custom ISO image at leaseweb via iPXE boot in console mode.
Here: Installing freebsd-11.0-RC3
1. press CTRL-B
If your custom iso is not mounting, and your console is at an iPXE shell, you can:
```
dhcp
initrd http://www.dayofdefeat.org/freebsd/mfsbsd-11.0-RELEASE-amd64.iso
```
While the iso is downloading, leaseweb iPXE does not include memdisk, so we have to upload it ourselves to another host.
Here's one I found public, though I wouldn't recommend using it: http://preseed.panticz.de/ipxe/memdisk
After the iso is downloaded and we get back a prompt, we can then:
```
chain http://preseed.panticz.de/ipxe/memdisk iso
```
After boot:
# mkdir /usr/freebsd-dist/
# cd /usr/freebsd-dist/
# fetch http://ftp.de.freebsd.org/pub/FreeBSD/releases/amd64/11.0-RELEASE/MANIFEST
# bsdinstall
Nice to know & workarounds:
- you can't load images via HTTPS
- Error code 2a81800 means image to large > out of memory > use a smaller install image
@breyer
Copy link
Author

breyer commented Sep 4, 2025

this works in 2025 - https://github.com/bin456789/reinstall/blob/main/README.en.md

reinstall does not seem to support FreeBSD.

@itoffshore
Copy link

itoffshore commented Sep 4, 2025

boot the Alpine Linux iso with reinstall.sh as shown in the README

this gives you Alpine Linux in RAM as a Rescue Environment

I download my isos to /dev/shm - & install qemu & install my custom system (Micro OS)

add a line to /etc/apk/repositories:

http://dl-cdn.alpinelinux.org/alpine/v3.22/community

& install qemu

apk update
apk add qemu qemu-img qemu-system-x86_64
modprobe kvm

cd /dev/shm
wget https://domain.com/my.iso

MYISO=/dev/shm/my.iso

#VNC (kvm)
----------
qemu-system-x86_64 -netdev type=user,id=mynet0 -device virtio-net-pci,netdev=mynet0 -m 4G -drive file=/dev/vda,format=raw,if=virtio -vga std -k en-gb -daemonize -cdrom $MYISO -boot d -vnc :1

# SPICE (no kvm)
----------------
qemu-system-x86_64 -netdev type=user,id=mynet0 -device virtio-net-pci,netdev=mynet0 -m 4G -no-kvm -drive file=/dev/vdb,format=raw,if=virtio -vga qxl -spice port=5900,addr=127.0.0.1,disable-ticketing -daemonize -cdrom $MYISO -boot d

#VNC (no kvm)
-------------
qemu-system-x86_64 -netdev type=user,id=mynet0 -device virtio-net-pci,netdev=mynet0 -m 4G -no-kvm -drive file=/dev/vdb,format=raw,if=virtio -vga std -k en-gb -daemonize -cdrom $MYISO -boot d -vnc :1

In Alpine helper scripts are in /sbin/setup-xxxxx (reinstall.sh seems to configure networking - I'm connected over SSH no problem)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment