Network Booting
Using iPXE & NFS
Network Booting is a cool technique to boot the operating system in your machine from the network rather than the local hard drive. For example, in the above picture on the right is a desktop machine that does not have any hard drive, on the left we have a laptop. From the laptop, we will serve an OS over the network and the desktop machine will boot & run the OS completely over the network. The router will create the local network and act as a DHCP server. We will use iPXE & NFS mechanisms to do this. if you are interested to learn about the process in depth you can follow this link https://networkboot.org/fundamentals/
We will boot the Ubuntu 16.04.3 desktop version so firstly download the OS from http://releases.ubuntu.com/ and extract it. I am sharing my hands-on experience so my paths won't exactly match yours. My Host machine, which is the laptop in this case, is also running Ubuntu 16.04.3 desktop edition.
First, install the dependencies
Git clone the iPXE project’s source
Build the ROM for USB [for initial build test, later we will make the actual ROM]
We will use the NFS service to serve the OS so our host machine needs to have it
Install NFS kernel Server
Open this file using gedit
Write the path of the extracted OS at the bottom of the file
Add NFS support to the PXE ROM
Add script support to the ROM
Open this file “ipxe/src/config/local/general.h
The IMAGE_SCRIPT macro should be defined [ not commented out]
Take note of your host machine IP,
for my machine, it was 192.168.0.100
Create a script
Open the script
Add the following lines
Save it
Now make the ROM by embedding the script
Insert a pen drive, take note of its drive letter using the “Disks” utility app of ubuntu
For my case, it was sdb
Export the NFS shares of your host machine
Restart NFS-kernel-server
Remove the pen-drive , insert it into the desktop machine
Make sure USB from the boot is enabled,
Now everything okay then you will be able to use ubuntu over the network