CentosWorkstation: Difference between revisions

From MDWiki
Jump to navigationJump to search
 
(151 intermediate revisions by 4 users not shown)
Line 176: Line 176:
title Update Image (SystemImager) (/data is preserved)
title Update Image (SystemImager) (/data is preserved)
     root (hd0,0)
     root (hd0,0)
     kernel /kernel noexec=off root=/dev/ram ramdisk_blocksize=1024 ramdisk_size=80000 IMAGESERVER=152.98.195.188 IMAGENAME=centos_golden_client_update SKIP_LOCAL_CFG=y
     kernel /kernel noexec=off root=/dev/ram ramdisk_blocksize=1024 ramdisk_size=180000 IMAGESERVER=152.98.195.188 IMAGENAME=centos_golden_client_update SKIP_LOCAL_CFG=y
     initrd /initrd.img
     initrd /initrd.img
EOF
EOF
Line 188: Line 188:
These steps are for creating and sending the update image ("centos_golden_client_update"), which can be installed on a real workstation from the grub menu once the initial image has been loaded. '''These steps can be run any number of times.''' This image does not perform a full partitioning on the real workstation local disk  (only /boot, / and swap are repartitioned; /data is unchaged). VM stands for commands run on Virtual Centos (Virtual Machine) and IS stands for commands to the image server.  
These steps are for creating and sending the update image ("centos_golden_client_update"), which can be installed on a real workstation from the grub menu once the initial image has been loaded. '''These steps can be run any number of times.''' This image does not perform a full partitioning on the real workstation local disk  (only /boot, / and swap are repartitioned; /data is unchaged). VM stands for commands run on Virtual Centos (Virtual Machine) and IS stands for commands to the image server.  
* VM: Edit /etc/systemimager/updateclient.local.exclude to specify any directories the contents of which should not be copied onto the real workstation, such as the contents to external nfs mounts (e.g. /melon1/*)
* VM: Edit /etc/systemimager/updateclient.local.exclude to specify any directories the contents of which should not be copied onto the real workstation, such as the contents to external nfs mounts (e.g. /melon1/*)
* VM: If not created already, make /nvidia directory for installing NVIDIA driver
* VM: Make /nvidia directory, prepare scripts and download driver for installing NVIDIA driver automatically once the system is imaged
** mkdir /nvidia && cd /nvidia && wget [http://us.download.nvidia.com/XFree86/Linux-x86_64/180.51/NVIDIA-Linux-x86_64-180.51-pkg2.run NVIDIA-Linux-x86_64-180.51-pkg2.run]
** mkdir /nvidia && cd /nvidia && wget [http://us.download.nvidia.com/XFree86/Linux-x86_64/180.51/NVIDIA-Linux-x86_64-180.51-pkg2.run NVIDIA-Linux-x86_64-180.51-pkg2.run]
** Create /nvidia/install-driver and <code>chmod 755 /nvidia/install-driver</code>:
<code><pre>
#!/bin/sh
if /usr/bin/test ! -e /nvidia/driver.installed && /sbin/lspci | /bin/egrep -qi ' VGA.*nvidia'; then
        /sbin/init 3
        /bin/sleep 3
        /bin/sh /nvidia/NVIDIA-Linux-x86_64-180.51-pkg2.run -s -X -N
        /bin/touch /nvidia/driver.installed
        /sbin/init 5
        /bin/sleep 3
fi
</pre></code>
** Add rules in /etc/sudoers to allow any user to run it as root
<code><pre>
%BMMG    ALL=/nvidia/install-driver
%MDGroup  ALL=/nvidia/install-driver
%SBeatson ALL=/nvidia/install-driver
%KobeLab  ALL=/nvidia/install-driver
</pre></code>
* VM: Prepare the image for image server, currently on lychee (IP Address 152.98.195.188). This initiates an rsync server process. The partitioning on disk /dev/sda is excluded
* VM: Prepare the image for image server, currently on lychee (IP Address 152.98.195.188). This initiates an rsync server process. The partitioning on disk /dev/sda is excluded
** /usr/sbin/si_prepareclient --server 152.98.195.188 -e sda
** /usr/sbin/si_prepareclient --server 152.98.195.188 -e sda
Line 213: Line 233:
title Update Image (SystemImager) (/data is preserved)
title Update Image (SystemImager) (/data is preserved)
     root (hd0,0)
     root (hd0,0)
     kernel /kernel noexec=off root=/dev/ram ramdisk_blocksize=1024 ramdisk_size=80000 IMAGESERVER=152.98.195.188 IMAGENAME=centos_golden_client_update SKIP_LOCAL_CFG=y
     kernel /kernel noexec=off root=/dev/ram ramdisk_blocksize=1024 ramdisk_size=180000 IMAGESERVER=152.98.195.188 IMAGENAME=centos_golden_client_update SKIP_LOCAL_CFG=y
     initrd /initrd.img
     initrd /initrd.img
EOF
EOF
</pre></code>
* IS: Create the file /var/lib/systemimager/scripts/post-install/97centos_golden_client_update.nvidia containing the following text, replacing '''$KVERSION''' with the actual version given by <code>uname -r</code> within the VM:
<code><pre>
uname () { echo $KVERSION; }
sh /nvidia/NVIDIA-Linux-x86_64-180.51-pkg2.run -a -q -X
</pre></code>
</pre></code>
* IS: Start rsync server
* IS: Start rsync server
Line 231: Line 246:
Note: Any kernel updates will probably require also rebuilding initrd.img as described above ([[#Editing Centos' initrd.img to read real workstation HDD drives]]). As such it is suggested that the system is usually updated without any kernel updates:
Note: Any kernel updates will probably require also rebuilding initrd.img as described above ([[#Editing Centos' initrd.img to read real workstation HDD drives]]). As such it is suggested that the system is usually updated without any kernel updates:
* yum update --exclude=kernel
* yum update --exclude=kernel
=== Sudo ===
Matt and Roy are added to /etc/sudoers


=== Yum ===
=== Yum ===
The order is important:
* kernel-devel kernel-headers # Make sure these match the current kernel
* kernel-devel kernel-headers # Make sure these match the current kernel
* gcc
* gcc gcc-c++
* zsh
* zsh
* lyx
* firefox # i386 only; yum erase firefox.x86_64
* netcdf netcdf-devel
* fonts-chinese
* fonts-chinese
* kile
* kile
Line 257: Line 277:
* ftgl-utils
* ftgl-utils
* freetype-devel
* freetype-devel
* strace
* tcl tcl-devel tk tk-devel
* qt4 qt4-devel
* unrar
* k3b
* java-1.6.0-openjdk-plugin # Must erase java-1.6.0-openjdk.x86_64 first (a variant is reinstalled)
* pidgin
* imake
* fltk fltk-devel
* xforms xforms-devel
* gdb libXt libXt-devel libXext libXext-devel automake alsa-lib-devel arts arts-devel pulseaudio pulseaudio-libs pulseaudio-libs-devel nspluginwrapper.i386 curl
* scons thunderbird gftp wxGTK-2.8.9-1.el5.{i386,x86_64} R emacs gnuplot libglade2-devel vnc gsl glib-devel glib2-devel gsl-devel rdesktop
* subversion git git-core
* xmms
* eclipse-cdt\* eclipse-jdt\*
* openbabel
* gv
* xinetd xorg-x11-server-Xvnc-source.x86_64
=== Extra Packages for Enterprise Linux ===
* rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
=== Skype ===
* wget http://www.skype.com/go/getskype-linux-centos
* rpm -iv skype-2.0.0.72-centos.i586.rpm


=== Other ===
=== Other ===
* /usr/local is copied from the Fedora 7 workstations created by Mitch and AJ
* /usr/local is copied from the Fedora 7 workstations created by Mitch and AJ
* Pymol
** To get the pymol in /opt/pymol working, libstdc++.so.5 had to be installed:
*** rpm -iv [ftp://ftp.muug.mb.ca/mirror/centos/5.3/os/i386/CentOS/compat-libstdc++-33-3.2.3-61.i386.rpm compat-libstdc++-33-3.2.3-61.i386.rpm]
* Convenient links
** ln -s /opt/pymol/pymol /usr/local/bin/pymol
** ln -s /opt/bin/rasmol /usr/local/bin/rasmol
** ln -s /usr/local/RealPlayer/realplay /usr/local/bin/realplay
** ln -s /opt/bin/acroread /usr/local/bin/acroread


=== Printer ===
=== Printer ===
Line 276: Line 329:
*** Paper source->Tray 2
*** Paper source->Tray 2


=== Pymol ===
=== Lyx ===
* After pymol is installed by yum it has to be fixed.
* Download source: [ftp://ftp.lyx.org/pub/lyx/stable/1.6.x/lyx-1.6.2.tar.bz2 lyx-1.6.2.tar.bz2]
# Download source
* tar -xjvf lyx-1.6.2.tar.bz2
# In source directory, run <code>python setup.py build</code>  fix (Dirty hack): As the one above gives the python shared object in 32-bit, we need to rebuild it. This involves running, inside the corresponding pymol source (v 1.1): python setup.py build. Then, copying the libpymol.so built to /usr/lib/python2.5/site-packages/pymol/_cmd.so.
* cd lyx-1.6.2
* PATH=$PATH:/usr/lib/qt4/bin ./configure && make -j2 && make install
 
=== Flash ===
* Yum has it (flash-plugin), but this is 64-bit and Firefox has better support in 32-bit.
* rpm -iv [ftp://fr.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/flash-plugin-10.0.22.87-1.el5.rf.i386.rpm flash-plugin-10.0.22.87-1.el5.rf.i386.rpm]
* Install Adobe repository for yum (for future updates)
** rpm -iv [http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm adobe-release-i386-1.0-1.noarch.rpm]
* Install soundwrapper
** rpm -iv [ftp://rpmfind.net/linux/Mandrake/2009.1/SRPMS/main/release/soundwrapper-1.6-3mdv2009.1.src.rpm soundwrapper-1.6-3mdv2009.1.src.rpm]
** cd /usr/src/redhat/SOURCES
** tar -xjvf soundwrapper-1.6.tar.bz2
** cd soundwrapper-1.6
** gcc soundwrapper.c -I/usr/include/kde -ldl -o /usr/local/bin/soundwrapper
** cd ../..
** rm -rf SPECS/soundwrapper.spec SOURCES/soundwrapper-1.6.tar.bz2 SOURCES/soundwrapper-1.6-arts-disable.patch SOURCES/soundwrapper-1.6
* Configure NSPlugin wrappers (do this after totem, flash, java, acrobat plugins are all installed)
** mozilla-plugin-config -i -g -v
 
=== Totem Plugin ===
* Yum has it (totem-mozplugin), but this is 64-bit and Firefox has better support in 32-bit.
* rpm -iv [ftp://ftp.pbone.net/mirror/ftp.centos.org/5.3/os/i386/CentOS/totem-mozplugin-2.16.7-4.el5.i386.rpm totem-mozplugin-2.16.7-4.el5.i386.rpm]
* Need to get some gstreamer plugins
** Add i386 repos to /etc/yum.repos.d/CentOS-Base.repo:
<code><pre>
#released updates                                                             
[updatesi386]                                                                 
name=CentOS-$releasever - Updates                                             
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=i386&repo=updates                                                                         
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/       
gpgcheck=1                                                                   
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5           
 
[rpmforgei386]                                                               
name = Extra packages from RPMforge.net for Red Hat Enterprise 5 - xi386 - dag
baseurl = http://apt.sw.be/redhat/el5/en/i386/dag                             
type = rpm-md               
</pre></code>
** yum install gstreamer-plugins-{bad,good,ugly,base,pulse}.i386
 
=== Virtual Box ===
* wget http://download.virtualbox.org/virtualbox/2.2.2/VirtualBox-2.2.2_46594_rhel5-1.x86_64.rpm
* rpm -iv VirtualBox-2.2.2_46594_rhel5-1.x86_64.rpm


== NFS Mounts ==
== NFS Mounts ==
Line 339: Line 434:
* Change in /etc/idmapd.conf <code>nobody</code> to <code>nfsnobody</code>
* Change in /etc/idmapd.conf <code>nobody</code> to <code>nfsnobody</code>
* Reboot
* Reboot
== Thin Client Services ==
* Each Centos Workstation is set up to be a Thin Client vnc server, see [[ThinClients#Workstations]]
== Known Issues ==
* Anjuta is not installed. It is very difficult to install in Centos 5.
== TO DO ==
* yum install numpy python-numpy atlas openssl-devel libgcrypt-devel compat-libf2c-34.i386 ipython openbabel-devel libtool
* Openbabel Python Bindings (these aren't available as an rpm or installed with openbabel from yum):
** Download http://transact.dl.sourceforge.net/sourceforge/openbabel/openbabel-2.1.1.tar.gz
** Extract & cd to openbabel-2.1.1/scripts/python
** Setup python interface
*** python setup.py build
*** python setup.py install


= How to make a Centos Workstation (Real Machine) =
= How to make a Centos Workstation (Real Machine) =
<font color="red">Note: During imaging, there may be an error about kernel failing in a memory allocation. This can be ignored.</font>
Note: If there is an error <font color="red"><code>swapper: page allocation failure. order: 0, model: 0x20</code></font> during imaging, this means the ramdisk_size is too small. The ramdisk_size can be changed in /etc/systemimager/pxelinux.cfg/syslinux.cfg for the Boot CD, or in the options passed to the kernel in the grub menu. This is a known bug with the kernel used by systemimager: the imaging process usually continues fine despite this error (it happens during the main rsync, so you won't see anything to indicate that it is still imaging until rsync completes; rsync usually runs for about 10 min), otherwise simply reimage.


== Initial Image ("<code>centos_golden_client</code>") ==
== Initial Image ("<code>centos_golden_client</code>") ==
Line 347: Line 457:


* Boot from boot CD created in [[#Creating Initial Image and Sending to Image Server (Initial Image uses Bootable CD)]]
* Boot from boot CD created in [[#Creating Initial Image and Sending to Image Server (Initial Image uses Bootable CD)]]
* When the system is imaged (it will say: "Reboot me already"), take out CD and reboot, selecting "Update Image" in grub menu (as described below)


== Update Image ("<code>centos_golden_client_update</code>") ==
== Update Image ("<code>centos_golden_client_update</code>") ==
Note: The /data partition will not be changed
Note: The /data partition will not be changed. <font color=red>However, the rest of the disk will be wiped.</font>
* Boot from <code>Update Image (SystemImager) (/data is preserved)</code> in grub menu
* When the PC first starts up, in the GRUB menu, select <code>Update Image (SystemImager) (/data is preserved)</code> and press Enter
 
[[Image:Image021.jpg|640x480px]]
== NVIDIA Graphics Driver ==
* Let it reboot by itself (it should take about 15 min all up). When the login screen, as seen below, first appears, press Ctrl-Alt-F1
*  
[[Image:Image022.jpg|640x480px]]
 
* At this screen, login
The NVIDIA driver will have to be installed every time the computer is imaged. It is not required, but improves performance for things like VMD.
[[Image:Image027.jpg|640x480px]]
* Log in to Centos over ssh/console (i.e. not through its gdm)
* Then type:
** init 3
<code><pre>
** cd /tmp
sudo /nvidia/install-driver; exit
** wget [http://us.download.nvidia.com/XFree86/Linux-x86_64/180.51/NVIDIA-Linux-x86_64-180.51-pkg2.run NVIDIA-Linux-x86_64-180.51-pkg2.run]
</pre></code>
** sh NVIDIA-Linux-x86_64-180.51-pkg2.run
* This will install the driver (taking about 2 minutes) and bring the Centos login screen back. If for some reason, it doesn't return you to the Centos login screen, you can attempt to return to the Centos login screen using Ctrl-Alt-F7
*** License? Accept
[[Image:Image029.jpg|640x480px]]
*** Download kernel interface? Yes
*** No matching interface found. OK
*** Install compabtible 32-bit libraries? Yes
*** ('''TODO'''.....) init 5


= How to move the VirtualBox VM to another computer =
= How to move the VirtualBox VM to another computer =
* Move the $HOME/.VirtualBox directory and the /data/virtualbox directory. This is how it can be backed up also.
* Move the $HOME/.VirtualBox directory and the /data/virtualbox directory. This is how it can be backed up also.

Latest revision as of 04:33, 7 July 2009

How to make a Centos Workstation (VM)

Warning Do not install the Xen virtualisation package within the virtual Centos as it will crash during boot when running inside the VirtualBox VM!

A virtual machine makes installation and testing faster and easier, especially since it makes it easy to make and revert to snapshots.

Building the VM (Virtual Machine)

For serving the image to lychee, VirtualBox needs to be run as root because the NAT port forwarding from 873/TCP on the host to 873/TCP on the virtual machine is only possible in Linux if the VirtualBox processes are run by root. It is probably best to run VirtualBox as root for other stages, just for VirtualBox's own internal consistency.

  • Inside VirtualBox (F7|C5) server, add users to vboxgroup (/etc/group), run VirtualBox, register product, create new virtual machine
    • "Centos Workstation"
    • Linux, Red Hat 64-bit
    • 1536MB RAM
    • Boot hard disk (Primary master)
      • Create new hard disk
        • Dynamically expanding storage
        • Location: /data/virtualbox/CentosHDD.vdi
        • Size: 40.0 GB
  • This creates a $HOME/.VirtualBox directory, which contains all the information about the VM
  • Further settings
    • General: Enable 3D acceleration
    • Hard Disks: Enable Additional Controller: SATA (AHCI). Slot: SATA Port 0
    • CD/DVD-ROM: Mount Centos 5.3 DVD iso

Installing Centos

  • Start VM
  • Press Enter at Centos installation screen
  • Skip media check
  • Ignore colour mode message
  • Centos Installation screen (GUI)
    • Language: English
    • US English
    • Click OK to erase ALL DATA on device sda VBOX HARDDISK 40955MB? Yes
    • Create custom layout
    • Partitioning
      • Note: I found that making a separate /usr partition stuffed up systemimager.
      • /dev/sda1, /boot, ext3, 100MB, Fixed size, Force to be a primary partition
      • /dev/sda2, /, ext3, 36000MB, Fixed size, Force to be a primary partition
      • /dev/sda3, swap, 2048MB, Fixed size, Force to be a primary partition
      • /dev/sda4, /data, ext3, Fill to maximum allowable size, Force to be a primary partition
    • The Grub boot loader will be installed on /dev/sda
      • (tick) CentOS /dev/sda2
    • Network
      • Active on boot, eth0, DHCP, Auto
    • Hostname:
      • Automatically via DHCP
    • Time
      • Australia/Brisbane time
      • System clock uses UTC
    • Root password
      • <standard workstation root password>
    • Installation (only the following!)
      • Desktop - Gnome
      • Desktop - KDE
      • (tick) Customize later
    • Begin!
    • Wait ~20 minutes
    • Reboot (unmounting ISO)
  • Post Installation Configuration
    • Firewall: Disabled
    • SELinux: Disabled
    • NTP: Enabled, 130.102.2.15, 130.102.128.43, Synchronise system clock, Local time source
    • Create User: Use Network Login: LDAP for both User Information & Authentication:
      • LDAP Search Base DN: dc=md,dc=smms,dc=uq,dc=edu,dc=au
      • LDAP Server: ldap://lychee.md.smms.uq.edu.au/
    • Sound should be OK
    • Reboot
    • Power off VM
  • Turn off VirtualBox

Installing Imaging System

After installation of the base system, we need to perform some one-time steps to set it up to allow it to be imaged to real machines. VM stands for commands run on Virtual Centos (Virtual Machine), H stands for commands run on the host, such as commands to the VirtualBox application itself.

  • H: Forward port 873/TCP on the host to the VM
    • Note: e1000 below is because the virtual Intel 1Gb adapter is used (this is the default). Check that this is indeed the case.
    • VBoxManage setextradata "Centos Workstation" "VBoxInternal/Devices/e1000/0/LUN#0/Config/rsync/Protocol" TCP
    • VBoxManage setextradata "Centos Workstation" "VBoxInternal/Devices/e1000/0/LUN#0/Config/rsync/GuestPort" 873
    • VBoxManage setextradata "Centos Workstation" "VBoxInternal/Devices/e1000/0/LUN#0/Config/rsync/HostPort" 873
  • H: Forward port 2022/TCP on the host to 22/TCP on the VM (useful)
    • VBoxManage setextradata "Centos Workstation" "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/Protocol" TCP
    • VBoxManage setextradata "Centos Workstation" "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/GuestPort" 22
    • VBoxManage setextradata "Centos Workstation" "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/HostPort" 2022
  • H: Start VirtualBox
  • H: Start Centos Workstation
  • VM: chkconfig yum-updatesd off
  • VM: scp -r lychee.md.smms.uq.edu.au:/etc/yum.repos.d/\* /etc/yum.repos.d/
  • VM: yum install --nogpgcheck rpmforge-release
  • VM: yum install perl-AppConfig
  • VM: rpm -iv systemconfigurator-2.2.11-1.noarch.rpm systemimager-common-4.1.6-1.noarch.rpm systemimager-client-4.1.6-1.noarch.rpm systemimager-x86_64initrd_template-4.1.6-1.noarch.rpm
  • VM: We don't need to open port 873/TCP (for serving the image) as no firewall is turned on
  • VM: Modify the virtual Centos to include another kernel in /boot, which is the kernel used for systemimager. Grub will be later modified to present this kernel as an option to boot into.
    • scp -r lychee.md.smms.uq.edu.au:'/usr/share/systemimager/boot/x86_64/standard/{kernel,initrd.img}' /boot/
  • H: Make sure 873/TCP is open if a firewall is enabled

Editing Centos' initrd.img to read real workstation HDD drives

Installing Centos on a given machine will affect which drivers are stored in the initrd.img file that is included by the kernel as it boots. These drivers are used to give the kernel access to the hard disk/filesystems which store the / partitions, etc. The virtual machine probably has different hardware to the real workstation, so the drivers needed for the real workstation must be added to the initrd.img file in our Centos.

  • VM: Determine running kernel version and extract corresponding initrd file:
export KVERSION=`uname -r`
echo $KVERSION
mkdir -p /tmp/$KVERSION && cd /tmp/$KVERSION && gunzip -c /boot/initrd-$KVERSION.img | cpio -iv
  • VM: Copy in required drivers into directory structure. Our real workstations use a different SATA controller to the ahci.ko and ata_piix.ko modules used for the VM. This was discovered by exploring the contents of a Centos installation (initrd.img file) on a real workstation.
cp /lib/modules/$KVERSION/kernel/drivers/ata/sata_nv.ko ./lib/
chmod 600 ./lib/sata_nv.ko
  • VM: Edit init, after "insmod /lib/ata_piix.ko" insert:
echo "Loading sata_nv.ko module"
insmod /lib/sata_nv.ko

Repackage initrd.img file

  • VM: Shutdown to avoid repackaging initrd.img while kernel is running
    • shutdown -h now
[Create System Rescue CD VM]
  • Create new VirtualBox VM
    • "System Rescue CD"
    • Linux/Gentoo (64 bit)
    • 512 MB RAM
    • Boot Hard Disk
      • Use existing: CentosHDD.vdi
  • Settings: CD/DVD ROM
Load System Rescue CD VM and Repackage initrd.img
  • boot: <Enter>
  • Keyboard: <Enter>
  • mkdir /mnt/sda1 /mnt/sda2
  • mount -t ext3 /dev/sda1 /mnt/sda1
  • mount -t ext3 /dev/sda2 /mnt/sda2
  • cd /mnt/sda2/tmp/$KVERSION # where $KVERSION is defined as above
  • find ./ | cpio -o -H newc | gzip -9 > /mnt/sda1/initrd-$KVERSION.img.new
  • cd /mnt/sda1
  • mv initrd-$KVERSION.img{,.old}
  • mv initrd-$KVERSION.img{.new,}
  • shutdown -h now

Creating Initial Image and Sending to Image Server (Initial Image uses Bootable CD)

The initial image ("centos_golden_client") is for imaging a real workstation for the first time, as it performs a full disk partitioning. It shouldn't need to be regenerated unless Centos undergoes a major revision. The update image ("centos_golden_client_update", which boots from Grub on an imaged workstation) does not perform a full partitioning (only /boot, / and swap are repartitioned; /data is unchaged). How this is created is described in a later section. VM stands for commands run on Virtual Centos (Virtual Machine) and IS stands for commands to the image server.

  • VM: Prepare the image for image server, currently on lychee (IP Address 152.98.195.188). This initiates an rsync server process.
    • /usr/sbin/si_prepareclient --server 152.98.195.188
      • Continue? y
      • Continue? y
  • IS: Grab the image from the virtual Centos running on the VirtualBox VM on the host computer (this case uqmd13, which has IP address 152.98.195.144).
    • /usr/sbin/si_getimage -golden-client 152.98.195.144 -image centos_golden_client -ip-assignment static -autodetect-disks
      • Continue? y
      • [An image named centos_golden_client already exists ... Update? y]
      • Press <Enter> to continue ... <Enter>
      • [Update autoinstall script? y]
      • [Run si_clusterconfig? n]
  • VM: No longer needed
  • IS: Fix disk partitioning information
    • Edit: /systemimager/images/centos_golden_client/etc/systemimager/autoinstallscript.conf
      • Alter partitioning to use full disk (should be at least 250 GB):
<disk dev="/dev/sda" label_type="msdos" unit_of_measurement="%">             
    <!--                                                                       
      This disk's output was brought to you by the partition tool "parted",    
      and by the numbers 4 and 5 and the letter Q.                             
    -->                                                                        
    <part  num="1"  size="0.1"  p_type="primary"  p_name="-"  flags="boot" />  
    <part  num="2"  size="20"  p_type="primary"  p_name="-"  flags="-" />      
    <part  num="3"  size="1"  p_type="primary"  p_name="-"  flags="-" />       
    <part  num="4"  size="*"  p_type="primary"  p_name="-"  flags="-" />
  </disk>
    • Recreate installer script:
      • /usr/sbin/si_mkautoinstallscript -image centos_golden_client -force -ip-assignment static -post-install beep
  • IS: Make bootable CD that will download the image from the image server
    • Put a writable CD into the image server
    • Generate ISO
      • /usr/bin/si_mkautoinstallcd --out-file /tmp/systemimager.iso --kernel /usr/share/systemimager/boot/x86_64/standard/kernel --initrd /usr/share/systemimager/boot/x86_64/standard/initrd.img --append "IMAGESERVER=152.98.195.188 IMAGENAME=centos_golden_client SKIP_LOCAL_CFG=y"
    • Burn ISO to CD (to find the CD recorder device run: cdrecord -scanbus)
      • cdrecord -v -eject speed=16 dev=1,0,0 /tmp/systemimager.iso
  • IS: Create the file /var/lib/systemimager/scripts/post-install/98centos_golden_client.grubfix containing the following text:
cat >> /boot/grub/grub.conf <<EOF
title Update Image (SystemImager) (/data is preserved)
    root (hd0,0)
    kernel /kernel noexec=off root=/dev/ram ramdisk_blocksize=1024 ramdisk_size=180000 IMAGESERVER=152.98.195.188 IMAGENAME=centos_golden_client_update SKIP_LOCAL_CFG=y
    initrd /initrd.img
EOF
  • IS: Start rsync server
    • To check status: /etc/init.d/systemimager-server-rsyncd status
    • To start: /etc/init.d/systemimager-server-rsyncd start
  • IS: The initial image is now ready to be served to the real workstations

Creating Update Image and Sending to Image Server (Update Image boots from Grub)

These steps are for creating and sending the update image ("centos_golden_client_update"), which can be installed on a real workstation from the grub menu once the initial image has been loaded. These steps can be run any number of times. This image does not perform a full partitioning on the real workstation local disk (only /boot, / and swap are repartitioned; /data is unchaged). VM stands for commands run on Virtual Centos (Virtual Machine) and IS stands for commands to the image server.

  • VM: Edit /etc/systemimager/updateclient.local.exclude to specify any directories the contents of which should not be copied onto the real workstation, such as the contents to external nfs mounts (e.g. /melon1/*)
  • VM: Make /nvidia directory, prepare scripts and download driver for installing NVIDIA driver automatically once the system is imaged
#!/bin/sh

if /usr/bin/test ! -e /nvidia/driver.installed && /sbin/lspci | /bin/egrep -qi ' VGA.*nvidia'; then
        /sbin/init 3
        /bin/sleep 3
        /bin/sh /nvidia/NVIDIA-Linux-x86_64-180.51-pkg2.run -s -X -N
        /bin/touch /nvidia/driver.installed
        /sbin/init 5
        /bin/sleep 3
fi
    • Add rules in /etc/sudoers to allow any user to run it as root
%BMMG     ALL=/nvidia/install-driver
%MDGroup  ALL=/nvidia/install-driver
%SBeatson ALL=/nvidia/install-driver
%KobeLab  ALL=/nvidia/install-driver
  • VM: Prepare the image for image server, currently on lychee (IP Address 152.98.195.188). This initiates an rsync server process. The partitioning on disk /dev/sda is excluded
    • /usr/sbin/si_prepareclient --server 152.98.195.188 -e sda
      • Continue? y
      • Continue? y
  • VM: Check /etc/systemconfig/systemconfig.conf to see it uses the right initrd.img file in the INITRD setting. I have seen it pick up the /boot/initrd-$KVERSION.img.old file before. Change it to the right one if not correct.
  • IS: Grab the image from the virtual Centos running on the VirtualBox VM on the host computer (this case uqmd13, which has IP address 152.98.195.144). Also defined are the excluded contents of certain directories.
    • /usr/sbin/si_getimage -exclude /nfs4importsguava/\* -exclude /nfs4importslychee/\* -exclude /data1/\* -exclude /data2/\* -exclude /data3/\* -exclude /data4/\* -exclude /data5/\* -exclude /data6/\* -exclude /data7/\* -exclude /data8/\* -exclude /data9/\* -exclude /data10/\* -exclude /melon1/\* -exclude /melon2/\* -exclude /marksw/\* -exclude /opt/\* -exclude /home1/\* -exclude /home2/\* -golden-client 152.98.195.144 -image centos_golden_client_update -ip-assignment static
      • Continue? y
      • [An image named centos_golden_client_update already exists ... Update? y]
      • Press <Enter> to continue ... <Enter>
      • [Update autoinstall script? y]
      • [Run si_clusterconfig? n]
  • VM: No longer needed
  • IS: Fix disk partitioning information
    • Edit /systemimager/images/centos_golden_client_update/etc/systemimager/autoinstallscript.conf to prevent repartitioning/reformatting of /data
      • Add format="no" into tag also containing real_dev="/dev/sda4"
    • Recreate installer script:
      • /usr/sbin/si_mkautoinstallscript -image centos_golden_client_update -force -ip-assignment static -post-install reboot
  • IS: Create the file /var/lib/systemimager/scripts/post-install/98centos_golden_client_update.grubfix containing the following text:
cat >> /boot/grub/grub.conf <<EOF
title Update Image (SystemImager) (/data is preserved)
    root (hd0,0)
    kernel /kernel noexec=off root=/dev/ram ramdisk_blocksize=1024 ramdisk_size=180000 IMAGESERVER=152.98.195.188 IMAGENAME=centos_golden_client_update SKIP_LOCAL_CFG=y
    initrd /initrd.img
EOF
  • IS: Start rsync server
    • To check status: /etc/init.d/systemimager-server-rsyncd status
    • To start: /etc/init.d/systemimager-server-rsyncd start
  • IS: The update image is now ready to be served to the real workstations

Software

Kernel Updates

Note: Any kernel updates will probably require also rebuilding initrd.img as described above (#Editing Centos' initrd.img to read real workstation HDD drives). As such it is suggested that the system is usually updated without any kernel updates:

  • yum update --exclude=kernel

Sudo

Matt and Roy are added to /etc/sudoers

Yum

The order is important:

  • kernel-devel kernel-headers # Make sure these match the current kernel
  • gcc gcc-c++
  • zsh
  • firefox # i386 only; yum erase firefox.x86_64
  • netcdf netcdf-devel
  • fonts-chinese
  • kile
  • rxvt
  • xterm
  • nedit
  • grace
  • vlc
  • w3m
  • iftop
  • htop
  • rpm-build
  • mesa-libGLU-devel
  • mesa-libGL-devel
  • freeglut
  • freeglut-devel
  • python-devel
  • libpng-devel
  • ftgl-devel
  • ftgl-utils
  • freetype-devel
  • strace
  • tcl tcl-devel tk tk-devel
  • qt4 qt4-devel
  • unrar
  • k3b
  • java-1.6.0-openjdk-plugin # Must erase java-1.6.0-openjdk.x86_64 first (a variant is reinstalled)
  • pidgin
  • imake
  • fltk fltk-devel
  • xforms xforms-devel
  • gdb libXt libXt-devel libXext libXext-devel automake alsa-lib-devel arts arts-devel pulseaudio pulseaudio-libs pulseaudio-libs-devel nspluginwrapper.i386 curl
  • scons thunderbird gftp wxGTK-2.8.9-1.el5.{i386,x86_64} R emacs gnuplot libglade2-devel vnc gsl glib-devel glib2-devel gsl-devel rdesktop
  • subversion git git-core
  • xmms
  • eclipse-cdt\* eclipse-jdt\*
  • openbabel
  • gv
  • xinetd xorg-x11-server-Xvnc-source.x86_64

Extra Packages for Enterprise Linux

Skype

Other

  • /usr/local is copied from the Fedora 7 workstations created by Mitch and AJ
  • Pymol
  • Convenient links
    • ln -s /opt/pymol/pymol /usr/local/bin/pymol
    • ln -s /opt/bin/rasmol /usr/local/bin/rasmol
    • ln -s /usr/local/RealPlayer/realplay /usr/local/bin/realplay
    • ln -s /opt/bin/acroread /usr/local/bin/acroread

Printer

  • Go to System->Administration->Printing
    • New Printer
      • Name: "MDPrinter"
      • AppSocket/HP JetDirect: Hostname: 172.23.213.43
      • Select Printer from Database: HP
        • Color LaserJet 4650 (Postscript)
    • More settings (MDPrinter):
      • Settings->Description: "MDGroupPrinter"
      • Settings->Make default Printer
      • Policies->Error policy->Abort job
      • Installable options->Duplex Unit
      • Printer options->Media size: A4
      • Paper source->Tray 2

Lyx

  • Download source: lyx-1.6.2.tar.bz2
  • tar -xjvf lyx-1.6.2.tar.bz2
  • cd lyx-1.6.2
  • PATH=$PATH:/usr/lib/qt4/bin ./configure && make -j2 && make install

Flash

  • Yum has it (flash-plugin), but this is 64-bit and Firefox has better support in 32-bit.
  • rpm -iv flash-plugin-10.0.22.87-1.el5.rf.i386.rpm
  • Install Adobe repository for yum (for future updates)
  • Install soundwrapper
    • rpm -iv soundwrapper-1.6-3mdv2009.1.src.rpm
    • cd /usr/src/redhat/SOURCES
    • tar -xjvf soundwrapper-1.6.tar.bz2
    • cd soundwrapper-1.6
    • gcc soundwrapper.c -I/usr/include/kde -ldl -o /usr/local/bin/soundwrapper
    • cd ../..
    • rm -rf SPECS/soundwrapper.spec SOURCES/soundwrapper-1.6.tar.bz2 SOURCES/soundwrapper-1.6-arts-disable.patch SOURCES/soundwrapper-1.6
  • Configure NSPlugin wrappers (do this after totem, flash, java, acrobat plugins are all installed)
    • mozilla-plugin-config -i -g -v

Totem Plugin

  • Yum has it (totem-mozplugin), but this is 64-bit and Firefox has better support in 32-bit.
  • rpm -iv totem-mozplugin-2.16.7-4.el5.i386.rpm
  • Need to get some gstreamer plugins
    • Add i386 repos to /etc/yum.repos.d/CentOS-Base.repo:
#released updates                                                              
[updatesi386]                                                                  
name=CentOS-$releasever - Updates                                              
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=i386&repo=updates                                                                           
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/        
gpgcheck=1                                                                     
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5             

[rpmforgei386]                                                                 
name = Extra packages from RPMforge.net for Red Hat Enterprise 5 - xi386 - dag 
baseurl = http://apt.sw.be/redhat/el5/en/i386/dag                              
type = rpm-md                 
    • yum install gstreamer-plugins-{bad,good,ugly,base,pulse}.i386

Virtual Box

NFS Mounts

The following instructions describe how to set up NFS mounts. The NFS mounts only work properly on a real machine as the port forwarding isn't yet set up for the VM.

  • Add to /etc/fstab:
# IMPORT NFS4SHARES
guava:/ /nfs4importsguava       nfs4    rw,rsize=8192,wsize=8192,timeo=14,intr
lychee:/        /nfs4importslychee      nfs4    rw,rsize=8192,wsize=8192,timeo=14,intr
# GUAVA DISKS
/nfs4importsguava/data3 /data3  none    bind    0       0
/nfs4importsguava/data1 /data1  none    bind    0       0
/nfs4importsguava/data2 /data2  none    bind    0       0
/nfs4importsguava/data6 /data6  none    bind    0       0
# LYCHEE DISKS
/nfs4importslychee/data7        /data7  none    bind    0       0
/nfs4importslychee/home         /home   none    bind    0       0
/nfs4importslychee/home1        /home1  none    bind    0       0
/nfs4importslychee/home2        /home2  none    bind    0       0
/nfs4importslychee/data5        /data5  none    bind    0       0
/nfs4importslychee/marksw       /marksw none    bind    0       0
/nfs4importslychee/opt       /opt none    bind    0       0
# GET THE OLD GRAPE DISKS 
grape:/data1    /data8  nfs     rw,rsize=32768,wsize=32768,nfsvers=3    0       0
grape:/data2    /data9  nfs     rw,rsize=32768,wsize=32768,nfsvers=3    0       0
grape:/data3    /data10 nfs     rw,rsize=32768,wsize=32768,nfsvers=3    0       0
# MELON DISKS
melon:/melon1   /melon1 nfs4    rw,rsize=8192,wsize=8192,timeo=14,intr
melon:/melon2   /melon2 nfs4    rw,rsize=8192,wsize=8192,timeo=14,intr
  • Create mount points
    • mkdir -p /nfs4importsguava /nfs4importslychee /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 /data10 /melon1 /melon2 /marksw /opt /home1 /home2
  • Add details to /etc/systemimager/updateclient.local.exclude:
/nfs4importsguava/*
/nfs4importslychee/*
/data1/*
/data2/*
/data3/*
/data4/*
/data5/*
/data6/*
/data7/*
/data8/*
/data9/*
/data10/*
/melon1/*
/melon2/*
/marksw/*
/opt/*
/home1/*
/home2/*
  • Add to /etc/idmapd.conf after [General]
Domain = md.smms.uq.edu.au
  • Change in /etc/idmapd.conf nobody to nfsnobody
  • Reboot

Thin Client Services

Known Issues

  • Anjuta is not installed. It is very difficult to install in Centos 5.

TO DO

  • yum install numpy python-numpy atlas openssl-devel libgcrypt-devel compat-libf2c-34.i386 ipython openbabel-devel libtool
  • Openbabel Python Bindings (these aren't available as an rpm or installed with openbabel from yum):

How to make a Centos Workstation (Real Machine)

Note: If there is an error swapper: page allocation failure. order: 0, model: 0x20 during imaging, this means the ramdisk_size is too small. The ramdisk_size can be changed in /etc/systemimager/pxelinux.cfg/syslinux.cfg for the Boot CD, or in the options passed to the kernel in the grub menu. This is a known bug with the kernel used by systemimager: the imaging process usually continues fine despite this error (it happens during the main rsync, so you won't see anything to indicate that it is still imaging until rsync completes; rsync usually runs for about 10 min), otherwise simply reimage.

Initial Image ("centos_golden_client")

Warning! Make sure that the local disk does not have anything important on it as it will be wiped

Update Image ("centos_golden_client_update")

Note: The /data partition will not be changed. However, the rest of the disk will be wiped.

  • When the PC first starts up, in the GRUB menu, select Update Image (SystemImager) (/data is preserved) and press Enter

Image021.jpg

  • Let it reboot by itself (it should take about 15 min all up). When the login screen, as seen below, first appears, press Ctrl-Alt-F1

Image022.jpg

  • At this screen, login

Image027.jpg

  • Then type:
sudo /nvidia/install-driver; exit
  • This will install the driver (taking about 2 minutes) and bring the Centos login screen back. If for some reason, it doesn't return you to the Centos login screen, you can attempt to return to the Centos login screen using Ctrl-Alt-F7

Image029.jpg

How to move the VirtualBox VM to another computer

  • Move the $HOME/.VirtualBox directory and the /data/virtualbox directory. This is how it can be backed up also.