Video Screencast Help
Symantec Secure Login will be live on Connect starting February 25. Get the details here.

Running Symantec Ghost Over a Linux based PXE server

Created: 18 Mar 2014
Language Translations
bl_fowler's picture
0 0 Votes
Login to vote

Let me start off by saying, this was done to reduce the need for loading network drivers on the WinPE discs and so far has worked for most systems without issue, with that being said, we have had a few machines that have displayed issues with the GPT partition.  When I spoke to some Symantec techs/engineers on the issue I was informed the Linux binaries have not been updated since the initial time the product was released with these binaries - would be nice to have them updated.  In my opinion, it is more convenient to boot to one source, and update the Custom Linux Distro that is used to boot and run Ghost, than to change the discs for each model of machine.  We ended up having 10 different discs to image our various machines as each one had a disc made to address the differences in the network driver.  The Linux Distro has offered the benefit of not having to set-up a boot media for each new machine, only needing to update when the driver had been changed enough to make the newest system have an issue (Once in 2 years).  This distro and ghost binaries have been working with MOST machines!! about 95% of what we are currently using and receiving.

NOW for my directions on how the system was set-up:

Steps to set-up the Linux PXE Ghost Server:

  1.  Install the current version of Edubuntu – with LTSP.
  2. On initial install set the following settings to be manual on Eth1 so it will connect to the network properly and maintain the proper hostname:


IP Address: <Static IP if assigned>

Netmask:  <Designated netmask>

Gateway: <Gateway if needed>

DNS Servers:  <Specified DNS Server if you have one>

Domain Lookup: <>

Start the update/upgrade process by pressing Ctrl-Alt-T (Which will open a terminal window)

                First set the root password by doing the following commands:

                Type: sudo su –  <Enter>

                Type: (This users password)  <Enter>

                You should get a prompt that looks like this:


Type:  apt-get update  <Enter>

Then when it finishes updating you can type:

Apt-get upgrade

Answer yes by pushing y <Enter> to do the upgrade when asked.

Use this prompt to install software:

The template for installing software is as follows:

Apt-get install  <Package Name>

(Read all prompts and answer appropriately)

  1. Install the following software – You can check the guide and see if there are specific instructions on loading, otherwise load using command line apt-get install, or through synaptic:
    1. Synaptic
    2. Samba
    3. Cifs-utils
    4. Webmin
    5. Bind9

These two packages are not available from the repositories and must be installed separately.

  1. And upload the DD_RHELP Folder – and create a link for DD_RHELP in /usr/bin
  2. Add the Ghost files – also install all files from the Ghost package in /usr/bin
  1. Open a terminal and sudo updatedb
  2. In the terminal type: locate memdisk
  3. Copy the memdisk from syslinux to the following path:  /var/lib/tftpboot/ltsp/i386/
  4. Create and copy an iso of the disc you want to load to the same directory as above, then add the labels as defined below.

You will need to point the DHCP Server to look for the path the ghost disc is looking for to the local machine – and set up a Samba share that is linked and shared on the local system:

The access is defined in the following path:  /etc/fstab

This is an example of the file used to set-up this connection:

//<serverlocation1>/e  /media/samba  cifs  username=<Username>,password=<Password>  0  0            

//<serverlocation2>/images /media/samba2 cifs username=<Username>,password=<Password> 0 0

Or another alternate:

<Serverlocation>:E /media/samba cifs user=<Username>,pass=<Password> 0 0

Modifications to PXEBOOT server

1. Enabled local DNS server

                a) apt-get install bind9

                b) wget dpkg -i webmin_1.590_all.deb

                c) navigate to http://localhost:10000/ in web browser

                                i) Servers -> BIND DNS Server

                                ii) Click on Create master zone

                                iii) Domain Name: <Domain>     

                                                Email address: doesn't matter, but has to be present - root@localhost.localdomain

                                iv) Click Create

                                v) Click on the <Domain name> zone

                                vi) Navigate to Address records (A records)

                                vii) Create an A record for <Name of shared system>with the PXEBOOT server's IP for the PXE network (

                                viii) Save, Apply zone, and Apply Configuration

                d) verify functionality by going to the command line on the PXEBOOT server and typing "nslookup <Serverlocation1>.<Domain Name> localhost" and verifying that the answer returned contains the proper IP

2. Modified DHCP server config to use local DNS server

                a) Open /etc/ltsp/dhcpd.conf

                b) Modify the line for dns-name-server to reflect the IP of the PXEBOOT server -

                c) Modify the line for domain-name to reflect the following - “<Domain Name>”

3. Exported SAMBA share of <serverlocation1> & <Severlocation2>

                a) Ensure that <Shared location> is mounted to /media/samba

                b) /etc/fstab should contain the following: # Samba

//<serverlocation1>/e  /media/samba  cifs  username=<Username>,password=<Password>  0  0

//<Serverlocation2>/images /media/samba2 cifs  username=<Username>,password=<Password>  0  0

i) verify using the 'mount' command and by navigating to /media/samba and verifying the contents

                c) create a user account for Samba to use (Administrator)

                                i) useradd Administrator

                                ii) smbpasswd -a Administrator

                                iii) Enter the password stored in /etc/samba/credentials

                                                Repeat the above for pxeghost

                d) Modify /etc/samba/smb.conf to contain the following:


                                                comment = "ISO Boot Images"

                                                path = /media/samba

                                                guest ok = yes

                                                browseable = yes

                                                valid users = Administrator


                                                Comment = ”ISO Boot Images”

                                                Path = /media/samba2

                                                Guest ok = yes

                                                Browseable = yes

                                                valid users = pxeghost

                e) Restart samba (/etc/init.d/smbd restart)

Setting up the Menu for selection:

  1.  Go to the following path:
    1. /var/lib/tftpboot/ltsp/i386/pxelinux.cfg
  2. Open the file – default (will need to be root to change it)
  3. The original file will start up the terminal – you can add labels and customize this list – see examples below:

Original default file:

default linux

prompt 0

label linux

  kernel vmlinuz

  append ramdisk_blocksize=4096 initrd=initrd root=/dev/ram0 ramdisk_size=524288 console=ttyS3

  ipappend 1

Customized default file:

                default vesamenu.c32

timeout 600

ontimeout <Selected Label> e.g. Optiplex790

prompt 0

menu include pxelinux.cfg/pxe.conf

label BootLocal

                localboot 0

                text help

                Boot to Local Hard Drive


##label ltsp

##kernel vmlinuz

##append ro initrd=initrd.img root=/dev/nbd0 init=/sbin/init-ltsp quiet splash plymouth:force-splash vt.handoff=7 nbdroot=:ltsp_i386

##text help

##Linux Terminal Server Project Boot


label Optiplex790

kernel memdisk

append initrd=Optiplex790.iso iso raw

text help

Optiplex 790 - Any version


label Optiplex780

kernel memdisk

append initrd=Optiplex780.iso iso raw

text help

Optiplex 780 - Any version


label Custom Version Linux

kernel memdisk

append initrd=CustomLinux.iso iso raw

text help

Custom Version of Linux


label ubcd4win

kernel memdisk

append initrd=UBCD4Windows.iso iso raw

text help

Ultimate Boot CD 4 Windows


label puppy Linux distro

kernel /<Folder for OS>/vmlinuz

initrd //<Folder for OS>/initrd.gz

append boot=live pfix=copy nosmp root=nbd0 nbdroot=//<Folder for OS>

  1. Make sure you do the following commands in the command line:
    1. updatedb
    2. Locate vesamenu.c32 (Once you know the location, you can copy this file using command line or nautilus) – Copy this file to /var/lib/tftpboot/ltsp/i386/
  2. You will also need to create a pxe.conf file in,  /var/lib/tftpboot/ltsp/i386/
    1. See the following example:

                menu title PXE Ghost Server

MENU BACKGROUND pxelinux.cfg/logo.png

##logo.png needs to be 640x480px

noescape 1

allowoptions 1

prompt 0

menu width 40

menu rows 14

menu tabmsgrow 24

menu margin 10

menu color border          30;44      #40000000 #00000000  std

menu color title                1;35;44    #0099FF #00000000 std

Appendix Puppy

Getting Puppy to boot over PXE (Taken from the following link)

Create YOUR Distrubution of Puppy Linux install any tools you might need or want.  When setting up YOUR distro – be sure to install the Ghost (Linux) Binaries and then create your save file – as this is how the save file will have what you need to run ghost

These binaries were copied into thr /usr/bin folder and made sure they were executable.

Save your distro in the #.#.#.sfs file, or whatever you named it.  Then create a disc of the current distribution, or a thumb drive (you can still pull the required files from either).

Here are a few recommended programs that may be useful:

  1. Testdisk
  2. mc
  3. nmap
  4. chntpw
  5. ddrescue
  6. etherape
  7. iptraf

(I have used the same instructions for the current version of Puppy Linux 5.7.

Download the .iso for the most current distro 5.2.8 (Ubuntu Compatible)

Mount it and extract the following files:

  • Initrd.gz
  • Vmlinuz
  • #.#.#.sfs

Mount the image (.iso) as follows

Mount –o loop lupu_5.2.5.iso /mnt

Then we need to work with these files:

The Lupu_5.2.5.sfs (or whatever version you use) will need to be packed inside the initrd.gz file, and we do that by doing the following:

  1. Make a working directory -  mkdir /puppycustom
  2. Change into that directory – cd /puppycustom
  3. Then extract the intird.gz into this directory – zcat /Location/of/initrd.gz | cpio –I –H newc -d
  4. Move the Lupu_5.2.5.sfs file into this directory – mv /location/of/Lupu_5.2.5.sfs /destination/folder
  5. Then re-pack the initrd.gz – find | cpio –o –H newc | gzip -4 > ../newinitrd.gz

Then add the vmlinuz and newinitrd.gz to the appropriate location in the tftpboot directory:

/var/lib/tftpboot/ltsp/i386/Designatedfolder -   /var/lib/tftpboot/ltsp/i386/GhostPup/

Then the following information needs to be added to the following file:


LABEL GhostLinux

MENU LABEL Ghost Linux Distro

Kernel GhostPup/vmlinuz

Append initrd =GhostPup/newinitrd.gz

text help

Linux Distro with Symantec Ghost


You can now boot from this distro on the PXEBoot Server

I found the need to create a Bash Script to mount the shared folders when booting to Puppy – created a file called with the following code:


echo making and mounting the needed directories, Please wait ....

# make the directories to mount ghost images

mkdir /mnt/images

mkdir /mnt/images2

# Insert mount points into /etc/fstab

echo '// /mnt/images cifs username=<username>,password=<Password> 0 0' >> /etc/fstab

echo '// /mnt/images2 cifs username=<username>,password=<Password> 0 0' >> /etc/fstab

# Mount the new mout points in fstab

echo currently mounting:

sleep 2

mount -a

echo If there are no errors present, all drives mounted!

Please note the Puppy Linux version was customized, then a Puppy Live CD was made from that customized version – but some of the settings did not save – i.e. FSTAB settings and network/video settings – this is why the need to create that BASH file.

Please see the section at the end that relates to how this was set-up for the Puppy Ghost Distro created to supply the PXE Boot server with access to these shares.

 Do IFCONFIG and see what IP the PXE Server is giving for the internal network, this is the DHCP Server address (In our case – this is the number given).

 This could be smbd, smb, or samba – may need to find the one that works for you.

 This file allows the GUI selection once the system is booted to PXE.

 This is searching for it in the pxelinux.cfg folder – and you can name the file whatever you want – just make sure it is reflected properly here

 There are 7 zeros here

 There are 8 zeros here

 This is the version i.e 5.4.3

 Used in my distro

 Ensure that you make this executable:

chmod –x or through a gui (Thunar, Nautilus, etc….)

Hopefully this might help someone else - give an option on how to set up the service to image machines in an alternative manner and gain support for the update of the Linux binaries so they can be used with future technologies.