mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-25 00:15:43 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@4518 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			171 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| ################################################################################
 | |
| #  Create a generic HPC image 
 | |
| #  This script is an example of how to create an HPC image with xCAT stateless.
 | |
| #  in this example you may need to change some of the parameters.  In the future
 | |
| #  we should probably place this in the database...
 | |
| #  All good sys admins can reproduce their environments.  Creating a stateless 
 | |
| #  image should be reproducable.  Doing this with a script is a good idea.
 | |
| #  
 | |
| ################################################################################
 | |
| 
 | |
| 
 | |
| # specify the OS stuff.  You'll probably want to change this.  If you do then you'll
 | |
| # need to make sure there is a *.pkglist and *.exlist
 | |
| PROFILE=compute
 | |
| ARCH=x86_64
 | |
| OS=centos5.3
 | |
| 
 | |
| # this is where the OS image will reside
 | |
| IMGROOT=/install/netboot/$OS/$ARCH/$PROFILE/rootimg
 | |
| 
 | |
| # remove the old image if it exists.
 | |
| rm -rf /install/netboot/$OS/$ARCH/$PROFILE
 | |
| 
 | |
| # generate the base image
 | |
| # for IBM: tg3 in older blades, bnx in newer stuff, and igb in the nehalem based products.
 | |
| /opt/xcat/share/xcat/netboot/centos/genimage -i eth0 -n libphy,tg3,bnx2,igb -o $OS -p $PROFILE
 | |
| 
 | |
| # update the yum database in the image
 | |
| rm -rf $IMGROOT/etc/yum.repos.d
 | |
| yum --installroot=$IMGROOT clean all
 | |
| cp -a /etc/yum.repos.d/ $IMGROOT/etc/
 | |
| rm -rf $IMGROOT/etc/yum.repos.d/xCAT-*
 | |
| 
 | |
| # no selinux!!
 | |
| echo SELINUX=disabled > $IMGROOT/etc/sysconfig/selinux
 | |
| 
 | |
| # fix respawns
 | |
| cp $IMGROOT/etc/inittab $IMGROOT/etc/inittab.ORIG
 | |
| grep -v 38400 $IMGROOT/etc/inittab.ORIG  > $IMGROOT/etc/inittab
 | |
| 
 | |
| # filesystem setup, you'll want to customize this.  We have swap and scratch
 | |
| # configured here.  But if you don't have disks then this may not help.
 | |
| # we name our / partition the image name (compute by default) plus a timestamp.
 | |
| 
 | |
| TIME=`date +%s`
 | |
| cp $IMGROOT/etc/fstab $IMGROOT/etc/fstab.ORIG
 | |
| echo "proc /proc proc rw 0 0
 | |
| sysfs /sys sysfs rw 0 0
 | |
| devpts /dev/pts devpts rw,gid=5,mode=620 0 0
 | |
| $PROFILE-$TIME / tmpfs rw 0 1
 | |
| #/dev/sda1  swap  swap defaults 0 0
 | |
| #/dev/sda2  /scratch ext3 defaults 0 0
 | |
| " > $IMGROOT/etc/fstab
 | |
| mkdir $IMGROOT/scratch 
 | |
| 
 | |
| ### get ntp to start on boot
 | |
| chroot $IMGROOT chkconfig --level 345 ntpd on
 | |
| 
 | |
| #### user stuff so that we can do some work ####
 | |
| cp /etc/shadow $IMGROOT/etc/
 | |
| cp /etc/group $IMGROOT/etc/
 | |
| cp /etc/passwd $IMGROOT/etc/
 | |
| cp /etc/hosts $IMGROOT/etc/
 | |
| 
 | |
| ### scaling fixes #####
 | |
| echo "# increase TCP max buffer size
 | |
| net.core.rmem_max = 33554432
 | |
| net.core.wmem_max = 33554432
 | |
| net.core.rmem_default = 65536
 | |
| net.core.wmem_default = 65536
 | |
| # increase Linux autotuning TCP buffer limits
 | |
| # min, default, and max number of bytes to use
 | |
| net.ipv4.tcp_rmem = 4096 33554432 33554432
 | |
| net.ipv4.tcp_wmem = 4096 33554432 33554432
 | |
| net.ipv4.tcp_mem= 33554432 33554432 33554432
 | |
| net.ipv4.route.flush=1
 | |
| net.core.netdev_max_backlog=1500
 | |
| 
 | |
| #GPFS / NFS Tuning
 | |
| net.ipv4.conf.all.arp_filter = 1
 | |
| net.ipv4.conf.all.rp_filter = 1
 | |
| net.ipv4.neigh.default.gc_thresh1 = 1024
 | |
| net.ipv4.neigh.default.gc_thresh2 = 4096
 | |
| net.ipv4.neigh.default.gc_thresh3 = 8192
 | |
| net.ipv4.neigh.default.gc_stale_time = 24" >> $IMGROOT/etc/sysctl.conf
 | |
| 
 | |
| ## Limits: need to make sure users can have unlimited memory (ulimit -l unlimited)
 | |
| cp /etc/security/limits.conf $IMGROOT/etc/security/
 | |
| 
 | |
| ### add torque ### 
 | |
| /opt/xcat/share/xcat/netboot/add-on/torque/add_torque $IMGROOT mgt /opt/torque / local
 | |
| 
 | |
| # update the limit on pegged memory limit and if they have old xCAT then make sure
 | |
| # it says torque instead of pbs in the paths of the config file.
 | |
| perl -pi -e 's/ulimit -n 20000/ulimit -n 20000; ulimit -l unlimited/g' $IMGROOT/etc/init.d/pbs_mom
 | |
| perl -pi -e 's/spool\/pbs/spool\/torque/g' $IMGROOT/etc/init.d/pbs_mom
 | |
| perl -pi -e 's/spool\/pbs/spool\/torque/g' $IMGROOT/etc/init.d/pbs_mom
 | |
| perl -pi -e 's/PBS_HOME=\/var\/spool\/pbs/PBS_HOME=\/var\/spool\/torque/g' $IMGROOT/var/spool/torque/mom_priv/epilogue
 | |
| perl -pi -e 's/PBS_HOME=\/var\/spool\/pbs/PBS_HOME=\/var\/spool\/torque/g' $IMGROOT/var/spool/torque/mom_priv/prologue
 | |
| perl -pi -e 's/PBS_HOME=\/var\/spool\/pbs/PBS_HOME=\/var\/spool\/torque/g' $IMGROOT/var/spool/torque/mom_priv/takedownnode
 | |
| 
 | |
| ### stateless init script does NTP, syslog, etc. ####
 | |
| cp /etc/localtime $IMGROOT/etc/
 | |
| cp /opt/xcat/share/xcat/netboot/add-on/stateless/stateless $IMGROOT/etc/init.d/
 | |
| perl -pi -e 's!Mountain!Mexico/General!g' $IMGROOT/etc/init.d/stateless
 | |
| perl -pi -e 's/driftfile \/etc\/ntp/driftfile \/var\/lib\/ntp/g' $IMGROOT/etc/init.d/stateless
 | |
| perl -pi -e 's/keys \/etc\/ntp/keys \/var\/lib\/ntp/g' $IMGROOT/etc/init.d/stateless
 | |
| rm -rf $IMGROOT/etc/sysconfig/clock
 | |
| chroot $IMGROOT chkconfig --level 345 stateless on
 | |
| chroot $IMGROOT chkconfig --level 345 rsyslog on
 | |
| 
 | |
| ### make sure dhcp boot protocol is set to none ###
 | |
| perl -pi -e 's/dhcp/none/g' $IMGROOT/etc/sysconfig/network-scripts/ifcfg-eth0
 | |
| 
 | |
| #### add GPFS stuff ###
 | |
| # this is an example of a stateless GPFS implementation.  Uncomment the below if you 
 | |
| # want GPFS.  Make sure you have the GPFS RPMs to do this.
 | |
| #GPFSSRCDIR=/install/GPFS
 | |
| #yum --installroot=$IMGROOT -y install glibc ksh compat-libstdc++-33 binutils rsh
 | |
| #rpm -ivh --root=$IMGROOT $GPFSSRCDIR/gpfs.base*rpm
 | |
| #rpm -ivh --root=$IMGROOT $GPFSSRCDIR/gpfs.gpl*rpm
 | |
| #rpm -ivh --root=$IMGROOT $GPFSSRCDIR/gpfs.msg*rpm
 | |
| #rpm -Uivh --root=$IMGROOT $GPFSSRCDIR/updates/gpfs.base*rpm
 | |
| #rpm -Uivh --root=$IMGROOT $GPFSSRCDIR/updates/gpfs.gpl*rpm
 | |
| #rpm -Uivh --root=$IMGROOT $GPFSSRCDIR/updates/gpfs.msg*rpm
 | |
| ##
 | |
| #AUTOGPFSDIR=/opt/xcat/share/xcat/netboot/add-on/autogpfs
 | |
| #cp $AUTOGPFSDIR/autogpfsc.pl $IMGROOT/usr/sbin
 | |
| #cp $AUTOGPFSDIR/autogpfsc $IMGROOT/etc/init.d/
 | |
| #echo "SERVERS=mgt
 | |
| #PORT=3003
 | |
| #BLOCK=no" >> $IMGROOT/etc/sysconfig/autogpfsc
 | |
| #
 | |
| #chroot $IMGROOT chkconfig --level 345 autogpfsc on
 | |
| #cp $GPFSSRCDIR/2.6.18-128.el5/* $IMGROOT/usr/lpp/mmfs/bin/
 | |
| #cp /etc/profile.d/gpfs.sh $IMGROOT/etc/profile.d/
 | |
| ### End GPFS Stuff ####
 | |
| 
 | |
| 
 | |
| ### IB Stuff ####
 | |
| # if you have InfiniBand on your machines then you probably have an OFED distribution you
 | |
| # need to add.  Here is an example of how to add it.
 | |
| #echo "Adding InfiniBand"
 | |
| #yum --installroot=$IMGROOT -y install bind-utils which rpm tcl tk glibc-devel.i386 pciutils expat libgfortran.x86_64 libgomp.x86_64 tcsh
 | |
| #
 | |
| #IBROOT=/install/voltaire/VoltaireOFED-1.4.2_2-k2.6.18-128.el5-x86_64
 | |
| #mount -o bind /proc $IMGROOT/proc
 | |
| #mount -o bind /sys $IMGROOT/sys
 | |
| #mount -o bind $IBROOT $IMGROOT/mnt
 | |
| #chroot $IMGROOT /mnt/install.sh --without-mpi
 | |
| #umount $IMGROOT/mnt
 | |
| #umount $IMGROOT/sys
 | |
| #umount $IMGROOT/proc
 | |
| # configure IB IP address
 | |
| #echo "IP=\`host \$HOSTNAME-ib0 | awk '{ print \$4 }' | head -1\`" >> $IMGROOT/etc/rc.d/rc.local
 | |
| #echo "ifconfig ib0 \$IP" >> $IMGROOT/etc/rc.d/rc.local
 | |
| #echo "ifconfig ib0 netmask 255.255.0.0" >> $IMGROOT/etc/rc.d/rc.local
 | |
| ### End IB Stuff ####
 | |
| 
 | |
| # configure name resolution
 | |
| # change this to what you want it to be.  (this is in site.tab as the domain and nameservers)
 | |
| echo "search cluster.foo 
 | |
| nameserver 172.20.0.1" >$IMGROOT/etc/resolv.conf
 | |
| 
 | |
| 
 | |
| ### uniq-i-fy Torque OS name
 | |
| echo "opsys compute_centos5.3" >> $IMGROOT/var/spool/torque/mom_priv/config
 | |
| 
 | |
| packimage -p $PROFILE -a $ARCH -o $OS
 | |
| echo "Image $PROFILE-$TIME created"
 |