From 0cf6b5ba9ffb82cbc50645e609d0814f873502c3 Mon Sep 17 00:00:00 2001 From: mxi1 Date: Thu, 19 Feb 2009 06:25:49 +0000 Subject: [PATCH] 1) add [.postinstall] file support to diskless redhat; 2) add pkglist and postinstall file for RHELS5.3, and you can follow it to create files for RHELS5.2; git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@2772 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd --- .../netboot/rh/compute.rhels5.3.ppc64.pkglist | 13 ++++++ .../rh/compute.rhels5.3.ppc64.postinstall | 45 +++++++++++++++++++ xCAT-server/share/xcat/netboot/rh/genimage | 17 +++++++ .../rh/service.rhels5.3.ppc64.postinstall | 45 +++++++++++++++++++ 4 files changed, 120 insertions(+) create mode 100644 xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.pkglist create mode 100755 xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.postinstall create mode 100755 xCAT-server/share/xcat/netboot/rh/service.rhels5.3.ppc64.postinstall diff --git a/xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.pkglist b/xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.pkglist new file mode 100644 index 000000000..fa58de52b --- /dev/null +++ b/xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.pkglist @@ -0,0 +1,13 @@ +bash +nfs-utils +stunnel +dhclient +kernel +openssh-server +openssh-clients +busybox-anaconda +wget +vim-minimal +ntp +sysklogd +rpm diff --git a/xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.postinstall b/xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.postinstall new file mode 100755 index 000000000..30e571e51 --- /dev/null +++ b/xCAT-server/share/xcat/netboot/rh/compute.rhels5.3.ppc64.postinstall @@ -0,0 +1,45 @@ +#!/bin/sh +#-- Do not remove following line if you want to make use of CVS version tracking +#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $ +#-- jurij.sikorsky@t-systems.cz +#-- +#-- this script is run after all packages from $profile.pkglist are installed +#-- +#-- it gets these arguments: +#-- +#-- $1 = install root (chroot directory for profile) +#-- $2 = OS version +#-- $3 = architecture +#-- $4 = profile name +#-- $5 = work dir (where genimage is located) +#-- +#-- +installroot=$1 +osver=$2 +arch=$3 +profile=$4 +workdir=$5 + +#-- Example how /etc/fstab can be automatically generated during image generation: +cat <$installroot/etc/fstab +proc /proc proc rw 0 0 +sysfs /sys sysfs rw 0 0 +devpts /dev/pts devpts rw,gid=5,mode=620 0 0 +${profile}_${arch} / tmpfs rw 0 1 +none /tmp tmpfs defaults,size=10m 0 2 +none /var/tmp tmpfs defaults,size=10m 0 2 +END + +#-- Uncomment the line contains "cons" in /etc/inittab +#cons:12345:respawn:/sbin/smart_agetty -L 38400 console +echo "co:2345:respawn:/sbin/agetty -L 38400 console" >> $installroot/etc/inittab + + +#-- Example of booted image versioning +#-- We want to know, with what configuration (version of the image) each node was booted. +#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run. +#cat /dev/null > $installroot/etc/IMGVERSION +#for ext in pkglist exlist postinstall repolist; do +# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION +#done + diff --git a/xCAT-server/share/xcat/netboot/rh/genimage b/xCAT-server/share/xcat/netboot/rh/genimage index 8fce4c4d9..ceee19ac2 100755 --- a/xCAT-server/share/xcat/netboot/rh/genimage +++ b/xCAT-server/share/xcat/netboot/rh/genimage @@ -171,6 +171,23 @@ unless ($kernelver) { } chomp($kernelver); unlink "/tmp/genimage.$$.yum.conf"; + +#-- run postinstall script +if (-x "$pathtofiles/$profile.$osver.$arch.postinstall") { + my $rc = system("$pathtofiles/$profile.$osver.$arch.postinstall", "$installroot/netboot/$osver/$arch/$profile/rootimg",$osver,$arch,$profile); + if($rc) { + print "postinstall script failed\n"; + exit 1; + } +} +elsif (-x "$pathtofiles/$profile.postinstall") { + my $rc = system("$pathtofiles/$profile.postinstall","$installroot/netboot/$osver/$arch/$profile/rootimg",$osver,$arch,$profile); + if ($rc) { + print "postinstall script failed\n"; + exit 1; + } +} + mkinitrd(); sub getlibs { diff --git a/xCAT-server/share/xcat/netboot/rh/service.rhels5.3.ppc64.postinstall b/xCAT-server/share/xcat/netboot/rh/service.rhels5.3.ppc64.postinstall new file mode 100755 index 000000000..30e571e51 --- /dev/null +++ b/xCAT-server/share/xcat/netboot/rh/service.rhels5.3.ppc64.postinstall @@ -0,0 +1,45 @@ +#!/bin/sh +#-- Do not remove following line if you want to make use of CVS version tracking +#-- $Id: compute.postinstall,v 1.21 2008/09/04 12:05:45 sikorsky Exp $ +#-- jurij.sikorsky@t-systems.cz +#-- +#-- this script is run after all packages from $profile.pkglist are installed +#-- +#-- it gets these arguments: +#-- +#-- $1 = install root (chroot directory for profile) +#-- $2 = OS version +#-- $3 = architecture +#-- $4 = profile name +#-- $5 = work dir (where genimage is located) +#-- +#-- +installroot=$1 +osver=$2 +arch=$3 +profile=$4 +workdir=$5 + +#-- Example how /etc/fstab can be automatically generated during image generation: +cat <$installroot/etc/fstab +proc /proc proc rw 0 0 +sysfs /sys sysfs rw 0 0 +devpts /dev/pts devpts rw,gid=5,mode=620 0 0 +${profile}_${arch} / tmpfs rw 0 1 +none /tmp tmpfs defaults,size=10m 0 2 +none /var/tmp tmpfs defaults,size=10m 0 2 +END + +#-- Uncomment the line contains "cons" in /etc/inittab +#cons:12345:respawn:/sbin/smart_agetty -L 38400 console +echo "co:2345:respawn:/sbin/agetty -L 38400 console" >> $installroot/etc/inittab + + +#-- Example of booted image versioning +#-- We want to know, with what configuration (version of the image) each node was booted. +#-- Hence, we keep image definition files and postscripts in CVS. During image generation we create file /etc/IMGVERSION and fill it with CVS "$Id$" of files with image definition (.pkglist, .exlist, .repolist, .postinstall). Then, during boot, each "CVS enabled" postscript (see /install/postscripts/cvs_template.sh and /install/postscripts/cvs_template.pl) adds one line to /etc/IMGVERSION. Then you can determine in any time what image you are running and what postscipts in which versions were run. +#cat /dev/null > $installroot/etc/IMGVERSION +#for ext in pkglist exlist postinstall repolist; do +# [ -r $workdir/$profile.$ext ] && cat $workdir/$profile.$ext | grep -E '^[[:space:]]*#.*[[:space:]]\$Id' >> $installroot/etc/IMGVERSION +#done +