Skip to main content

Site Updates

· 2 min read

It has been a while since an update, but the main netboot.xyz site has a new look to it. I switched from using Hugo to using Docusaurus. I also moved the blog from Ghost to simplify things. I started down this path a while back and recently got around to polishing it all up and pushing it out. I plan on building out more content and docs over time to make it a great resource for everything netboot related. At some point, I still would like to get some updated pictures, logos, etc as well but those are a much lower priority.

I want to thank everyone who has contributed to the netboot.xyz community to this day. I originally started the project to create a quick way to install and test operating systems on VMs without having to download media and mount it everytime I needed to boot a new OS. It is great to see that it is helping out others on a day to day basis. We recently crossed 150,000 main menu loads over the past 30 days so it is great to see it being used worldwide.

If you enjoy using netboot.xyz, please give us a star on GitHub and follow us on Twitter. Please also consider supporting the project by donating to the GitHub Sponsors or Open Collective. It helps us pay for infrastructure hosting and other costs like testing hardware, new architectures, and maintaining the project.

We also have over 400 users in our Discord and have a Github Discussion Board where you can ask questions and discuss netboot.xyz.

More to come!

Self Hosting and Live Booting

· 4 min read

We have been hard at work the last few weeks and I wanted to provide some updates as to what we're currently working on and where we want to go.

I would like to thank all of the contributors over the last few years that have contributed code, tested, and provided feedback for the project. The contributions have all been really helpful and have helped keep the project up to date.

Self Hosting

I have been working on getting the netboot.xyz source tree to a point where they can be generated via Ansible so that anyone can take the repository and customize it to their liking a lot easier than it was in the past. I have gotten most of that working and will be swapping out the existing source bits in the netboot.xyz repo with the bits to deploy with Ansible. My goal is to generate the primary netboot.xyz site using Ansible instead of just uploading the source files. There will still be a lot of future optimizations that can be done to the templates but this is a good first step toward consolidating a lot of the duplicate code.

The new netboot.xyz repo will allow you to create a self-hosted environment using Ansible to a target or you can use Docker to generate the site. The Ansible playbooks will:

  • Generate the iPXE files from templates using default settings which can be overridden
  • Generate all iPXE disks customized to your environment

This should make it a lot easier to get a custom environment set up in the environment of your choosing.

Live Booting

One of the things I have been wanting to do a for a while is provide a way to Live Boot more operating systems. I always wanted to make netboot.xyz a place where anyone can try out new operating systems, reinstall, or rescue their favorite from one place. A lot of the operating systems out there don't always provide installer kernels and only host a large ISO as their release. With iPXE, the best way to load ISOs into memory is with memdisk or sandisk, but that starts to fail with larger images and doesn't work in EFI mode. Getting distros to change how they release their operating systems for iPXE users probably isn't going to happen anytime soon either.

With a lot of help and expertise from TheLamer (Ryan Kuba), a linuxserver.io contributor, we have built an automated pipeline that tracks and builds some of the latest Linux Live distributions, extracts kernels and squashfs assets, and loads them up as Github releases. From there the information for each release is then put into the netboot.xyz repo, and we can then generate menus dynamically for each version. This allows you to netboot into your favorite live distribution from the hosted Github release directly. It is currently marked as experimental but we have a number of Live Operating Systems available already to start using.

Moving netboot.xyz repository

I will be moving the repo from my personal repository on github to the netbootxyz organization to put everything in one central place. The existing links should redirect to the new location.

Discord

Over the last few weeks, we've been leveraging Discord more for communication for development, build automation, and discussion. If you would like to join in the discussion, you can join here.

Open Collective

We have set up an Open Collective 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!

Thanks again for all of your support and we hope to continue making this project more useful for our users!

Booting Linux ISOs with Memdisk and iPXE

· 4 min read

There are a number of distributions out there that provide proper support for booting the distribution over the network. A lot of the more popular distributions usually provide a installer kernels that can be easily downloaded for use. You point at the vmlinuz and the initrd and can them immediately proceed with the install streaming down packages as needed. These distributions make it great for tools like netboot.xyz to install using iPXE.

There are some distributions out there that don't have this functionality and typically only produce the ISO without any repositories that provide installer kernels or the rootfs.

In those cases, occasionally you can use memdisk and iPXE to boot those ISOs but they don't always work. In doing some research, I ran across one of the major issues as to why.

Syslinux - Memdisk

The following was taken from syslinux - memdisk.

The majority of Linux based CD images will also fail to work with MEMDISK ISO emulation. Linux distributions require kernel and initrd files to be specified, as soon as these files are loaded the protected mode kernel driver(s) take control and the virtual CD will no longer be accessible. If any other files are required from the CD/DVD they will be missing, resulting in boot error(s). Linux distributions that only require kernel and initrd files function fully via ISO emulation, as no other data needs accessing from the virtual CD/DVD drive once they have been loaded. The boot loader has read all necessary files to memory by using INT 13h, before booting the kernel.

There is also another solution, which requires the phram and mtdblock kernel module and memdiskfind utility of the Syslinux package (utils/memdiskfind). memdiskfind will detect the MEMDISK mapped image and will print the start and length of the found MEMDISK mapped image in a format phram understands:

modprobe phram phram=memdisk,$(memdiskfind) modprobe mtdblock

This will create a /dev/mtdblock0 device, which should be the .ISO image, and should be mountable.

If your image is bigger than 128MiB and you have a 32-bit OS, then you have to increase the maximum memory usage of vmalloc, by adding:

vmalloc=Mi

Example: vmalloc=256Mi to your kernel parameters.

memdiskfind can be compiled with the klibc instead of with the glibc C library to get a much smaller binary for use in the initramfs:

cd ./syslinux-4.04/utils/ make spotless make CC=klcc memdiskfind

Implementations of phram and mtdblock

ArchLinux has implemented the above concept here and here.

Debian Live used it here.

It's also been implemented in Clonezilla and GParted.

Antergos Linux based on Arch Linux works great with memdisk using the phram module.

Editor's Note: Antergos Linux is defunct. Visit the archived website here. Antergos Linux's sucessor is Endeavour OS.

Conclusion

I think it would be great for more distributions to attempt to implement something like this so that iPXE tools can be used to load the ISOs instead of actually having to burn or look for the location of the latest ISO every time.

Some of the distributions I'd love to see network support or better memdisk support are:

Linux Mint Manjaro Elementary Solus Project

There are also many other new distributions being released all the time. I typically use DistroWatch to determine the most popular distributions to attempt to add to netboot.xyz. I'd love to get a lot of these added to make it really easy to install anything on the fly.

I'd also love to see some of the hypervisors out there crack open the ISOs, pull them outside of their paywalls, and host the bits on their servers so that it's much easier to immediately boot an install to test something out without having to jump through many hoops. I have working installs for VMware ESX and Citrix Hypervisor (formerly Citrix XenServer) but I'd need to have them host the bits or allow permission to do so for a public facing installer menu.

Introducing netboot.xyz

· 2 min read

My newest project on the side is netboot.xyz. If you've seen boot.rackspace.com, this should look pretty familiar to you. I ran across cheap .xyz domains from Namecheap (one dollar at the time!), and figured the netboot.xyz name space was much easier to remember and was more neutral to the goal I was trying to accomplish. I forked boot.rackspace.com (still doing basic maintenance) and am now focusing my efforts on netboot.xyz.

My goal with the project is to make it easy as possible to boot many of the popular operating systems from bare metal, virtual machines, etc without the hassle of hunting down the latest ISO for the OS you want to download. Ideally it's usable with any service provider or just someone who maintains their own servers.

I usually try and use operating systems that make their boot loaders available via mirrors, although there are occasionally some exceptions. I'm also experimenting with various new builds like WinPE, Live Booted OS, and I'd like to even pursue getting some hypervisors on there as well to make it as easy as possible to install everything.

It's also a great place to just let people play around with new operating systems with just a menu and learn about the many many distributions out there.

Check it out when you get a chance and drop me some feedback or make a pull request if you see something I'm missing. I've added a really easy way to test your pull request from the utility menu, all you need to do is enter in your github username and branch or hash of the commit you want to test.

I'm still working on a bunch of documents for demonstrating how easy it is to plug the 1MB iPXE ISO into things like VMware Fusion, Virtual Box, Openstack, so bear with me while I try and get all of those available.

Enjoy!