<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>James&#039; Tools and Tricks &#187; Linux</title>
	<atom:link href="http://jrudd.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://jrudd.org</link>
	<description>Tools, Tips and Hints for managing a network.</description>
	<lastBuildDate>Sun, 08 Jan 2012 03:50:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Compilation notes for Rocks cluster</title>
		<link>http://jrudd.org/2011/12/compilation-notes-for-rocks-cluster/</link>
		<comments>http://jrudd.org/2011/12/compilation-notes-for-rocks-cluster/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 01:50:49 +0000</pubDate>
		<dc:creator>James Rudd</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[BLAS]]></category>
		<category><![CDATA[compilation]]></category>
		<category><![CDATA[CPP]]></category>
		<category><![CDATA[espresso]]></category>
		<category><![CDATA[FFTW]]></category>
		<category><![CDATA[Modules]]></category>
		<category><![CDATA[openmpi]]></category>
		<category><![CDATA[rocks]]></category>
		<category><![CDATA[VASP]]></category>

		<guid isPermaLink="false">http://jrudd.org/?p=296</guid>
		<description><![CDATA[This post is more to assist me when upgrading software on our Rocks cluster, but may be useful to others who are compiling similar software. Our cluster only has AMD nodes so we use PGI compilers. Also the backbone is only 1Gb/s so I don&#8217;t need to enable any IB options for OpenMPI. I use <a href='http://jrudd.org/2011/12/compilation-notes-for-rocks-cluster/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>This post is more to assist me when upgrading software on our <a href="http://www.rocksclusters.org">Rocks cluster</a>, but may be useful to others who are compiling similar software. Our cluster only has AMD nodes so we use PGI compilers. Also the backbone is only 1Gb/s so I don&#8217;t need to enable any IB options for OpenMPI. I use <a href="http://modules.sourceforge.net/">Modules</a> as a contrib module with a compute-node.xml file to add a /share/apps/modulefiles path to the local config. I have copies of my <a href="https://github.com/ruddj/UNSW-Rocks-Config/tree/master/modulefiles">ModuleFiles </a>synced with Git <a href="https://github.com/ruddj/UNSW-Rocks-Config/tree/master/modulefiles">here</a>.</p>
<p>Also because our head node where compilation occurs uses a AMD Barcelona CPU and the work nodes use an older model I need to add a CFLAG of -tp k8-64</p>
<h1>PGI Compilers</h1>
<p>PGI have some info on common compilation optimisation at <a href="http://www.pgroup.com/support/compile.htm" target="_blank">PGI Compilation</a></p>
<ol>
<li>Download from <a href="http://www.pgroup.com/support/downloads.php">Portland Group</a> and save to ~/install/pgi. To download over SSH I use <a href="https://secure.wikimedia.org/wikipedia/en/wiki/ELinks">elinks</a> as these can be left open in a disconnected screen session</li>
<li>Create a new directory and tar xzvf from there as it is a messy tar</li>
<li>Root: run ./install &#8211; 1. Single System Install</li>
<li>install dir: /share/apps/opt/pgi</li>
<li>add ACML, CUDA</li>
<li>update 2011 links</li>
<li>MPICH1, ssh</li>
<li>License keys, /share/apps/opt/pgi/license.dat</li>
<li>Copy an existing /share/apps/modulefiles/pgi version and update it for new version. Also update .version to new version.</li>
</ol>
<h1>OpenMPI</h1>
<ol>
<li>Download latest from <a href="http://www.open-mpi.org/">OpenMPI</a> and extract in ~/install/openmpi with tar xjvf</li>
<li>mkdir build;cd build</li>
<li>module load pgi</li>
<li>configure with
<pre class="brush: plain; title: ; notranslate">env CC=pgcc FC=pgfortran F77=pgfortran CXX=pgcpp CFLAGS='-fast -tp=k8-64' FCFLAGS='-fast -tp=k8-64' FFLAGS='-fast -tp=k8-64' CXXFLAGS='-fast -tp=k8-64' \
../configure --prefix=/share/apps/opt/openmpi/1.4.4-pgi-11.10 --with-gnu-ld --with-sge --enable-static \
--without-openib --disable-openib-ibcm --disable-ipv6 --disable-openib-connectx-xrc --disable-openib-rdmacm --disable-io-romio</pre>
<p>Compiling with Torque on Ethernet Cluster</p>
<pre class="brush: plain; title: ; notranslate">
export MYINSTALLDIR=/share/apps/openmpi/pgi/1.4.4
export CC=pgcc
export CXX=pgcpp
export F77='pgfortran'
export FC=${F77}
export CFLAGS='-fast'
export CXXFLAGS=${CFLAGS}
export FFLAGS=${CFLAGS}
export FCFLAGS=${FFLAGS}

../configure \
--prefix=${MYINSTALLDIR} \
--without-openib \
--with-tm=/opt/torque \
--disable-ipv6 \
--enable-static \
--with-gnu-ld \
--disable-io-romio \
2&gt;&amp;1 | tee configure-`date +%y%m%d-%H%M`.log</pre>
</li>
<li>make -j 8</li>
<li>root: module load pgi; make install</li>
<li>Copy an existing /share/apps/modulefiles/openmpi/ version and update it for new version. Also update .version to new version and recreate symlink.</li>
</ol>
<h1>FFTW3</h1>
<ol>
<li>Download latest stable from http://www.fftw.org/download.html</li>
<li>module load pgi openmpi</li>
<li>
<pre class="brush: plain; title: ; notranslate">./configure --enable-openmp --enable-mpi --prefix=/share/apps/opt/fftw/3.3.0-pgi-11.10 \
CFLAGS=&quot;-O3 -fastsse -Mvect=sse -tp k8-64&quot; F90=pgf90 CC=pgcc FC=pgfortran F77=pgfortran CXX=pgcp</pre>
</li>
<li>make -j 8</li>
<li>root: make install</li>
<li>Copy an existing /share/apps/modulefiles/fftw version and update it for new version. Also update .version to new version.</li>
</ol>
<h1>OpenBLAS</h1>
<p>This replaces GotoBLAS2 as the BLAS library as Goto is no longer maintained.</p>
<p>To keep source up to date I use a GIT mirror, created with <em>git clone git://github.com/xianyi/OpenBLAS</em> I have also modified Makefile.rule and committed it to local mirror. In Makefile.rule I also needed to set architecture as head node is slightly different to compute nodes</p>
<ol>
<li><em>cd ~/install/openblas/OpenBLAS</em></li>
<li><em>git pull</em> to update source</li>
<li>module load pgi</li>
<li>make</li>
<li>root: make install PREFIX=/share/apps/opt/OpenBLAS/0.1-pgi-11.10</li>
<li>Copy an existing /share/apps/modulefiles/openblas version and update it for new version. Also update .version to new version.</li>
</ol>
<h1>VASP</h1>
<p>Download latest version from VASP FTP server</p>
<h2>VASP Lib</h2>
<p>Vasp uses a shared library that is common across multiple versions. This only needs to be compiled once, and the makefile does not need any modification. I added a -tp k8-64 to FFLAGS and a clean section but they are not required.</p>
<ol>
<li>extract vasp.5.lib for a new install and cd vasp.5.lib</li>
<li>module load pgi</li>
<li>make</li>
</ol>
<h2>VASP Executable</h2>
<p>The VASP executable makefile has 2 sections for a standalone run time and an MPI runtime. In each of these sections you can build a complex versions and a gamma point only version. So if you compile them all there are 4 combinations used. I use the same make file but comment out the MPI section when compiling standalone. Alternatively you can have separate makefiles and latter use make -f filename</p>
<pre class="brush: plain; auto-links: false; collapse: true; light: false; title: vasp makefile; toolbar: true; notranslate">.SUFFIXES: .inc .f .f90 .F
#-----------------------------------------------------------------------
# Makefile for Portland Group F90/HPF compiler release 3.0-1, 3.1
# and release 1.7
# (http://www.pgroup.com/ &amp; ftp://ftp.pgroup.com/x86/, you need
#  to order the HPF/F90 suite)
#  we have found no noticable performance differences between
#  any of the releases, even Athlon or PIII optimisation does
#  not seem to improve performance
#
# The makefile was tested only under Linux on Intel platforms
# (Suse X,X)
#
# it might be required to change some of library pathes, since
# LINUX installation vary a lot
# Hence check ***ALL**** options in this makefile very carefully
#-----------------------------------------------------------------------
#
# Mind that some Linux distributions (Suse 6.1) have a bug in
# libm causing small errors in the error-function (total energy
# is therefore wrong by about 1meV/atom). The recommended
# solution is to update libc.
#
# Mind that some Linux distributions (Suse 6.1) have a bug in
# libm causing small errors in the error-function (total energy
# is therefore wrong by about 1meV/atom). The recommended
# solution is to update libc.
#
# BLAS must be installed on the machine
# there are several options:
# 1) very slow but works:
#   retrieve the lapackage from ftp.netlib.org
#   and compile the blas routines (BLAS/SRC directory)
#   please use g77 or f77 for the compilation. When I tried to
#   use pgf77 or pgf90 for BLAS, VASP hang up when calling
#   ZHEEV  (however this was with lapack 1.1 now I use lapack 2.0)
# 2) most desirable: get an optimized BLAS
#   for a list of optimized BLAS try
#     http://www.kachinatech.com/~hjjou/scilib/opt_blas.html
#
# the two most reliable packages around are presently:
# 3a) Intels own optimised BLAS (PIII, P4, Itanium)
#     http://developer.intel.com/software/products/mkl/
#   this is really excellent when you use Intel CPU's
#
# 3b) or obtain the atlas based BLAS routines
#     http://math-atlas.sourceforge.net/
#   you certainly need atlas on the Athlon, since the  mkl
#   routines are not optimal on the Athlon.
#
#-----------------------------------------------------------------------

# all CPP processed fortran files have the extension .f
SUFFIX=.f

#-----------------------------------------------------------------------
# fortran compiler and linker
#-----------------------------------------------------------------------
FC=pgf90
# fortran linker
FCL=$(FC)

#-----------------------------------------------------------------------
# whereis CPP ?? (I need CPP, can't use gcc with proper options)
# that's the location of gcc for SUSE 5.3
#

CPP_ =  ./preprocess $*$(SUFFIX)

#-----------------------------------------------------------------------
# possible options for CPP:
# possible options for CPP:
# NGXhalf             charge density   reduced in X direction
# wNGXhalf            gamma point only reduced in X direction
# avoidalloc          avoid ALLOCATE if possible
# IFC                 work around some IFC bugs
# CACHE_SIZE          1000 for PII,PIII, 5000 for Athlon, 8000 P4
# RPROMU_DGEMV        use DGEMV instead of DGEMM in RPRO (usually  faster)
# RACCMU_DGEMV        use DGEMV instead of DGEMM in RACC (faster on P4)
#  **** definitely use -DRACCMU_DGEMV if you use the mkl library
#-----------------------------------------------------------------------

CPP    = $(CPP_) -DHOST=\&quot;LinuxPgi\&quot; \
          -DNGXhalf -DCACHE_SIZE=2000 -DPGF90 -Davoidalloc \
          -DRPROMU_DGEMV  \
#		  -DwNGXhalf

#-----------------------------------------------------------------------
# general fortran flags  (there must a trailing blank on this line)
# the -Mx,119,0x200000 is required if you use older pgf90 versions
# on a more recent LINUX installation
# the option will not do any harm on other 3.X pgf90 distributions
#-----------------------------------------------------------------------

#FFLAGS =  -Mfree -Mx,119,0x200000  -tp k8-64 -I/share/apps/opt/fftw/3.3.0-pgi-11.10/include
#Need k8-64 to allow it to run on older Opertons
#FFLAGS =  -Mfree  -tp k8-64,barcelona-64   # doubles exec size (36M-&gt;50M)
FFLAGS =  -Mfree  -tp k8-64

#-----------------------------------------------------------------------
# optimization,
# we have tested whether higher optimisation improves
# the performance, and found no improvements with -O3-5 or -fast
# (even on Athlon system, Athlon specific optimistation worsens performance)
#-----------------------------------------------------------------------

#OFLAG  = -O0 -g -DDEBUG
#OFLAG = -O3 -fastsse
OFLAG = -O2  -fastsse

#OFLAG_HIGH = $(OFLAG)
OFLAG_HIGH = -O3
OBJ_HIGH = nonlr.o nonl.o

OFLAG_LOW = -O1
OBJ_LOW = broyden.o

OBJ_NOOPT =
#DEBUG  = -g -O0
DEBUG  = -O0
INLINE = $(OFLAG)

#-----------------------------------------------------------------------
# the following lines specify the position of BLAS  and LAPACK
# what you chose is very system dependent
# P4: VASP works fastest with Intels mkl performance library
# Athlon: Atlas based BLAS are presently the fastest
# P3: no clue
#-----------------------------------------------------------------------

#BLAS=   -lacml
# Following allows linking with modules
#BLAS=  -lopenblas -L/share/apps/opt/OpenBLAS/0.1-pgi-11.10/lib
# Hard code link
BLAS=  /share/apps/opt/OpenBLAS/0.1-pgi-11.10/lib/libopenblas.a
# use specific libraries (default library path points to other libraries)

# use the mkl Intel libraries for p4 (www.intel.com)
#BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4  -lpthread

# LAPACK, simplest use vasp.5.lib/lapack_double
#LAPACK= ../vasp.5.lib/lapack_double.o

# use atlas optimized part of lapack
#LAPACK= ../vasp.5.lib/lapack_atlas.o  -llapack -lblas -lacml
#LAPACK= ../vasp.5.lib/lapack_atlas.o  -llapack -lacml
#LAPACK= ../vasp.5.lib/lapack_atlas.o

# use the mkl Intel lapack
#LAPACK= -lmkl_lapack

#-----------------------------------------------------------------------

LIB  = -L../vasp.5.lib -ldmy \
     ../vasp.5.lib/linpack_double.o $(LAPACK) \
     $(BLAS) -lfftw3 -L/share/apps/opt/fftw/3.3.0-pgi-11.10/lib

# options for linking (none required)
#LINK    =  -tp k8-64

#-----------------------------------------------------------------------
# fft libraries:
# VASP.4.5 can use FFTW (http://www.fftw.org)
# since the FFTW is very slow for radices 2^n the fft3dlib is used
# in these cases
# if you use fftw3d you need to insert -lfftw in the LIB line as well
# please do not send us any querries reltated to FFTW (no support)
# if it fails, use fft3dlib
#-----------------------------------------------------------------------

FFT3D   = fft3dfurth.o fft3dlib.o  /share/apps/opt/fftw/3.3.0-pgi-11.10/lib/libfftw3.a
#FFT3D   = fftw3d+furth.o fft3dlib.o

#=======================================================================
# MPI section, uncomment the following lines
#
# one comment for users of mpich or lam:
# You must *not* compile mpi with g77/f77, because f77/g77
# appends *two* underscores to symbols that contain already an
# underscore (i.e. MPI_SEND becomes mpi_send__).  The pgf90
# compiler however appends only one underscore.
# Precompiled mpi version will also not work !!!
#
# We found that mpich.1.2.1 and lam-6.5.X are stable
# mpich.1.2.1 was configured with
#  ./configure -prefix=/usr/local/mpich_nodvdbg -fc=&quot;pgf77 -Mx,119,0x200000&quot;  \
# -f90=&quot;pgf90 -Mx,119,0x200000&quot; \
# --without-romio --without-mpe -opt=-O \
#
# lam was configured with the line
#  ./configure  -prefix /usr/local/lam-6.5.X --with-cflags=-O -with-fc=pgf90 \
# --with-f77flags=-O --without-romio
#
# lam was generally faster and we found an average communication
# band with of roughly 160 MBit/s (full duplex)
#
# please note that you might be able to use a lam or mpich version
# compiled with f77/g77, but then you need to add the following
# options: -Msecond_underscore (compilation) and -g77libs (linking)
#
# !!! Please do not send me any queries on how to install MPI, I will
# certainly not answer them !!!!
#=======================================================================
#-----------------------------------------------------------------------
# fortran linker for mpi: if you use LAM and compiled it with the options
# suggested above,  you can use the following lines
#-----------------------------------------------------------------------

FC=mpif90
FCL=$(FC)

#-----------------------------------------------------------------------
# additional options for CPP in parallel version (see also above):
# NGZhalf               charge density   reduced in Z direction
# wNGZhalf              gamma point only reduced in Z direction
# scaLAPACK             use scaLAPACK (usually slower on 100 Mbit Net)
#-----------------------------------------------------------------------

CPP    = $(CPP_) -DMPI  -DHOST=\&quot;LinuxPgi\&quot; \
     -DNGZhalf -DCACHE_SIZE=2000 -DPGF90 -Davoidalloc -DRPROMU_DGEMV \
#     -DwNGZhalf \

#-----------------------------------------------------------------------
# location of SCALAPACK
# if you do not use SCALAPACK simply uncomment the line SCA
#-----------------------------------------------------------------------

SCA=

#-----------------------------------------------------------------------
# libraries for mpi
#-----------------------------------------------------------------------

LIB     = -L../vasp.5.lib -ldmy  \
      ../vasp.5.lib/linpack_double.o $(LAPACK) \
      $(SCA) $(BLAS) -L/share/apps/opt/fftw/3.3.0-pgi-11.10/lib -lfftw3 -lfftw3_mpi

# FFT: only option  fftmpi.o with fft3dlib of Juergen Furthmueller

FFT3D   = fftmpi.o fftmpi_map.o fft3dfurth.o fft3dlib.o

#-----------------------------------------------------------------------
# general rules and compile lines
#-----------------------------------------------------------------------
BASIC=   symmetry.o symlib.o   lattlib.o  random.o

SOURCE=  base.o     mpi.o      smart_allocate.o      xml.o  \
         constant.o jacobi.o   main_mpi.o  scala.o   \
         asa.o      lattice.o  poscar.o   ini.o  mgrid.o  xclib.o  vdw_nl.o  xclib_grad.o \
         radial.o   pseudo.o   gridq.o     ebs.o  \
         mkpoints.o wave.o     wave_mpi.o  wave_high.o  \
         $(BASIC)   nonl.o     nonlr.o    nonl_high.o dfast.o    choleski2.o \
         mix.o      hamil.o    xcgrad.o   xcspin.o    potex1.o   potex2.o  \
         constrmag.o cl_shift.o relativistic.o LDApU.o \
         paw_base.o metagga.o  egrad.o    pawsym.o   pawfock.o  pawlhf.o   rhfatm.o  paw.o   \
         mkpoints_full.o       charge.o   Lebedev-Laikov.o  stockholder.o dipol.o    pot.o \
         dos.o      elf.o      tet.o      tetweight.o hamil_rot.o \
         steep.o    chain.o    dyna.o     sphpro.o    us.o  core_rel.o \
         aedens.o   wavpre.o   wavpre_noio.o broyden.o \
         dynbr.o    rmm-diis.o reader.o   writer.o   tutor.o xml_writer.o \
         brent.o    stufak.o   fileio.o   opergrid.o stepver.o  \
         chgloc.o   fast_aug.o fock.o     mkpoints_change.o sym_grad.o \
         mymath.o   internals.o dynconstr.o dimer_heyden.o dvvtrajectory.o vdwforcefield.o \
         hamil_high.o nmr.o    pead.o     mlwf.o     subrot.o   subrot_scf.o \
         force.o    pwlhf.o  gw_model.o optreal.o   davidson.o  david_inner.o \
         electron.o rot.o  electron_all.o shm.o    pardens.o  paircorrection.o \
         optics.o   constr_cell_relax.o   stm.o    finite_diff.o elpol.o    \
         hamil_lr.o rmm-diis_lr.o  subrot_cluster.o subrot_lr.o \
         lr_helper.o hamil_lrf.o   elinear_response.o ilinear_response.o \
         linear_optics.o linear_response.o   \
         setlocalpp.o  wannier.o electron_OEP.o electron_lhf.o twoelectron4o.o \
         ratpol.o screened_2e.o wave_cacher.o chi_base.o wpot.o local_field.o \
         ump2.o bse_te.o bse.o acfdt.o chi.o sydmat.o dmft.o \
         rmm-diis_mlr.o  linear_response_NMR.o

vasp: $(SOURCE) $(FFT3D) $(INC) main.o
	rm -f vasp
	$(FCL) -o vasp main.o  $(SOURCE)   $(FFT3D) $(LIB) $(LINK)
makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC)
	$(FCL) -o makeparam  $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB)
zgemmtest: zgemmtest.o base.o random.o $(INC)
	$(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB)
dgemmtest: dgemmtest.o base.o random.o $(INC)
	$(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB)
ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC)
	$(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB)
kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC)
	$(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB)

clean:
	-rm -f *.g *.f *.o *.L *.mod vasp ; touch *.F

main.o: main$(SUFFIX)
	$(FC) $(FFLAGS)$(DEBUG)  $(INCS) -c main$(SUFFIX)
xcgrad.o: xcgrad$(SUFFIX)
	$(FC) $(FFLAGS) $(INLINE)  $(INCS) -c xcgrad$(SUFFIX)
xcspin.o: xcspin$(SUFFIX)
	$(FC) $(FFLAGS) $(INLINE)  $(INCS) -c xcspin$(SUFFIX)

makeparam.o: makeparam$(SUFFIX)
	$(FC) $(FFLAGS)$(DEBUG)  $(INCS) -c makeparam$(SUFFIX)

makeparam$(SUFFIX): makeparam.F main.F
#
# MIND: I do not have a full dependency list for the include
# and MODULES: here are only the minimal basic dependencies
# if one strucuture is changed then touch_dep must be called
# with the corresponding name of the structure
#
base.o: base.inc base.F
mgrid.o: mgrid.inc mgrid.F
constant.o: constant.inc constant.F
lattice.o: lattice.inc lattice.F
setex.o: setexm.inc setex.F
pseudo.o: pseudo.inc pseudo.F
poscar.o: poscar.inc poscar.F
mkpoints.o: mkpoints.inc mkpoints.F
wave.o: wave.F
nonl.o: nonl.inc nonl.F
nonlr.o: nonlr.inc nonlr.F

$(OBJ_HIGH):
	$(CPP)
	$(FC) $(FFLAGS) $(OFLAG_HIGH) $(INCS) -c $*$(SUFFIX)

$(OBJ_LOW):
	$(CPP)
	$(FC) $(FFLAGS) $(OFLAG_LOW) $(INCS) -c $*$(SUFFIX)

$(OBJ_NOOPT):
	$(CPP)
	$(FC) $(FFLAGS) $(INCS) -c $*$(SUFFIX)

fft3dlib_f77.o: fft3dlib_f77.F
	$(CPP)
	$(F77) $(FFLAGS_F77) -c $*$(SUFFIX)

.F.o:
	$(CPP)
	$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX)
.F$(SUFFIX):
	$(CPP)
$(SUFFIX).o:
	$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX)
</pre>
<ol>
<li>extract vasp.5.2.12 for the current version</li>
<li>module load pgi openmpi openblas fftw</li>
<li>Add makefile above or customise your own</li>
<li>In makefile correct paths for libraries and features to enable.</li>
<li>make</li>
<li>Copy the compiled vasp executable to destination. I use vasp and vasp.g for gamma point.</li>
</ol>
<h3>Gamma Point</h3>
<ol>
<li>Use same makefile as above but add -DwNGXhalf to CPP options</li>
</ol>
<h1>Quantum Espresso</h1>
<ol>
<li>Download latest version from <a href="http://www.quantum-espresso.org/download.php" target="_blank">http://www.quantum-espresso.org/download.php</a> as well as the examples</li>
<li>tar xzvf both the src and examples. They end up in same directory</li>
<li>module load pgi openmpi openblas fftw3</li>
<li>
<pre class="brush: plain; title: ; notranslate">./configure F90=pgf90 FC=pgf90 F77=pgf77 CC=pgcc MPIF90=mpif90 \
FFLAGS=&quot;-fast -O2 -tp k8-64&quot; CFLAGS=&quot;-fast -O3 -tp k8-64&quot; \
FFT_LIBS=&quot;-L/share/apps/opt/fftw/3.3.0-pgi-11.10/lib -lfftw3 -lfftw3_mpi&quot; \
BLAS_LIBS=&quot;-L/share/apps/opt/OpenBLAS/0.1-pgi-11.10/lib -lopenblas&quot; \
LAPACK_LIBS=&quot;-L/share/apps/opt/OpenBLAS/0.1-pgi-11.10/lib -lopenblas&quot; \
LIBDIRS=&quot;/share/apps/opt/fftw/3.3.0-pgi-11.10/lib /share/apps/opt/OpenBLAS/0.1-pgi-11.10/lib&quot;</pre>
</li>
<li>make pw pp -j8</li>
<li>make all -j8</li>
<li>to test: cd examples, modify environment_variables (e.g. tmp dir and mpirun -np ),  ./run_all_examples, then compare example??/results to reference</li>
<li>root: copy entire espresso-4.3.2 directory to /share/apps/opt/espresso/4.3.2/pgi-openmpi</li>
<li>Copy an existing /share/apps/modulefiles/espresso module and update it for new version. Also update .version to new version.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://jrudd.org/2011/12/compilation-notes-for-rocks-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Papercut</title>
		<link>http://jrudd.org/2010/08/papercut/</link>
		<comments>http://jrudd.org/2010/08/papercut/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 23:11:23 +0000</pubDate>
		<dc:creator>James Rudd</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Novell]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Papercut]]></category>
		<category><![CDATA[Photocopier]]></category>
		<category><![CDATA[photocopiers]]></category>
		<category><![CDATA[Printer]]></category>
		<category><![CDATA[printer usage]]></category>
		<category><![CDATA[Printing]]></category>
		<category><![CDATA[student laptop]]></category>
		<category><![CDATA[Windows 2008]]></category>
		<category><![CDATA[Windows 2008 R2]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://jrudd.org/wordpress/?p=232</guid>
		<description><![CDATA[I have received a few questions asking about Papercut so here are some of the details about it and what we use it for. Papercut can run on a Windows Server (2003, 2008 or 2008 R2) using windows print queues or a Novell Linux OES server with iPrint (CUPS &#38; SAMBA), it is written in <a href='http://jrudd.org/2010/08/papercut/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://jrudd.org/wp-content/uploads/2010/08/Papercut1.png" rel="lightbox[232]"><img class="alignleft size-medium wp-image-242" title="Papercut Accounts" src="http://jrudd.org/wp-content/uploads/2010/08/Papercut1-294x300.png" alt="" width="294" height="300" /></a>I have received a few questions asking about <a href="http://www.papercut.com">Papercut</a> so here are some of the details about it and what we use it for.</p>
<p>Papercut can run on a Windows Server (2003, 2008 or 2008 R2) using windows print queues or a Novell Linux OES server with <a href="http://www.papercut.com/download/ng/#novell">iPrint</a> (CUPS &amp; SAMBA), it is written in Java with some wrappers for the OS in use.</p>
<p>We originally ran it on a Server 2003 R2 (x86) but have recently updated to a Windows 2008 R2 (x64)print server. The main reason for the upgrade was to provide up to date drivers for Windows 7 32 &amp; 64bit. We also run the <a href="http://www.papercut-mf.com">Papercut MF</a> version which costs A LOT more, but allows you to use it with external devices, such as photocopiers.</p>
<p>Papercut has some really useful features, <a href="http://www.papercut.com/tour/balance-recharge/top-up-cards/">Card recharge</a> allows you to generate top up cards and print them out yourself. Then you just cut them up and given them to the office (or canteen) to sell to the students. Makes recharging much easier and no need for office staff to login to an admin console to top up accounts.</p>
<p>We recently had a student laptop roll-out (NSW DER), these laptops are not on our domain so needed an alternative way to print. Papercut has a feature called <a href="http://www.papercut.com/tour/web-print/">WebPrint </a>which allows students to upload MS office or PDF files to a website and have them printed to the chosen printer. You need to run software for it on a windows pc (server or client) which automatically opens the document and prints it to the chosen printer. As our Print server is running Windows and is a virtual machine we just configured it to auto-login as a limited user we created and installed Office, and Acrobat.</p>
<p>We use the <a href="http://www.papercut.com/tour/reporting-in-detail/">reports</a> function for auditing staff accounts and charging printer usage back to faculties. Staff are automatically added to different charge accounts based on their AD group membership.</p>
<p>We have just started using Advanced Scripting to charge staff different prices than students on shared copiers and printers.<br />
The following script is what we use, as it is based on how faculties are invoiced at the end of each term. It is based on the Papercut recipe &#8220;Discount for staff&#8221; with a few changes.</p>
<pre class="brush: jscript; collapse: true; light: false; title: ; toolbar: true; notranslate">
/*
* Change Pricing for staff
*
* Staff are charged based on cost to school.
*
*/
function printJobHook(inputs, actions) {

var DISCOUNT_GROUP   = &quot;Staff-All&quot;;
var COST_COLOUR  = 0.07; // Click Rate of Colour
var COST_BW  = 0.02;  // Click Rate of B/W
var COST_A4  = 0.01;  // Price per page of A4
var COST_A3  = 0.03;  // Price per page of A3

/*
* This print hook will need access to all job details
* so return if full job analysis is not yet complete.
* The only job details that are available before analysis
* are metadata such as username, printer name, and date.
*
* See reference documentation for full explanation.
*/

if (!inputs.job.isAnalysisComplete) {
	// No job details yet so return.
	return;
}

if (inputs.user.isInGroup(DISCOUNT_GROUP)) {
	// Debug messages are written to [install-path]/server/logs/server.log
	actions.log.debug(&quot;Cost before discount: &quot; + inputs.job.cost);

	// Initial 0
	var newCost = 0;

	// Includes Duplex
	if (inputs.job.paperSizeName == &quot;A4&quot;) {
		newCost = inputs.job.totalSheets * COST_A4;
	}
	else {
		newCost = inputs.job.totalSheets * COST_A3 ;
	}

	newCost += inputs.job.totalGrayscalePages * COST_BW;
	newCost += inputs.job.totalColorPages * COST_COLOUR;

	 actions.job.setCost(newCost);

	actions.log.debug(&quot;Staff Pricing on &quot; + inputs.job.printerName + &quot; For &quot; + inputs.job.totalSheets +
		&quot; sheets had &quot; + inputs.job.totalGrayscalePages + &quot; B/W &amp; &quot; +
		inputs.job.totalColorPages + &quot; Colour, Cost after discount: &quot; + newCost);

	// Record that as discount was applied in the job comment.
	actions.job.addComment(&quot;Staff Pricing applied. Had &quot; + inputs.job.totalGrayscalePages + &quot; B/W &amp; &quot; +
	inputs.job.totalColorPages + &quot; Colour&quot;);
	}
}
</pre>
<p>Other useful features:</p>
<ul>
<li>Students and staff see a summary of how many pages they are going to print, which helps reduce accidental printing of entire chapters of text instead of just a few pages.</li>
<li>Logs and statistics show which printers are getting used, how much is getting printed, and who printed the document but didn&#8217;t collect it.</li>
<li>Great support. I have contacted them over a number of issues and they have always gotten back quickly with good ideas, or have added features in later versions.</li>
</ul>
<p>Downsides:</p>
<ul>
<li>Although the price for education version of <a href="http://www.papercut.com/pricing/education/">Papercut NG </a>is not too bad, to get the MF version which supports copiers it costs around twice as much. Also you then need cost recovery devices for the copiers ~AUD$1,800 each, and there are annual support and maintenance costs ~AUD$1,000/year.</li>
</ul>
<p>If you want to get an idea of how much printing your staff and students or just want to keep a record of who is printing what (like you could do easily with iPrint)  try the free <a href="http://www.papercut.com/products/free_software/print_logger/">Papercut Print Logger</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrudd.org/2010/08/papercut/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using BackupPC with DiskShadow to backup open files</title>
		<link>http://jrudd.org/2010/07/using-backuppc-with-diskshadow-to-backup-open-files/</link>
		<comments>http://jrudd.org/2010/07/using-backuppc-with-diskshadow-to-backup-open-files/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 14:59:48 +0000</pubDate>
		<dc:creator>James Rudd</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Administrator]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[backuppc]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[DiskShadow]]></category>
		<category><![CDATA[noacl]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[server 2008 R2]]></category>
		<category><![CDATA[snapshots]]></category>
		<category><![CDATA[Task Scheduler]]></category>
		<category><![CDATA[VShadow]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://jrudd.org/wordpress/?p=151</guid>
		<description><![CDATA[This post is to assist in the setup of a BackupPC system able to backup in use files by using MS volume snapshots. It also has the benefit of only having the RSync daemon running during the backup which increases security.]]></description>
			<content:encoded><![CDATA[
<h1>Introduction</h1>
<p>This post is to assist in the setup of a BackupPC system able to  backup in use files by using MS volume snapshots. It also has the  benefit of only having the RSync daemon running during the backup which  increases security.</p>
<p>This method is based on some other posts I  have seen using <a href="http://www.goodjobsucking.com/?p=62">VShadow</a>, <a href="http://www.goodjobsucking.com/?p=62"><em>Backing Up Open Files on Windows with Rsync</em></a>, and some  suggestions on <a href="http://www.goodjobsucking.com/?p=62&amp;cpage=2#comment-3159">DiskShadow</a> but goes further in using RSync as a system service giving full access  to files, and removing the need to use winexe.</p>
<h2>General Outline</h2>
<ol>
<li>Create a new user <em><strong>backuppc </strong></em>(try to match case of the user on Linux). Very limited rights</li>
<li>Install Cygwin with RSync, OpenSSH and configure them</li>
<li>Create a scheduled task to run as SYSTEM when triggered by a certain event</li>
<li>Set BackupPC server for passwordless login to host and modify Pre/Post Dump Cmds</li>
</ol>

<h1>Overview</h1>
<p>In Windows 7 and Server 2008 R2 elevation is required to create snapshots. As a remote SSH connection cannot bypass UAC a way is needed to create the snapshot, bypassing the elevation prompt. I also wished to run the Rsync Daemon as SYSTEM user so it has rights to view all files.</p>
<p>To do this I moved all the elevated tasks into a Task Scheduler item that is set to run as SYSTEM, and is triggered by an Event log event.</p>
<ol>
<li>BackupPC performs a password-less key SSH logon to client</li>
<li>It runs a script which creates an event log entry and then waits for RSync to start before returning to BackupPC and starting the backup.</li>
<li>Task scheduler is triggered by <a href="http://support.microsoft.com/kb/315410">Event Log</a> and starts DiskShadow as SYSTEM.</li>
<li>Disk shadow creates a shadow of any chosen volumes, mounts them and then starts RSync.<br />
It then waits for a file to be created by BackupPC at the end of the backup telling it to stop RSync and delete the snaphots.</li>
</ol>
<h3>Flow and triggers</h3>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="205" valign="top"><strong>BackupPC Server</strong></td>
<td colspan="2" width="411" valign="top"><strong>Host PC</strong></td>
</tr>
<tr>
<td width="205" valign="top"><strong>backuppc User</strong></td>
<td width="205" valign="top"><strong>backuppc User</strong></td>
<td width="205" valign="top"><strong>SYSTEM</strong></td>
</tr>
<tr>
<td style="text-align: center;" colspan="3" width="411" valign="top"><strong>Start Backup</strong></td>
</tr>
<tr>
<td width="205" valign="top">SSH to Host PC</td>
<td width="205" valign="top"></td>
<td width="205" valign="top"></td>
</tr>
<tr>
<td width="205" valign="top"></td>
<td width="205" valign="top">Log Event</td>
<td width="205" valign="top">Diskshadow: Snaphsot</td>
</tr>
<tr>
<td width="205" valign="top"></td>
<td width="205" valign="top"></td>
<td width="205" valign="top">Start Rsync</td>
</tr>
<tr>
<td width="205" valign="top"></td>
<td width="205" valign="top">Close and return</td>
<td width="205" valign="top"></td>
</tr>
<tr>
<td width="205" valign="top">Begin Backup</td>
<td width="205" valign="top"></td>
<td width="205" valign="top"></td>
</tr>
<tr>
<td style="text-align: center;" colspan="3" width="411" valign="top"><strong>Finish Backup</strong></td>
</tr>
<tr>
<td width="205" valign="top">SSH to Host PC</td>
<td width="205" valign="top"></td>
<td width="205" valign="top"></td>
</tr>
<tr>
<td width="205" valign="top"></td>
<td width="205" valign="top">Create a Wake.up file</td>
<td width="205" valign="top"></td>
</tr>
<tr>
<td width="205" valign="top"></td>
<td width="205" valign="top"></td>
<td width="205" valign="top">Stop Rsync</td>
</tr>
<tr>
<td width="205" valign="top"></td>
<td width="205" valign="top"></td>
<td width="205" valign="top">Delete Snaphost</td>
</tr>
</tbody>
</table>
<h1>Host PC</h1>
<p>Create a new user, <em><strong>backuppc</strong></em>, you can limit this account further in Security policy after everything is configured.</p>
<p>Create a BackupPC folder and add the following scripts to it. These are also available in a <a href="http://jrudd.org//download/general/BackupPC-Config.zip">zip file</a>. Note: There is a file embedded within this post, please visit this post to download the file. You will need to modify paths depending on where you create the folder. I used C:\cygwin\BackupPC but a better location may be C:\cygwin\usr\share\BackupPC</p>
<p>Most of these scripts are just modified versions of the ones written for <a href="http://www.goodjobsucking.com/?p=62">VShadow</a>, changed to work with DiskShadow and Task Scheduler.</p>
<p><strong>pre-cmd.vbs</strong></p>
<pre class="brush: vb; collapse: true; light: false; title: ; toolbar: true; notranslate">' This file starts the commands
' It will start the snapshot process and quite once RSync is running

Const Rsync = &quot;C:\cygwin\var\run\rsyncd.pid&quot;
Const Flag = &quot;C:\cygwin\var\run\wake.up&quot;
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
'
' Pid file shouldn't be there already
' Check /stop service , still there delete
'
If DoesFileExist(Rsync)=0 Then
	fso.DeleteFile(Rsync)
End If
'
' Nor should &quot;wake.up&quot;
'
If DoesFileExist(Flag)=0 Then
   fso.DeleteFile(Flag)
End If

Set objShell = CreateObject(&quot;WScript.Shell&quot;)
' objShell.Exec &quot;C:\BackupPC\backuppc.cmd &gt; &quot; &amp; Log

' This writes event log entry that triggers task scheduler to start system process
' that takes snapshot and starts RSync
objShell.Exec &quot;Logevent.exe -r &quot;&quot;BackupPC&quot;&quot; -e 10 -s S &quot;&quot;Backup Start&quot;&quot; &quot;
Wscript.Echo &quot;Sent BackupPC Event Log Trigger&quot;

'
' Just sleep until the file &quot;rsyncd.pid&quot; appears
'

While DoesFileExist(Rsync)
   wscript.sleep 10000
Wend

' functions

function DoesFileExist(FilePath)
Dim fso
	Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
	if not fso.FileExists(FilePath) then
		DoesFileExist = -1
	else
		DoesFileExist = 0
	end if
	Set fso = Nothing

end function</pre>
<p><strong>backuppc.cmd</strong></p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">c:
cd C:\cygwin\BackupPC
diskshadow /s DiskShadowScript.txt /l C:\cygwin\var\log\diskshadow.log
del C:\cygwin\var\tmp\*.cab /q
c:cd C:\cygwin\BackupPCdiskshadow /s DiskShadowScript.txt /l C:\cygwin\var\log\diskshadow.log
del C:\cygwin\var\tmp\*.cab /q</pre>
<p><strong>DiskShadowScript.txt</strong></p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">#DiskShadow script file

#Make shadows persistent, No writers as data volume

# If backing up C: and any app files (ntds, database, etc) use writers

#SET CONTEXT PERSISTENT NOWRITERS

SET CONTEXT PERSISTENT

#Cab location for process

SET METADATA C:\cygwin\var\tmp\backup.cab

SET VERBOSE ON

BEGIN BACKUP

#Alias volume with alias

ADD VOLUME C: ALIAS SystemData

ADD VOLUME F: ALIAS UserData

#Create Snapshot

CREATE

#Expose the volume and run command file then unexpose

EXPOSE %UserData% B:

EXPOSE %SystemData% T:

EXEC C:\cygwin\BackupPC\Serverbackup.cmd

UNEXPOSE B:

UNEXPOSE T:

END BACKUP

#Delete the shadow copy

DELETE SHADOWS SET %VSS_SHADOW_SET%

#End of script</pre>
<p><strong>Serverbackup.cmd</strong></p>
<pre class="brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate">REM Start RSync now that Snapshots are created

net start rsyncd

REM Need to wait until backup completed

cscript &quot;C:\cygwin\BackupPC\sleep.vbs&quot;

Logevent.exe -r &quot;BackupPC&quot; -e 20 -s S &quot;Backup Completed&quot;
</pre>
<p><strong>sleep.vbs</strong></p>
<pre class="brush: vb; collapse: true; light: false; title: ; toolbar: true; notranslate">Const Rsync = &quot;C:\cygwin\var\run\rsyncd.pid&quot;
Const Flag = &quot;C:\cygwin\var\run\wake.up&quot;
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)

' Just sleep until the file &quot;rsyncd.pid&quot; appears
While DoesFileExist(Rsync)
   wscript.sleep 10000
Wend

' Now sleep until the file &quot;wake.up&quot; appears
While DoesFileExist(Flag)
   wscript.sleep 10000
Wend

fso.DeleteFile(Flag)

' It's time to kill Rsync
'Stop Service
strServiceName = &quot;rsyncd&quot;
Set objWMIService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;)
Set colListOfServices = objWMIService.ExecQuery(&quot;Select * from Win32_Service Where Name ='&quot; &amp; strServiceName &amp; &quot;'&quot;)
For Each objService in colListOfServices
    objService.StopService()
	Wscript.Echo &quot;RSyncD Stopped&quot;
Next

' Wait for Rsync to let go
wscript.sleep 5000

' Delete PID file
If DoesFileExist(Rsync)=0 Then
   fso.DeleteFile(Rsync)
End If

' functions
function DoesFileExist(FilePath)
Dim fso
	Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
	if not fso.FileExists(FilePath) then
		DoesFileExist = -1
	else
		DoesFileExist = 0
	end if
	Set fso = Nothing

end function
</pre>
<h2>Cygwin</h2>
<p>Install Cygwin and choose to install packages RSync and OpenSSH</p>
<p>Start an elevated Cygwin (Run as an Administrator )</p>
<h4>Config</h4>
<p>Cygwin 1.7 changes the way to ignore NT Security from the <em>nontsec </em>environment to modifying fstab file.</p>
<p>In your prefered editor modify /etc/fstab and uncomment the bottom line and add <em>noacl </em>as below, this tells it to ignore security :</p>
<pre class="brush: plain; light: true; title: ; notranslate">none /cygdrive cygdrive binary,noacl,posix=0,user 0 0</pre>
<p>Run following to update group and user lists (if on a domain only add the users you want)</p>
<p>[bashlight=1]mkpasswd –l >/etc/passwd<br />
mkgroup –l /etc/group[/bash]</p>
<h3>OpenSSH</h3>
<p>Configure Open SSH using <em>ssh-host-config</em>, create both the accounts it suggests for privilege isolation and running the service (cyg_service &amp; sshd).<br />
This should also automatically add the Firewall Exceptions (SSHD).</p>
<h4>Setting up Keyless</h4>
<p><span style="font-weight: normal;">Login as backuppc user.</span><br />
<span style="font-weight: normal;"> </span><span style="font-weight: normal;">Use </span></p>
<pre class="brush: plain; light: true; title: ; notranslate">runas /user:backuppc cmd</pre>
<p>Or</p>
<pre class="brush: plain; light: true; title: ; notranslate">runas /user:domain\backuppc cmd</pre>
<p>Run c:\cygwin\Cygwin.bat to start Cygwin as BackupPC user</p>
<p>You need to add the id_rsa.pub file from the BackupPC user on BackupPC server to C:\cygwin\home\backuppc\.ssh\authorized_keys If you have not already created one follow the instructions below in BackupPC &#8211; SSH section.</p>
<h3>RSync</h3>
<p>To install RSync as a system service use:</p>
<pre class="brush: plain; title: ; notranslate">C:\cygwin\bin\cygrunsrv.exe -I rsyncd -d &quot;RSync Daemon&quot; -O --type manual -p /bin/rsync.exe -f &quot;Used by BackupPC to remotely access files for backup&quot; -a &quot; --config=/etc/rsyncd.conf --daemon --no-detach&quot;</pre>
<p>Modify the /etc/rsyncd.conf file to reflect what drives you want to backup. It is better to edit this file later after you have modified the DiskShadowScript.txt and changed which drive letter it exposes shadows as.</p>
<p>Add a RSync exception to the firewall.</p>
<p>Open <em>Windows Firewall with Advanced Security</em> and choose Inbound Rules, New Rule, Program,  Next</p>
<p>Browse to C:\cygwin\bin\rsync.exe and then choose your options and name the rule</p>
<p>When finished open the rule, click Scope tab and add a Remote IP, that of the BackupPC server. This restricts RSync to only be accessible from BackupPC. You may also wish to similarly modify SSHD to only allow SSH access from BackupPC server.</p>
<h2>DiskShadow</h2>
<p>If you are backing up a windows Server 2008 or 2008 R2 host you already have DiskShadow installed. However, if you are running Windows 7 or Vista you will need to grab a copy from an equivalent server (x86 or x64). It is located in the System32 directory and you will also need the language file from the en-US folder.</p>
<p>I have <a href="http://jrudd.org//download/utilities/DiskShadow.zip">zipped the files needed</a> for x86 and x64 if you do not have immediate access to a Server.Note: There is a file embedded within this post, please visit this post to download the file. (The x86 files are from Server 2008 and x64 are from 2008 R2)</p>
<p>Copy the files from your architecture to the system32 directory and en-US subdirectory.</p>
<h3>LogEvent</h3>
<p>To generate the custom event log entry a tool from the Windows 2000 Resource kit is used, <a href="http://support.microsoft.com/kb/315410">LogEvent</a>, (<a href="http://www.dynawell.com/download/reskit/microsoft/win2000/logevent.zip">Download</a>). This needs to be either placed in the Path (e.g. Windows dir) or scripts need to directly call it.</p>
<h2>Task Scheduler</h2>
<p>The easiest way to configure this is to manually run LogEvent once to generate an event in the log.</p>
<pre class="brush: plain; light: true; title: ; notranslate">Logevent.exe -r &quot;BackupPC&quot; -e 10 -s S &quot;Backup Start&quot;</pre>
<p>Then open Event Viewer, Select the new BackupPC event and choose <em>Attach Task to this Event</em>, and in the wizard click next until it asks for the program, then give it <strong>C:\cygwin\BackupPC\backuppc.cmd</strong></p>
<p>On Final page choose to <em>Open Properties</em> when you click Finish</p>
<p>Click the <em>Change User or Group</em> button and type in <strong>System </strong>as the user  and click OK. Also tick the <em>Run with highest privileges</em> box</p>
<h1>BackupPC Server</h1>
<h2>SSH</h2>
<p>This section is only needed if you do not already have keys generated for the backuppc user.</p>
<p>Login as backuppc user, either with password or simply “su – backuppc” from root</p>
<p>Generate SSH Keys, <span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><em>ssh-keygen –t rsa</em></span>, do not set a password. Copy id_rsa.pub into C:\cygwin\home\backuppc\.ssh \authorized_keys</p>
<p>Test by running <em>ssh -v backuppc@host</em> to test the connection</p>
<h2>BackupPC Host File</h2>
<p>In the web interface change the following for the host.</p>
<pre class="brush: plain; light: true; title: ; notranslate">DumpPreUserCmd:  $sshPath -q -x -l backuppc $host cscript &quot;C:\cygwin\BackupPC\pre-cmd.vbs&quot;
 DumpPostUserCmd: $sshPath -q -x -l backuppc $host echo &quot;Complete: $xferOK&quot; &gt; /var/run/wake.up</pre>
<h2>Test Run</h2>
<p>If you have existing backups from a previous RSync config, it is a good idea to run a full backup to ensure any in use files are part of the base. In my case I also changed the <em>noacl </em>flag which affected the file attributes RSync sees.</p>
<h1>Tips</h1>
<p>Set your antivirus to exclude the exposed drives. As they are read only it just slows down the reading of files by RSync.</p>
<h3>Downloads</h3>
Note: There is a file embedded within this post, please visit this post to download the file.
<h1>Updates</h1>
<ul>
<li>While writing this up I found a good alternative way of using VShadow with SSH to backup in use files, that uses the AT command instead of task scheduler to get around UAC, <a href="http://geraldbrandt.com/2010/06/08/backuppc-with-sshrsyncvss-on-windows-server/">BackupPC with ssh/rsync/VSS on Windows Server</a>. The only down side to this method is the SSH connection requires an Admin account, but if configured securely this should be fine. It also a lot simpler to configure as it does not require configuring Task Scheduler.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jrudd.org/2010/07/using-backuppc-with-diskshadow-to-backup-open-files/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>VideoLAN VLC</title>
		<link>http://jrudd.org/2007/12/videolan-vlc/</link>
		<comments>http://jrudd.org/2007/12/videolan-vlc/#comments</comments>
		<pubDate>Sun, 02 Dec 2007 04:33:58 +0000</pubDate>
		<dc:creator>James Rudd</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[Player]]></category>
		<category><![CDATA[Repackaging]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://jrudd.org/wordpress/2007/12/02/videolan-vlc/</guid>
		<description><![CDATA[VideoLAN VLC is a great cross platform media player ideal for networks. CODECs for most formats are included with the player so it can be easily deployed without needing extra installers. As it is self contained it is very easy to repackage as an MSI for deployment or it can run straight off the network <a href='http://jrudd.org/2007/12/videolan-vlc/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>VideoLAN VLC  is a great cross platform media player ideal for networks. CODECs for most formats are included with the player so it can be easily deployed without needing extra installers.</p>
<p>As it is self contained it is very easy to repackage as an MSI for deployment or it can run straight off the network without installation (although it is a bit slow to load this way).</p>
<p>VLC runs on Windows, Mac and Linux so it can provide a uniform interface across platforms.</p>
<p>The latest version, 0.8.6d fixes some security problems and improves playback on Mac.</p>
<ul>
<li><a href="http://www.videolan.org/vlc/" target="_blank">VLC media player </a></li>
<li><a href="http://trac.videolan.org/vlc/browser/tags/0.8.6d/NEWS" target="_blank">VLC 0.8.6d release notes </a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jrudd.org/2007/12/videolan-vlc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMing X Server</title>
		<link>http://jrudd.org/2007/11/xming-x-server/</link>
		<comments>http://jrudd.org/2007/11/xming-x-server/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 05:56:24 +0000</pubDate>
		<dc:creator>James Rudd</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[X server]]></category>
		<category><![CDATA[X11]]></category>

		<guid isPermaLink="false">http://jrudd.org/wordpress/2007/11/17/xming-x-server/</guid>
		<description><![CDATA[This is a free X Server that is great for managing Linux servers using SSH and PuTTY from a Windows PC. http://www.straightrunning.com/XmingNotes/ I wrote an article at Cool Solutions on Remote Management using SSH and X-Forwarding that gives some idea of its use.]]></description>
			<content:encoded><![CDATA[<p> This is a free X Server that is great for managing Linux servers using SSH and PuTTY from a Windows PC.</p>
<p><a href="http://www.straightrunning.com/XmingNotes/" target="_blank">http://www.straightrunning.com/XmingNotes/</a></p>
<p>I wrote an  article at Cool Solutions on <a href="http://www.novell.com/coolsolutions/feature/19258.html" title="Remote Management using SSH and X-Forwarding" target="_blank">Remote Management using SSH and X-Forwarding</a> that gives some idea of its use.</p>
]]></content:encoded>
			<wfw:commentRss>http://jrudd.org/2007/11/xming-x-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

