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:
- Install the current version of Edubuntu – with LTSP.
- 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:
Hostname:<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: <mydomain.com>
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)
- 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:
- Synaptic
- Samba
- Cifs-utils
- Webmin
- Bind9
These two packages are not available from the repositories and must be installed separately.
- And upload the DD_RHELP Folder – and create a link for DD_RHELP in /usr/bin
- Add the Ghost files – also install all files from the Ghost package in /usr/bin
- Open a terminal and sudo updatedb
- In the terminal type: locate memdisk
- Copy the memdisk from syslinux to the following path: /var/lib/tftpboot/ltsp/i386/
- 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 http://prdownloads.sourceforge.net/webadmin/webmin... 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 (192.168.0.254)
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 - 192.168.0.254
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:
[images]
comment = "ISO Boot Images"
path = /media/samba
guest ok = yes
browseable = yes
valid users = Administrator
[images2]
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:
- Go to the following path:
- /var/lib/tftpboot/ltsp/i386/pxelinux.cfg
- Open the file – default (will need to be root to change it)
- 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
endtext
##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
##endtext
label Optiplex790
kernel memdisk
append initrd=Optiplex790.iso iso raw
text help
Optiplex 790 - Any version
endtext
label Optiplex780
kernel memdisk
append initrd=Optiplex780.iso iso raw
text help
Optiplex 780 - Any version
endtext
label Custom Version Linux
kernel memdisk
append initrd=CustomLinux.iso iso raw
text help
Custom Version of Linux
endtext
label ubcd4win
kernel memdisk
append initrd=UBCD4Windows.iso iso raw
text help
Ultimate Boot CD 4 Windows
Endtext
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>
- Make sure you do the following commands in the command line:
- updatedb
- 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/
- You will also need to create a pxe.conf file in, /var/lib/tftpboot/ltsp/i386/
- 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:
- Testdisk
- mc
- nmap
- chntpw
- ddrescue
- etherape
- iptraf
http://sirlagz.net/2011/06/13/how-to-boot-puppy-5-2-5-over-pxe/
(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:
- Make a working directory - mkdir /puppycustom
- Change into that directory – cd /puppycustom
- Then extract the intird.gz into this directory – zcat /Location/of/initrd.gz | cpio –I –H newc -d
- Move the Lupu_5.2.5.sfs file into this directory – mv /location/of/Lupu_5.2.5.sfs /destination/folder
- 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:
/var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
LABEL GhostLinux
MENU LABEL Ghost Linux Distro
Kernel GhostPup/vmlinuz
Append initrd =GhostPup/newinitrd.gz
text help
Linux Distro with Symantec Ghost
endtext
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 ghostmount.sh with the following code:
#!/bin/bash
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 '//192.168.0.254/images /mnt/images cifs username=<username>,password=<Password> 0 0'>> /etc/fstab
echo '//192.168.0.254/images2 /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.