From ddabd5b0e5bea9965bd9d0cb5c54058e1018651eace8873ff43a026c0a515413 Mon Sep 17 00:00:00 2001 From: Mark Post Date: Wed, 31 May 2017 22:21:08 +0000 Subject: [PATCH 1/2] - Made a number of modification to zpxe.rexx to - Made several hard-coded values variables. - Make it more obvious which default values can be modified - Increased the default size of the FFFF VDISK. - Don't execute the wait if "debug" was specified as a parm. - Change nodebug variable name to debug for clarity, updated logic as needed. OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=10 --- s390-tools.changes | 11 ++++ zpxe.rexx | 153 ++++++++++++++++++++++++++------------------- 2 files changed, 101 insertions(+), 63 deletions(-) diff --git a/s390-tools.changes b/s390-tools.changes index 67bc80c..71d1f48 100644 --- a/s390-tools.changes +++ b/s390-tools.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Wed May 31 21:26:50 UTC 2017 - mpost@suse.com + +- Made a number of modification to zpxe.rexx to + - Made several hard-coded values variables. + - Make it more obvious which default values can be modified + - Increased the default size of the FFFF VDISK. + - Don't execute the wait if "debug" was specified as a parm. + - Change nodebug variable name to debug for clarity, updated + logic as needed. + ------------------------------------------------------------------- Tue May 16 00:57:05 UTC 2017 - mpost@suse.com diff --git a/zpxe.rexx b/zpxe.rexx index add1068..d5b46d6 100644 --- a/zpxe.rexx +++ b/zpxe.rexx @@ -18,7 +18,7 @@ of the Cobbler or TFTP server. Copyright 2006-2009, Red Hat, Inc Brad Hinson -Copyright 2012, SUSE Linux, +Copyright 2012, 2017, SUSE Linux, Mark Post This program is free software; you can redistribute it and/or modify @@ -41,45 +41,69 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA /* Set the default environment for "safety" reasons. */ ADDRESS COMMAND -/* Make it possible to interrupt zPXE and to enter CMS no matter how - the guest was started, if there is a system-specific profile - or not, etc. -*/ -say -say 'Enter a non-blank character and ENTER (or two ENTERs) within 10', - 'seconds to interrupt zPXE.' -ADDRESS CMS 'WAKEUP +00:10 (CONS' -/* Check for the interrupt code */ -if rc = 6 then do - say 'Interrupt received: exiting to CMS...' - pull /* Clear the stack */ - exit -end +/* Save the value of the trace state */ +tvar_o=trace() +tvar_c=tvar_o /* Was this script invoked with "debug" as one of the parameters? */ -nodebug=1 -if arg() then do - parse upper arg uparg - if index(uparg,'DEBUG') <> 0 then do - trace i - nodebug=0 +debug=0 +if arg() then + do + parse upper arg uparg + do sub=1 to words(uparg) + if word(uparg,sub) = "DEBUG" then + do + debug=1; + trace i; + tvar_c=trace() + end; + else do /* This is a do/end in case we want to add to it later */ + trace e + tvar_c=trace() + end + end end - else do /* This is a do/end in case we want to add to it later */ - trace e - end -end /* Set some defaults */ +/* These values are intended to be modified by the site using this */ +/* script to match their environment. */ userid='' server='' iplDisk='' server_def = 'internal.tftp.server' /* define default TFTP server */ iplDisk_def = '150' /* define default IPL DASD */ -profilelist = 'PROFILE LIST T' /* VDISK will be defined as T later */ -profiledetail = 'PROFILE DETAIL T' -zpxeparm = 'ZPXE PARM T' -zpxeconf = 'ZPXE CONF T' +FM='T' /* Default file mode is T */ +profilelist = 'PROFILE LIST' FM /* Disk will be accessed as FM later */ +profiledetail = 'PROFILE DETAIL' FM +zpxeparm = 'ZPXE PARM' FM +zpxeconf = 'ZPXE CONF' FM config = 'ZPXE CONF A' +seconds=10 /* The default amount of time to wait for console input */ + +workDiskType='VFB-512' +workDiskSize=200000 /* This is approximately 97MB of space. */ +/* For TDISK instead of VDISK, comment out the previous two lines and */ +/* uncomment the following two lines.*/ +/* workDisk='T3390' */ +/* workDiskSize=138 */ + +/* Make it possible to interrupt zPXE and to enter CMS no matter how + the guest was started, if there is a system-specific profile + or not, etc. +*/ +if debug then say 'Debugging, so we will skip the wait and just run.' +else do + say + say 'Enter a non-blank character and ENTER (or two ENTERs)', + 'within' seconds 'seconds to interrupt zPXE.' + ADDRESS CMS 'WAKEUP +00:'seconds '(CONS' +/* Check for the interrupt code */ + if rc = 6 then do + say 'Interrupt received: exiting to CMS...' + ADDRESS CMS 'DESBUF' /* Clear the stack */ + exit + end + end /* For translating strings to lowercase */ lower = xrange('a','i')xrange('j','r')xrange('s','z') @@ -107,34 +131,33 @@ userid_def = translate(userid_def, lower, upper) 'CP TERM HOLD OFF' /* We want to have a way to figure out what went wrong if something - isn't working. -*/ + isn't working. */ + 'CP SPOOL CONSOLE STOP CLOSE' /* Close any existing spooled console. */ 'CP SPOOL CONSOLE START' /* Start spooling the console for this run. */ -if nodebug then ADDRESS CMS 'VMFCLEAR' /* clear screen */ +if \ debug then ADDRESS CMS 'VMFCLEAR' /* clear screen */ -/* The following two commands that were in the original script are */ -/* almost certainly not going to work for anyone that only has CP */ +/* The following two commands that were in the original script are */ +/* almost certainly not going to work for anyone that only has CP */ /* privilege class G */ /* 'set vdisk syslim infinite' */ /* 'set vdisk userlim infinite' */ -/* Define a temporary disk (VDISK) to store files and CMS FORMAT it */ +/* Define a temporary disk to store files and CMS FORMAT it */ /* If your site doesn't allow this, but does allow TDISKs, change the */ /* DEFINE command to T3390 instead */ 'CP SET EMSG OFF' -if nodebug then trace off +if \ debug then trace off 'CP DETACH FFFF' /* detach ffff if present */ -if nodebug then trace e -else trace i +trace value tvar_c 'CP SET EMSG ON' -'CP DEFINE VFB-512 AS FFFF BLK 144000' /* 512 byte block size ~70 MB */ +'CP DEFINE' workDiskType' AS FFFF' workDiskSize queue '1' queue 'tmpdsk' -if nodebug then /* If debug was not specified, then */ +if \ debug then /* If debug was not specified, then */ ADDRESS CMS 'set cmstype ht' /* suppress format output */ -ADDRESS CMS 'format ffff t' /* format VDISK as file mode t */ +ADDRESS CMS 'format ffff' FM /* format VDISK as file mode FM */ ADDRESS CMS 'set cmstype rt' /* Resume seeing command output */ say 'DASD FFFF has been CMS formatted' @@ -165,12 +188,12 @@ say say 'Connecting to server 'server /* print server name */ /* Check whether a user-specific PXE profile exists. */ -call GetTFTP '/s390x/s_'userid 'profile.detail.t' +call GetTFTP '/s390x/s_'userid 'profile.detail.'FM if lines(profiledetail) > 0 then call ProcessUserProfile else do /* no user-specific profile was found */ say 'No profile found for' userid if disconnected then do /* user is disconnected */ - ADDRESS CMS 'release t (detach' + ADDRESS CMS 'release' FM '(detach' ADDRESS CMS 'exec vmlink tcpmaint 592 ' say 'User is disconnected. Booting from DASD 'iplDisk'...' 'CP IPL' iplDisk @@ -178,6 +201,8 @@ else do /* no user-specific profile was found */ else call ProcessGenericProfiles /* user is interactive -> prompt */ end /* no user-specific profile was found */ +trace value tvar_o + exit /* */ /* Subroutines called from the main script */ @@ -227,7 +252,7 @@ say bootRc = ParseSystemRecord() /* parse file for boot action */ if bootRc = 0 then do say 'The profile said we should boot from local disk.' - ADDRESS CMS 'release t (detach' + ADDRESS CMS 'release' FM '(detach' ADDRESS CMS 'exec vmlink tcpmaint 592 ' say 'IPLing from' iplDisk 'CP IPL' iplDisk /* boot from default DASD */ @@ -237,13 +262,13 @@ else do /* The profile should contain pointers to kernel, etc.*/ /* Get the user PARM file that contains network info */ say 'Downloading parameter file [/s390x/s_'userid'_parm]...' - call GetTFTP '/s390x/s_'userid'_parm' 'zpxe.parm.t' + call GetTFTP '/s390x/s_'userid'_parm' 'zpxe.parm.'FM if CheckDownload('s_'userid'_parm' zpxeparm) <> 0 then abort=1 /* Get the user CONF file that currently isn't used for anything */ say 'Downloading conf file [/s390x/s_'userid'_conf]...' - call GetTFTP '/s390x/s_'userid'_conf' 'zpxe.conf.t' + call GetTFTP '/s390x/s_'userid'_conf' 'zpxe.conf.'FM if CheckDownload('s_'userid'_conf' zpxeconf) <> 0 then abort=1 @@ -265,7 +290,7 @@ end /* he profile should contain pointers to kernel, etc */ ProcessGenericProfiles: /* Download the list of generic profiles available */ say 'Downloading the profile list [/s390x/profile_list]...' -call GetTFTP '/s390x/profile_list' 'profile.list.t' +call GetTFTP '/s390x/profile_list' 'profile.list.'FM if CheckDownload('profile_list' profilelist) <> 0 then do say '** **' say '** No profile list found **' @@ -302,7 +327,7 @@ select end when answer = '' then do /* IPL from default disk */ - ADDRESS CMS 'release t (detach' + ADDRESS CMS 'release' FM '(detach' ADDRESS CMS 'exec vmlink tcpmaint 592 ' say 'Booting from DASD 'iplDisk'...' 'CP IPL' iplDisk @@ -312,19 +337,19 @@ select abort=0 say 'Downloading generic profile [/s390x/p_'profile.answer']...' - call GetTFTP '/s390x/p_'profile.answer 'profile.detail.t' + call GetTFTP '/s390x/p_'profile.answer 'profile.detail.'FM if CheckDownload('p_'profile.answer profiledetail) <> 0 then abort=1 say 'Downloading generic parameter file', '[/s390x/p_'profile.answer'_parm]...' - call GetTFTP '/s390x/p_'profile.answer'_parm' 'zpxe.parm.t' + call GetTFTP '/s390x/p_'profile.answer'_parm' 'zpxe.parm.'FM if CheckDownload('p_'profile.answer'_parm' zpxeparm) <> 0 then abort=1 say 'Downloading generic conf file', '[/s390x/p_'profile.answer'_conf]...' - call GetTFTP '/s390x/p_'profile.answer'_conf' 'zpxe.conf.t' + call GetTFTP '/s390x/p_'profile.answer'_conf' 'zpxe.conf.'FM if CheckDownload('p_'profile.answer'_conf' zpxeconf) <> 0 then abort=1 @@ -346,7 +371,7 @@ select call lineout zpxeparm, hostipparm call lineout zpxeparm /* close the output file */ - if nodebug then ADDRESS CMS 'VMFCLEAR' /* clear screen */ + if \ debug then ADDRESS CMS 'VMFCLEAR' /* clear screen */ say say 'Using profile 'answer' ['profile.answer']' say @@ -379,11 +404,13 @@ GetTFTP: if transfermode <> '' then queue 'mode' transfermode + queue 'get 'path filename queue 'quit' - if nodebug then + if \ debug then ADDRESS CMS 'set cmstype ht' /* suppress TFTP output */ + ADDRESS CMS 'tftp' server ADDRESS CMS 'set cmstype rt' @@ -422,8 +449,8 @@ DownloadBinaries: exit 99 end say 'Downloading kernel ['kernelpath']...' - call GetTFTP kernelpath 'kernel.img.t' octet - if CheckDownload(kernelpath kernel img t) <> 0 then do + call GetTFTP kernelpath 'kernel.img.'FM octet + if CheckDownload(kernelpath kernel img FM) <> 0 then do say 'Aborting PXE boot.' exit 99 end @@ -435,8 +462,8 @@ DownloadBinaries: exit 99 end say 'Downloading initrd ['initrdpath']...' - call GetTFTP initrdpath 'initrd.img.t' octet - if CheckDownload(initrdpath initrd img t) <> 0 then do + call GetTFTP initrdpath 'initrd.img.'FM octet + if CheckDownload(initrdpath initrd img FM) <> 0 then do say 'Aborting PXE boot.' exit 99 end @@ -450,8 +477,8 @@ DownloadBinaries: /* Convert to fixed record length since they're going to be run through the virtual card reader. */ - ADDRESS CMS 'pipe < KERNEL IMG T | fblock 80 00 | > KERNEL IMG T' - ADDRESS CMS 'pipe < INITRD IMG T | fblock 80 00 | > INITRD IMG T' + ADDRESS CMS 'pipe < KERNEL IMG 'FM' | fblock 80 00 | > KERNEL IMG' FM + ADDRESS CMS 'pipe < INITRD IMG 'FM' | fblock 80 00 | > INITRD IMG' FM ADDRESS CMS 'pipe < ' zpxeparm ' | fblock 80 SPACE | > ' zpxeparm return /* DownloadBinaries */ @@ -467,10 +494,10 @@ PunchFiles: 'CP CLOSE READER' 'CP PURGE READER ALL' /* clear reader contents */ - ADDRESS CMS 'punch kernel img t ( noheader' /* punch kernel */ - ADDRESS CMS 'punch zpxe parm t ( noheader' /* punch PARM file */ - ADDRESS CMS 'punch initrd img t ( noheader' /* punch initrd */ - ADDRESS CMS 'release t (detach' /* release and detach the VDISK */ + ADDRESS CMS 'punch kernel img' FM '( noheader' /* punch kernel */ + ADDRESS CMS 'punch zpxe parm' FM '( noheader' /* punch PARM file */ + ADDRESS CMS 'punch initrd img' FM '( noheader' /* punch initrd */ + ADDRESS CMS 'release' FM '(detach' /* release and detach the VDISK */ ADDRESS CMS 'exec vmlink tcpmaint 592 ' /* and this disk */ 'CP CHANGE READER ALL KEEP NOHOLD' /* keep files in reader */ From d36b87680e75b3100e476e6d53e2368b4b52627542e5e8b04ae949dad81e2493 Mon Sep 17 00:00:00 2001 From: Mark Post Date: Wed, 31 May 2017 22:25:25 +0000 Subject: [PATCH 2/2] OBS-URL: https://build.opensuse.org/package/show/Base:System/s390-tools?expand=0&rev=11 --- s390-tools.changes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/s390-tools.changes b/s390-tools.changes index 71d1f48..a9d6063 100644 --- a/s390-tools.changes +++ b/s390-tools.changes @@ -4,7 +4,7 @@ Wed May 31 21:26:50 UTC 2017 - mpost@suse.com - Made a number of modification to zpxe.rexx to - Made several hard-coded values variables. - Make it more obvious which default values can be modified - - Increased the default size of the FFFF VDISK. + - Increased the default size of the FFFF VDISK (bsc#1038255) - Don't execute the wait if "debug" was specified as a parm. - Change nodebug variable name to debug for clarity, updated logic as needed.