Fundamentals 25 min read

Network‑Boot Volumio on an Old PC Using iSCSI: Step‑by‑Step Guide

This article walks through turning an old 2009 laptop into a disk‑less Volumio player by configuring iSCSI network boot, covering BIOS/UEFI basics, PXE/iPXE workflow, MBR vs GPT partitioning, bootloader setup, initrd customization, and troubleshooting tips.

Liangxu Linux
Liangxu Linux
Liangxu Linux
Network‑Boot Volumio on an Old PC Using iSCSI: Step‑by‑Step Guide

Story Start – Goal and Plan

After buying a new audio system, the author needed a digital player and chose Volumio, a Debian‑based Hi‑Fi OS that can run on x86 or Raspberry Pi. Instead of using a USB stick, the goal became to boot Volumio without any local disk and to explore Linux boot principles.

Linux Boot Process Overview

The typical boot sequence is:

BIOS/UEFI power‑on self‑test (POST)

Read MBR (or GPT) to locate the bootloader

Load GRUB or Syslinux and display a menu

Load the Linux kernel into memory

Execute the init program

Enter the user interface

When booting from the network, additional PXE steps are required to mount an iSCSI disk before the kernel is loaded.

Preparing iSCSI Storage

iSCSI provides block‑level storage over TCP/IP, making a remote disk appear as a local device. The required parameters are:

iSCSI server address (e.g., 192.168.3.5)

Target name (e.g., iqn.2005-10.org.freenas.ctl:yong-pc.volumio)

Initiator name (client identifier)

BIOS vs. UEFI

BIOS, originating in the 1970s, performs POST and then follows a boot order to hand control to the next stage. UEFI, standardized in 2006, replaces BIOS, supports mouse input, and can load boot programs via network, but the old 2009 laptop uses BIOS, so the article focuses on BIOS.

PXE and iPXE

When no local boot device is found, the firmware falls back to PXE. PXE works by:

Client requests an IP address from DHCP, receiving the location of a boot file (e.g., pxelinux.0)

Client downloads the boot file via TFTP

Client obtains a configuration file and executes further actions

Standard PXE only supports TFTP. The author uses iPXE, an enhanced open‑source PXE firmware that can fetch files via HTTP, iSCSI, Fibre Channel, AoE, and can embed custom scripts.

Compiling iPXE

git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
make bin-i386-pcbios/ipxe.pxe EMBED=menu.ipxe

Supported platforms include various BIOS/EFI and CPU combinations (e.g., bin-i386-pcbios, bin-x86_64-efi, bin-arm64-efi).

DHCP and TFTP Configuration

The author uses a LEDE router with built‑in DHCP/TFTP services. The TFTP root directory holds the iPXE binary and the menu script. The network boot image is set to ipxe.pxe.

Disk Partitioning: MBR vs. GPT

MBR stores a 512‑byte boot record, a partition table (four entries), and a magic number. It supports up to four primary partitions and a maximum disk size of ~2.2 TB. GPT, part of the UEFI spec, uses a protective MBR, a primary GPT header, a partition array with GUIDs, and a backup header, allowing many partitions and larger disks.

Bootloader Installation

Volumio uses Syslinux to load the kernel and initrd. The Syslinux configuration specifies the kernel file ( vmlinuz‑3.18.5), the initrd ( volumio.initrd), and kernel parameters (e.g., imgpart, bootpart, imgfile, loglevel, USE_KMSG).

Kernel and Initrd Details

vmlinuz is the compressed Linux kernel. initrd (initial RAM disk) provides a temporary root filesystem that runs before the real root is mounted. Volumio’s initrd performs tasks such as reading Syslinux variables, loading drivers, mounting the boot partition, adjusting partition sizes with fdisk, mounting the volumio_current.sqsh image, and finally switching to the real root.

Editing initrd for iSCSI

Because the iPXE environment exits before the kernel starts, the initrd must re‑mount the iSCSI disk. The required steps are:

Load the network driver

Bring up the network

Start the iSCSI client and mount the remote disk

mount -o loop,offset=1048576 ./wrt/Build/Volumio2.799-2020-09-29-x86.img ./vboot/
cp ../vboot/volumio.initrd volumio.initrd.gz
gunzip volumio.initrd.gz
cpio -ivmd < volumio.initrd
vim init   # edit init script
find . | cpio -c -o > ../volumio.initrd.img
gzip volumio.initrd.img
mv volumio.initrd.img.gz volumio.initrd

Alternatively, the Volumio build scripts on GitHub can be modified to include the iSCSI client during image creation:

git clone https://github.com/volumio/Build.git
# edit x86config.sh to add iSCSI packages (lines 193‑195)
# edit scripts/initramfs/init-x86 to load driver, start network, start iSCSI before mounting

Init Process

After the kernel hands control to /sbin/init, the system determines the runlevel (0‑6) from /etc/inittab and executes the corresponding scripts in /etc/rcN.d. Modern systems typically use systemd instead of the traditional SysV init.

Problems Encountered and Solutions

Syslinux freeze : caused by using a 64‑bit iPXE firmware with a 32‑bit Syslinux binary; switching to a 32‑bit iPXE fixed it.

Cannot shut down : network shutdown broke iSCSI, leaving the root partition mounted; removing the networking shutdown script ( K06networking) solved the issue.

AirPlay service not found : shairport-sync could not detect the network interface because it was brought up in the initrd; using a wireless adapter that is initialized later restored functionality.

Conclusion

The author succeeded in booting Volumio without a USB stick by using iSCSI network boot, gaining a deeper understanding of BIOS/UEFI, PXE, partition tables, bootloaders, and initrd customization. Various alternative approaches (e.g., HTTP‑based iPXE boot) exist, but the iSCSI + ibft method proved the simplest for this setup.

LinuxPXEiSCSINetwork BootinitrdVolumio
Liangxu Linux
Written by

Liangxu Linux

Liangxu, a self‑taught IT professional now working as a Linux development engineer at a Fortune 500 multinational, shares extensive Linux knowledge—fundamentals, applications, tools, plus Git, databases, Raspberry Pi, etc. (Reply “Linux” to receive essential resources.)

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.