Serva PXE/BINL - AN03: Non-Windows Boot/Install

How to start an automated network boot/install of a Non-Windows asset taking no more than 15 minutes and a ~1 MB download.

The objective of this document is to show you how to PXE boot/install Linux and BSD distributions, Native Hypervisors, Recovery Tools, DOS/FreeDOS (BIOS upgrade), and more.

Procedures described in this document do not require Serva "Supporter"

Serva PXE/BINL - Application Note Set
Serva PXE/BINL - AN01: Windows Install
Serva PXE/BINL - AN02: Windows Install Adv & WinPE Boot
Serva PXE/BINL - AN03: Non-Windows Boot/Install
Serva PXE/BINL - AN04: Custom menu


0 Index

  1. Requirements
  2. Introduction
  3. Installing/Booting Linux and BSD Distributions
  4. Installing Native Hypervisors
  5. Booting Recovery Tools
  6. Booting DOS/FreeDOS (BIOS upgrade)
  7. Advanced
  8. Troubleshooting
  9. Final Words

 

1 Requirements

1.1 Required Software
1.1.1 Microsoft Windows Serva 2.1 or higher.
1.1.2 Install CD/DVD/ISO of the non-Windows systems you want to network boot/install.

1.2 Assumed knowledge
1.2.1 Serva PXE/BINL - AN01: Windows Install
1.2.2 PXESERVA/PXELINUX basics.
1.2.3 Linux basics.

 

2 Introduction

In previous PXE/BINL application notes (Serva PXE/BINL - AN01: Windows Install & Serva PXE/BINL - AN02: Windows Install Adv & WinPE Boot) we have seen how Serva PXE/BINL services were able to automatically convert into Serva assets Microsoft Windows Install Distributions and Windows PE executives. In those cases the high degree of automation achieved is based on Microsoft's install distributions and PE executives standard format.
When now we have to process non-Windows systems, the lack of a distribution standard forces Serva to use a still very powerful semi-automatic approach:

2.1 Serva handling of non-Windows distributions

  1. Copy the non-Windows distribution file components and directory structure under Serva's class directory \NWA_PXE\ within the corresponding manually created head directory.
    i.e. for Suse Linux Enterprise Desktop you could copy SUSE's ISO content under:
    \NWA_PXE\SLED-11-SP1-DVD-i586-GM\
    Note
    In a few indicated cases Serva will require you to copy the distribution ISO/IMG file itself without extracting its components.
  2. Inform Serva about the presence of a non-windows distribution by manually creating the corresponding ServaAsset.inf file within the asset's head directory.
    i.e. \NWA_PXE\SLED-11-SP1-DVD-i586-GM\ServaAsset.inf
  3. Depending on the particular asset manually perform the required preparation processes (if any).
  4. Quit/restart Serva.

2.2 The file ServaAsset.inf is a simple, pure ASCII, text file containing the net boot/install information requiered by PXESERVA and by the asset's booting/installing process itself. i.e.

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  SUSE Linux Enterprise / openSUSE Linux
;-Tested on:
;  SLED-11-SP1-DVD-i586-GM-DVD1.iso
;  openSUSE-12.2-DVD-i586.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  -
[PXESERVA_MENU_ENTRY]
asset    = Suse Linux Enterprise Desktop 11 SP1  
platform = i586
kernel   = NWA_PXE/$HEAD_DIR$/boot/i386/loader/linux
append   = initrd=NWA_PXE/$HEAD_DIR$/boot/i386/loader/initrd splash=silent vga=0x314 showopts netdevice=bootif install=http://$IP_BSRV$/$HEAD_DIR$/
ipappend = 2

The ServaAsset.inf format has been carefully designed to make the file self-contained and portable.

2.2.1 Information Header:
It contains formatted metadata not really required by Serva but very important if you plan to share your personally created ServaAsset.inf.

2.2.2 Section [PXESERVA_MENU_ENTRY]:
It contains the variables required by Serva and the asset boot/install process itself.
asset: Variable containing the text that will be displayed on Serva's menu entry.
platform: Variable containing the text that will be displayed on Serva's menu entry.
kernel: Variable containing the "TFTP path" to the asset's NBP (Network Boot Program).
append: Variable containing the asset NBP's command line parameters.
ipappend: Optional variable containing "1","2", or "3" (w/o quotes). It appends additional IP/MAC related parameters.

2.3 Making your ServaAsset.inf self-contained and portable.
2.3.1 When creating ServaAsset.inf do not forget to include a correctly populated Description Header; it might look not really important when you deal with one or two non-Windows assets but when that figure grows or you are planning to share your ServaAsset.inf with colleagues or friends the extra effort always pays off.
2.3.2 ServaAsset.inf append variable will surely require some sort of Microsoft share, HTTP server access, or FTP server access. Please always consider Serva's \NWA_PXE\ class directory as the "root" of all those file delivery services. For the sake of consistency when the asset needs a Microsoft share please share the class directory \NWA_PXE\ as NWA_PXE_SHARE.
2.3.2 ServaAsset.inf kernel and append variables will surely require paths, IP addresses, Serva's computer name, etc. All these components are scenario dependant, that's why Serva is able to parse a set of "environment" variables that help you to create portable ServaAsset.inf.

$COMP_NAME$     Serva Computer Name 
$HEAD_DIR$      Asset Head Directory (no leading "\", no trailing "\")
$IP_CLNT$       DHCP obtained (yiaddr) Client's IP
$IP_BSRV$       DHCP obtained (siaddr) Client's Boot Server IP (Serva IP)
$IP_GWAY$       DHCP obtained (opt #3) Client's Default Gateway
$IP_MASK$       DHCP obtained (opt #1) Client's IP Mask

i.e.

kernel = NWA_PXE/SLED-11-SP1-DVD-i586-GM/boot/i386/loader/linux "non-Portable"
kernel = NWA_PXE/$HEAD_DIR$/boot/i386/loader/linux "Portable"

i.e.

append = ... install=http://192.168.20.1/$HEAD_DIR$/ "non-Portable"
append = ... install=http://$IP_BSRV$/$HEAD_DIR$/ "Portable"
   

2.4 In cases where an identical ServaAsset.inf is able to boot/install more than one particular asset flavor, architecture, or version, we must consecutively list all the tested distributions in ServaAsset.inf header for reference purposes. Before use, the variables asset and platform must be manually edited accordingly to the particular distribution being booted/installed.


Note
Well written ServaAsset.inf should be:

  1. Format conformant; including its fully populated information header.
  2. Self-contained; not requiring any external additional information for its proper use.
  3. Portable; being able to be copied to different Serva PXE/BINL repositories requiring minimal to none editing.

Please follow these simple rules when creating your own ServaAsset.inf

 

2.5 ISO-9660 and its Rock Ridge and Joliet extensions.
ISO-9660 (1987) defines how files can be represented on CD/DVD-ROMs. Limitations on the original standard (i.e. file names no longer than 8.3 format) led to the various ISO 9660 extensions used today i.e. Rock Ridge (mostly adopted by the Unix/Linux world) or Joliet (Created by MS; mostly adopted by the Windows world). Most of the Linux distribution ISOs you see today include the original ISO 9660 and both Rock Ridge and Joliet extension encodings. Finally it is always the OS who decides which extension is used at reading time.
Linux file systems use case-sensitive file names, symbolic links, and other features supported by Rock Ridge but not supported by Joliet. Therefore when populating Serva's repository by copying content from those Linux ISO files to our Serva PC the Microsoft OS will always read from the included Joliet extension (remember Microsoft OSs do not include native Rock Ridge support) then we must keep in mind a few points.

  1. While FILE_NAME.TXT and file_name.txt can coexist on a Rock Ridge or Joliet directory, only one of them can exist on a Microsoft FAT32/NTFS based directory.
  2. Rock Ridge soft links are represented as empty files on Joliet.
  3. While Rock Ridge supports file names up to 255 chars, Joliet supports file names no longer than 64 chars ("relaxed" Joliet implementations allow longer filenames). Then when copying a file from a Linux ISO to a Microsoft OS (which will be read using ISO's Joliet extension) we "might" end up getting the file with its name truncated to 64 chars.

Points 1 and 2 are not very common. Unfortunately there are some Linux install ISOs today using Rock Ridge longer than 64 char filenames distinctive feature and not using a "relaxed" Joliet extension (i.e. certain Ubuntu/Fedora/CentOS/Mageia flavors). Then serving that kind of distro from Microsoft platforms could lead to problems because of those truncated filename files.
If we serve the distro using Serva's HTTP service there's a workaround by checking the following option located at the HTTP Settings tab:

 [x] Truncate GET File names longer than 64 chars

This option (when on) will additionally try looking for a resource with its name truncated if the resource's original name was longer than 64 chars and not found on a first try.
I recommend leaving this option always checked if you are booting/installing Linux or derivatives using Serva's HTTP service.

Note
To Linux producers/distributors:
Please do not use on distribution ISOs Rock Ridge features not present on standard Joliet; they do not really help delivering better Linux boot/install systems but they can make PXE booting/installing from Microsoft platforms unnecessarily more difficult.

 

3 Booting/Installing Linux and BSD Distributions

3.1 SUSE Linux Enterprise / openSUSE Linux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  SUSE Linux Enterprise / openSUSE Linux
;-Tested on:
;  SLED-11-SP1-DVD-i586-GM-DVD1.iso
;  openSUSE-12.2-DVD-i586.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  -
[PXESERVA_MENU_ENTRY]
asset    = SUSE Linux Enterprise Desktop 11 SP1  
platform = i586
kernel   = NWA_PXE/$HEAD_DIR$/boot/i386/loader/linux
append   = initrd=NWA_PXE/$HEAD_DIR$/boot/i386/loader/initrd splash=silent vga=0x314 showopts netdevice=bootif install=http://$IP_BSRV$/$HEAD_DIR$/
ipappend = 2

SUSE Linux Enterprise / openSUSE requires Serva's HTTP server offering \NWA_PXE\ as root.

 

3.2 Red Hat Enterprise Linux / CentOS Linux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Red Hat Enterprise Linux / CentOS Linux
;-Tested on:
;  rhel-workstation-6.3-x86_64.iso
;  rhel-server-6.1-i386-dvd.iso
;  CentOS-6.4-i386-bin-DVD1.iso
;  CentOS-6.3-i386-bin-DVD1.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  For KickStart add to append  ks=http://$IP_BSRV$/$HEAD_DIR$/images/pxeboot/ks.cfg
[PXESERVA_MENU_ENTRY]
asset    = RHEL Workstation 6.3
platform = x86_64
kernel   = NWA_PXE/$HEAD_DIR$/images/pxeboot/vmlinuz
append   = initrd=NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img method=http://$IP_BSRV$/$HEAD_DIR$ noipv6 ksdevice=bootif
ipappend = 2

Red Hat Enterprise Linux / CentOS Linux requires Serva's HTTP server offering \NWA_PXE\ as root.

 

3.3 Fedora Linux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Fedora Linux 
;-Tested on:
;  Fedora-Live-Desktop-x86_64-19-1.iso
;  Fedora-19-i386-DVD.iso
;
;  Fedora-17-i686-Live-Desktop.iso
;  Fedora-17-i386-DVD.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  For Fedora-Live-Desktop-x86_64-19-1.iso copy vmlinuz & initrd.img from
;  Fedora-19-x86_64-netinst.iso \images\pxeboot\ to the asset's \isolinux\ 
[PXESERVA_MENU_ENTRY]
asset    = Fedora Live Desktop 19
platform = x86_64
kernel   = NWA_PXE/$HEAD_DIR$/isolinux/vmlinuz
;19 DVD & 17 both > kernel   = NWA_PXE/$HEAD_DIR$/images/pxeboot/vmlinuz
append   = initrd=NWA_PXE/$HEAD_DIR$/isolinux/initrd.img root=live:http://$IP_BSRV$/$HEAD_DIR$/LiveOS/squashfs.img rootfstype=auto ro rd.live.image rhgb rd.luks=0 rd.md=0 rd.dm=0
;19 DVD  > append   = initrd=NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img root=live:http://$IP_BSRV$/$HEAD_DIR$/LiveOS/squashfs.img rootfstype=auto ro rd.live.image rhgb rd.luks=0 rd.md=0 rd.dm=0
;17 both > append   = initrd=NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img inst.repo=http://$IP_BSRV$/$HEAD_DIR$

Fedora Linux requires Serva's HTTP server offering \NWA_PXE\ as root.

 

3.4 Ubuntu


3.4.1 Ubuntu LTS 12.04 Desktop Live

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Ubuntu LTS 12.04 Desktop Live
;-Tested on:
;  ubuntu-12.04.3-desktop-i386.iso
;  ubuntu-12.04.3-desktop-amd64.iso
;  ubuntu-12.04.2-desktop-i386.iso
;  ubuntu-12.04.2-desktop-amd64.iso
;  ubuntu-12.04-desktop-i386.iso
;  ubuntu-12.04-desktop-amd64.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;  ubuntu-12.04.2/3-desktop-amd64.iso requires renaming \casper\vmlinuz.efi to \casper\vmlinuz
;-Notes:
;  Get INITRD_N02.2.GZ from www.vercot.com/~serva/download/INITRD_N02.2.GZ (61 Kb)
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Ubuntu LTS 12.04.3 Desktop Live
platform = i386
kernel   = NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append   = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz,NWA_PXE/$HEAD_DIR$/casper/INITRD_N02.2.GZ boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=bootp ro

Ubuntu LTS 12.04 Desktop Live requires:

  1. \NWA_PXE\ offered as MS share NWA_PXE_SHARE with user=serva password=avres.
  2. Complementary initial ram disk INITRD_N02.2.GZ (61 Kb) providing additional drivers and a customized init script.
  3. ubuntu-12.04.2/3-desktop-amd64.iso requires renaming \casper\vmlinuz.efi to \casper\vmlinuz

When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp.

3.4.2 Ubuntu LTS 12.04 Alternate

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Ubuntu LTS 12.04 Alternate
;-Tested on:
;  ubuntu-12.04.3-alternate-amd64.iso
;  ubuntu-12.04.3-alternate-i386.iso
;-Require:
;  \NWA_PXE\ offered as as HTTP root
;-Notes:
; -
[PXESERVA_MENU_ENTRY]
asset    = Ubuntu LTS 12.04.3 Alternate
platform = amd64
kernel   = NWA_PXE/$HEAD_DIR$/install/netboot/ubuntu-installer/amd64/linux
;kernel   = NWA_PXE/$HEAD_DIR$/install/netboot/ubuntu-installer/i386/linux
append   = initrd=NWA_PXE/$HEAD_DIR$/install/netboot/ubuntu-installer/amd64/initrd.gz vga=788 mirror/country=manual mirror/http/hostname=$IP_BSRV$ mirror/http/directory=/$HEAD_DIR$ mirror/http/proxy=""
;append   = initrd=NWA_PXE/$HEAD_DIR$/install/netboot/ubuntu-installer/i386/initrd.gz vga=788 mirror/country=manual mirror/http/hostname=$IP_BSRV$ mirror/http/directory=/$HEAD_DIR$ mirror/http/proxy=""

Ubuntu LTS 12.04 Alternate requires \NWA_PXE\ offered as HTTP root.

3.4.3 Ubuntu 12.10 Desktop Live

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Ubuntu 12.10 Desktop Live
;-Tested on:
;  ubuntu-12.10-desktop-i386.iso
;  ubuntu-12.10-desktop-amd64.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;-Notes:
;  When installed on a real PC there are not passwords asked
;  When installed on VMWare a password is first asked (text mode); just hit enter
;  The GUI asks for user=ubuntu with empty password.
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Ubuntu 12.10 Desktop Live
platform = i386
kernel   = NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append   = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=bootp ro

Ubuntu 12.10 Desktop Live requires an MS share NWA_PXE_SHARE user=serva password=avres.
When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp.

 

3.5 Lubuntu

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Lubuntu 12.10 Desktop Live
;-Tested on:
;  lubuntu-12.10-desktop-i386.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;-Notes:
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Lubuntu 12.10 Desktop Live
platform = i386
kernel   = NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append   = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=bootp ro

Lubuntu 12.10 Desktop Live requires an MS share NWA_PXE_SHARE user=serva password=avres.
When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp.

 

3.6 Mint

;-Serva v2.1 Non-Windows Asset Information File
;-Boot/Install:
;  Mint 14.1 Live
;-Tested on:
;  linuxmint-14.1-mate-dvd-32bit.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;-Notes:
;  When installed on a real PC there are not passwords asked
;  When installed on VMware a password is first asked (text mode); just hit enter
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Mint 14.1 Live
platform = x86
kernel   = NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append   = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.lz boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=bootp ro

Mint 14.1 Live requires an MS share NWA_PXE_SHARE user=serva password=avres.
When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp.

 

3.7 Mageia Linux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Mageia Linux 
;-Tested on:
;  Mageia-2-i586-DVD.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  -
[PXESERVA_MENU_ENTRY]
asset    = Mageia 2
platform = i586
kernel   = NWA_PXE/$HEAD_DIR$/i586/isolinux/alt0/vmlinuz
append   = initrd=NWA_PXE/$HEAD_DIR$/i586/isolinux/alt0/all.rdz automatic=method:http,ser:$IP_BSRV$,dir:/$HEAD_DIR$/i586/,int:eth0,netw:dhcp vga=788

Mageia Linux requires Serva's HTTP server offering \NWA_PXE\ as root.

 

3.4 Debian

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Debian 6.0 Live
;-Tested on:
;  debian-live-6.0.6-i386-gnome-desktop.iso
;  debian-live-6.0.6-amd64-gnome-desktop.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;-Notes:
;  Get INITRD_N06.GZ from www.vercot.com/~serva/download/INITRD_N06.GZ (279 Kb)
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ipby=bootp by ipby=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Debian 6.0 Live
platform = i386
kernel   = NWA_PXE/$HEAD_DIR$/live/vmlinuz
append   = initrd=NWA_PXE/$HEAD_DIR$/live/initrd.img,NWA_PXE/$HEAD_DIR$/live/INITRD_N06.GZ boot=live netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ ipby=bootp NFSOPTS=-ouser=serva,pass=avres,ro config ro

Debian 6.0 Live requires an MS share NWA_PXE_SHARE user=serva password=avres.
Debian 6.0 Live requires a complementary initial ram disk INITRD_N06.GZ (279 Kb) providing additional drivers and a customized init script.
When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ipby=bootp by ipby=dhcp.

 

3.4 Snowlinux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Snowlinux 4 Glacier Live
;-Tested on:
;  snowlinux-4-glacier-i386.iso
;  snowlinux-4-glacier-amd64.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;-Notes:
;  Get INITRD_N05.GZ from www.vercot.com/~serva/download/INITRD_N05.GZ (424 Kb)
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ipby=bootp by ipby=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Snowlinux 4 Glacier Live
platform = i386
kernel   = NWA_PXE/$HEAD_DIR$/live/vmlinuz2
append   = initrd=NWA_PXE/$HEAD_DIR$/live/initrd2.img,NWA_PXE/$HEAD_DIR$/live/INITRD_N05.GZ boot=live netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ ipby=bootp NFSOPTS=-ouser=serva,pass=avres,ro  ro

Snowlinux 4 Glacier Live requires an MS share NWA_PXE_SHARE user=serva password=avres.
Snowlinux 4 Glacier Live requires a complementary initial ram disk INITRD_N05.GZ (424 Kb) providing additional drivers and a customized init script.
When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ipby=bootp by ipby=dhcp.

 

3.8 Arch Linux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Arch Linux 
;-Tested on:
;  archlinux-2013.02.01-dual.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  Alternate set of parameters for x86_64
[PXESERVA_MENU_ENTRY]
asset    = Arch Linux
platform = i686
kernel   = NWA_PXE/$HEAD_DIR$/arch/boot/i686/vmlinuz
append   = initrd=NWA_PXE/$HEAD_DIR$/arch/boot/i686/archiso.img archiso_http_srv=http://$IP_BSRV$/$HEAD_DIR$/
; platform = x86_64
; kernel   = NWA_PXE/$HEAD_DIR$/arch/boot/x86_64/vmlinuz
; append   = initrd=NWA_PXE/$HEAD_DIR$/arch/boot/x86_64/archiso.img archiso_http_srv=http://$IP_BSRV$/$HEAD_DIR$/
ipappend = 3

Arch Linux requires Serva's HTTP server offering \NWA_PXE\ as root.

 

3.9 Zorin OS

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Zorin OS 6.1 Live
;-Tested on:
;  zorin-os-6.2-core-32.iso
;  zorin-os-6.2-core-64.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;-Notes:
;  Get INITRD_N03.GZ from www.vercot.com/~serva/download/INITRD_N03.GZ (331 Kb)
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Zorin 6.1 Live
platform = 32
kernel   = NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append   = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.gz,NWA_PXE/$HEAD_DIR$/casper/INITRD_N03.GZ boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=bootp ro

Zorin OS 6.1 Live requires an MS share NWA_PXE_SHARE user=serva password=avres.
Zorin OS 6.1 Live requires a complementary initial ram disk INITRD_N03.GZ (331 Kb) providing additional drivers and a customized init script.
When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp.

 

3.10 Puppy Linux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Puppy Linux 
;-Tested on:
;  precise-5.4.3.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;  Rename puppy_precise_5.4.3.sfs to precise_5.4.3.sfs
;-Notes:
;  Get INITRD_N01.GZ from www.vercot.com/~serva/download/INITRD_N01.GZ (2.2 Mb) 
[PXESERVA_MENU_ENTRY]
asset    = Precise Puppy Linux
platform = i386
kernel   = NWA_PXE/$HEAD_DIR$/VMLINUZ
append   = initrd=NWA_PXE/$HEAD_DIR$/INITRD.GZ,NWA_PXE/$HEAD_DIR$/INITRD_N01.GZ netpath=http://$ip_bsrv$/$HEAD_DIR$/
ipappend = 2

Precise Puppy Linux requires Serva's HTTP server offering \NWA_PXE\ as root.
Puppy PXE boot requires a complementary initial ram disk INITRD_N01.GZ (2.2 Mb) providing net drivers and a customized init script handling the network initialization and file retrieve.

 

3.11 Bodhi Linux

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Bodhi Linux 2.2.0 Live
;-Tested on:
;  bodhi-2.2.0-32.iso
;  bodhi-2.2.0-64.iso
;-Require:
;  \NWA_PXE\ offered as MS share NWA_PXE_SHARE user=serva password=avres
;-Notes:
;  Get INITRD_N04.GZ from www.vercot.com/~serva/download/INITRD_N04.GZ (473 Kb)
;  When using Serva as proxyDHCP the external DHCP server must be able to answer 
;   to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp
[PXESERVA_MENU_ENTRY]
asset    = Bodhi 2.2.0 Live
platform = 32
kernel   = NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append   = showmounts toram root=/dev/cifs initrd=NWA_PXE/$HEAD_DIR$/casper/initrd.gz,NWA_PXE/$HEAD_DIR$/casper/INITRD_N04.GZ boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=bootp ro

Bodhi Linux 2.2.0 Live requires an MS share NWA_PXE_SHARE user=serva password=avres.
Bodhi Linux 2.2.0 Live requires a complementary initial ram disk INITRD_N04.GZ (331 Kb) providing additional drivers and a customized init script.
When using Serva as proxyDHCP the external DHCP server must be able to answer to BOOTP requests; if it fails try replacing ip=bootp by ip=dhcp.

 

3.12 Jeoss Linux

Jeoss is a non-PAE i586 server oriented mini distribution.

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Jeoss Linux
;-Tested on:
;  JeOSS-U-LTS-8.04.3-i386.R1.B1.1308385923.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  -
[PXESERVA_MENU_ENTRY]
asset    = Jeoss 8.04
platform = non-PAE i586
kernel   = pxechain.cbt
append   = ::NWA_PXE/$HEAD_DIR$/install/pxelinux.0

Jeoss Linux requires Serva's HTTP server offering \NWA_PXE\ as root.
The interactive install will ask you for the HTTP server IP and path to Jeoss components; remember at that moment you have to provide a full url i.e.

http://192.168.20.1/head_dir_name 

Jeoss can be installed on head-less systems (no-keyboard/no-monitor) completely controlled by a serial terminal emulator. If you need this feature you can set Serva menu system for simultaneously being displayed through a serial connection by adding

SERIAL 0 115200 0
CONSOLE 1

as the two first lines of Serva's PXE/BINL menu.def. Serva will display a text version of its menu on COM 1 at 115200 bps.

 

3.13 OpenBSD

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  OpenBSD 
;-Tested on:
;  install52.iso    (i386)
;  install52.iso    (amd64)
;-Require:
;  \NWA_PXE\ offered as HTTP root
;  Rename \5.2\i386\TRANS.TBL to index.txt
;-Notes:
;  Get pxeboot_N07.0 from www.vercot.com/~serva/download/pxeboot_N07.0 (78 KB)
;  Create \5.2\i386\etc\boot.conf  containing a single line indicating 
;  the booting kernel i.e. "boot bsd.rd" (w/o quotes)
[PXESERVA_MENU_ENTRY]
asset    = OpenBSD 5.2
platform = i386
kernel   = pxechain.cbt
append   = ::NWA_PXE/$HEAD_DIR$/5.2/i386/pxeboot_N07.0

OpenBSD requires:

  1. Serva's HTTP server offering \NWA_PXE\ as root.
  2. Renaming \5.2\i386\TRANS.TBL to \5.2\i386\index.txt
  3. Custom NBP pxeboot_N07.0 (78 KB).
  4. Creation of \5.2\i386\etc\boot.conf containing at least a single line indicating the booting kernel i.e. "boot bsd.rd" (w/o quotes)


Network retrieving OpenBSD sets:

From Serva repository i.e.

Let's install the sets!  
Location of sets? (cd disk ftp http or 'done') [cd] http
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
Server? (IP address, hostname, list#, 'done' or '?') 192.168.20.1
Server directory? [pub/OpenBSD/5.2/i386] OpenBSD_52_i386/5.2/i386

From Internet i.e.

Let's install the sets!  
Location of sets? (cd disk ftp http or 'done') [cd] http
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
Server? (IP address, hostname, list#, 'done' or '?') openbsd.cs.fau.de
Server directory? [pub/OpenBSD/5.2/i386] 

 

4 Installing Native Hypervisors

4.1 VMware VMvisor

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  VMware VMvisor
;-Tested on:
;  VMware-VMvisor-Installer-5.1.0-799733.x86_64.iso
;  VMware-VMvisor-Installer-4.0.0-164009.x86_64.iso
;-Require:
;  5.x
;   Edit BOOT.CFG deleting all the "/" from variables "kernel" and "module"
;  4.x
;   Use alternative append
;-Notes:
;  -
[PXESERVA_MENU_ENTRY]
asset    = VMware ESXi-5.1.0
platform = x86_64
kernel   = NWA_PXE/$HEAD_DIR$/mboot.c32
append   = -c NWA_PXE/$HEAD_DIR$/BOOT.CFG
;append   = NWA_PXE/$HEAD_DIR$/vmkboot.gz --- NWA_PXE/$HEAD_DIR$/vmkernel.gz --- NWA_PXE/$HEAD_DIR$/sys.vgz --- NWA_PXE/$HEAD_DIR$/cim.vgz --- NWA_PXE/$HEAD_DIR$/ienviron.tgz --- NWA_PXE/$HEAD_DIR$/image.tgz --- NWA_PXE/$HEAD_DIR$/install.tgz
ipappend = 2

VMware VMvisor requires:
5.x: Editing BOOT.CFG deleting all the "/" from variables "kernel" and "module".
4.x: Use alternative append

 

4.2 Citrix XenServer

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Citrix XenServer
;-Tested on:
;  XenServer-6.1-install-cd.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  1-Alternative append considers answer file unattend.xml within head directory.
;  2-Muli-homed systems should add answerfile_device=ethX or answerfile_device=MAC 
;    specifying either the ethernet device number or the MAC address of the device.
[PXESERVA_MENU_ENTRY]
asset    = XenServer 6.1
platform = x86
kernel   = mboot.c32
append   = NWA_PXE/$HEAD_DIR$/boot/xen.gz dom0_max_vcpus=1-2 dom0_mem=752M,max:752M com1=115200,8n1 console=com1,vga --- NWA_PXE/$HEAD_DIR$/boot/vmlinuz xencons=hvc console=hvc0 console=tty0 --- NWA_PXE/$HEAD_DIR$/install.img
;append   = NWA_PXE/$HEAD_DIR$/boot/xen.gz dom0_max_vcpus=1-2 dom0_mem=752M,max:752M com1=115200,8n1 console=com1,vga --- NWA_PXE/$HEAD_DIR$/boot/vmlinuz xencons=hvc console=hvc0 console=tty0 answerfile=http://$IP_BSRV$/$HEAD_DIR$/unattend.xml install --- NWA_PXE/$HEAD_DIR$/install.img
        

Citrix XenServer requires Serva's HTTP server offering \NWA_PXE\ as root.
The interactive install will ask you for the HTTP server IP and path to XenServer components; remember at that time you have to provide a full url i.e.

http://192.168.20.1/head_dir_name 

Citrix XenServer can be installed on head-less systems (no-keyboard/no-monitor) completely controlled by a serial terminal emulator. If you need this feature you can set Serva menu system for simultaneously being displayed through a serial connection by adding

SERIAL 0 115200 0
CONSOLE 1

as the two first lines of Serva's PXE/BINL menu.def. Serva will display a text version of its menu on COM 1 at 115200 bps.

 

5 Booting Recovery Tools

Notes
  1. Please consider when the memdisk technique is used here it is only suitable for PXE booting small ISOs and requires the Client's RAM memory > than 2.2 times the ISO file size
  2. If you use Enforced Windowed TFTP, avoid window-size higher than 4.

5.1 Hiren's Boot CD

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Hiren's
;-Tested on:
;  Hiren's.BootCD.15.2.iso
;  Hiren's.BootCD.Pro.2.3.iso
;-Require:
;  -
;-Notes:
;  Client's memory must be > 2.2 * ISO size
[PXESERVA_MENU_ENTRY]
asset    = Hirens Boot CD 15.2
platform = x86
kernel   = memdisk
append   = iso initrd=NWA_PXE\$HEAD_DIR$\Hiren's.BootCD.15.2.iso raw

Hiren's requires its ISO directly copied under the corresponding head directory.

 

5.2 Trinity Rescue Kit

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  Trinity Rescue Kit
;-Tested on:
;  trinity-rescue-kit.3.4-build-372.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;  Get initrd_N08.trk from www.vercot.com/~serva/download/initrd_N08.trk (11 MB)
;-Notes:
;  1) Extracting TRK’s ISO fails with daemon-tools and 7s; try MagicIso instead
;  2) Alternative append considers HTTP custom port 81
[PXESERVA_MENU_ENTRY]
asset    = TRK
platform = x86
kernel   = NWA_PXE/$HEAD_DIR$/kernel.trk
append   = initrd=NWA_PXE/$HEAD_DIR$/initrd_N08.trk trkhttp=http://$IP_BSRV$/$HEAD_DIR$/trk3/trkramfs root=/dev/ram0 ramdisk_size=180000 vga=788 trkmenu  ip=::::::dhcp splash=verbose pci=conf1
;append   = initrd=NWA_PXE/$HEAD_DIR$/initrd_N08.trk trkhttp=http://$IP_BSRV$:81/$HEAD_DIR$/trk3/trkramfs root=/dev/ram0 ramdisk_size=180000 vga=788 trkmenu  ip=::::::dhcp splash=verbose pci=conf1

TRK requires:

  1. Serva's HTTP server offering \NWA_PXE\ as root.
  2. Custom initrd initrd_N08.trk (11 MB).

 

5.3 BartPE Boot CD

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  BartPE Boot CD
;-Tested on:
;  BartPE.iso
;-Require:
;  -
;-Notes:
;  Client's memory must be > 2.2 * ISO size
[PXESERVA_MENU_ENTRY]
asset    = BartPE Boot CD
platform = x86
kernel   = memdisk
append   = iso initrd=NWA_PXE\$HEAD_DIR$\BartPE.iso raw

BartPE Boot CD requires its ISO directly copied under the corresponding head directory.

 

5.4 GParted

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  GParted
;-Tested on:
;  gparted-live-0.14.1-6-i486.iso
;-Require:
;  \NWA_PXE\ offered as HTTP root
;-Notes:
;  -
[PXESERVA_MENU_ENTRY]
asset    = GParted Live
platform = x86
kernel   = NWA_PXE/$HEAD_DIR$/live/vmlinuz
append   = initrd=NWA_PXE/$HEAD_DIR$/live/initrd.img boot=live config union=aufs noswap noprompt vga=788 fetch=http://$IP_BSRV$/$HEAD_DIR$/live/filesystem.squashfs

GParted requires Serva's HTTP server offering \NWA_PXE\ as root.

 

6 Booting DOS/FreeDOS (BIOS upgrade)

;-Serva v2.1 Non-Windows Asset Information File 
;-Boot/Install:
;  FreeDOS 1.0/1.1
;-Tested on:
;  fdboot.img
;-Require:
;  -
;-Notes:
;  -
[PXESERVA_MENU_ENTRY]
asset    = FreeDOS 1.0
platform = x86
kernel   = memdisk
append   = initrd=NWA_PXE\$HEAD_DIR$\fdboot.img

DOS/FreeDOS requires its IMG file directly copied under the corresponding head directory.
DOS/FreeDOS images can be easily customized including i.e. BIOS upgrade executables.

On Linux environments i.e.

# mount -o loop ./fdboot.img /mnt 
...do the changes on the image
# umount /mnt

On Windows environments by using i.e. WinImage.

 

7 Advanced

On Serva PXE/BINL - AN02: Windows Install Adv & WinPE Boot we have seen how Serva's repository strategy can be split when booting from Serva other repositories like WDS/MDT/SCCM, etc. In those cases Serva TFTP delivers only a Boot.wim that contains the information to boot and connect to the services/resources offered by WDS/MDT/SCCM own stores.
In the Linux world something very similar happens. Initially Serva TFTP delivers a small Linux executive made of a kernel file and a small file system (ram disk image) usually compressed into a single file. When booting, this executive receives as command line parameters the transfer protocol and the network location of the repository offering the bulk of the boot/install components. The difference between Microsoft and Linux strategies at this point shows how Microsoft today relies on an image based deployment (i.e. Install.wim) while Linux still uses the conventional multi-file transfer approach.
So far all the presented Linux ServaAsset.inf files on this AN give instructions to the booting kernel for retrieving the rest of files using HTTP or MS share services pointing back to Serva itself. You can easily change this making the kernel to look for the required resources in some other HTTP, NFS, FTP server etc. (including Internet hosted servers). Always remember on these situations Serva repository will still need to keep under its control the corresponding initially TFTP transferred components of the installation.

 

8 Troubleshooting

8.1 Common errors when creating your ServaAsset.inf:

8.1.1 Variables kernel and append use paths to network retrieved resources. Making mistakes when writing these paths is a very common source of frustration. If you ever get a path that looks like i.e.

kernel   = C:/SERVA_ROOT/NWA_PXE/$HEAD_DIR$/images/pxeboot/vmlinuz

you know you are in trouble; the kernel vmlinuz is a file that will always be delivered by TFTP then its path cannot ever begin with "C:". Any time you see a local disk reference on the path of a network transferred resource you surely made a mistake.
Whenever you write a path start thinking of the protocol that will transfer the associated resource (TFTP, HTTP, FTP, CIFS, etc ) and then consider where is the corresponding service root directory pointing at. Surely this way you will make fewer mistakes.

8.1.2 Please consider there are situations where these two paths could produce different results

 /NWA_PXE/$HEAD_DIR$/zzzz/xxxx.yyy
NWA_PXE/$HEAD_DIR$/zzzz/xxxx.yyy

While the first one makes an absolute reference to the TFTP root the second one makes a relative reference. This is a common mistake when chain-loading NBPs (Network Boot Programs).

8.1.3 Please consider (specially if you have no much Linux experience) there are situations where one of these two paths could lead to an error.

 NWA_PXE\$HEAD_DIR$\zzzz\xxxx.yyy

 NWA_PXE/$HEAD_DIR$/zzzz/xxxx.yyy

While the first one is the typical "MS Windows" form of a path the second one is the typical "Unix/Linux" form of a path. Please consider not every piece of code out there is able to handle both forms.

8.1.4 Multi-homed Linux (and derivatives) booting interface.
Multi-homed Linux system are known for sometimes presenting problems on PXE scenarios when choosing the booting network interface. A ServaAsset.inf working on a single-NIC system might fail on a multi-NIC situation. Most Linux distributions have kernel parameters (i.e. netdevice=bootif) or pxelinux parameters (i.e. ipappend = 2) that help in solving this problem.

8.2 Linux aborted installs because of failed HTTP transfers.
Please see point 2.5

 

9 Final words

Serva PXE/BINL non-Windows Boot/Install was basically designed as a simple alternative to the conventional Linux based PXE install systems. Users from the MS Windows world sure will find fewer obstacles now when venturing themselves into the non-Windows net boot/install arena.

If you find Serva useful please consider contributing to the project by purchasing Serva's "Supporter" build. Supporter builds make possible Serva's maintenance and future development..

Serva bugs, comments, or ideas on how to improve the information contained in this document please contact me here.

Originally published 02/01/2013