throbber
Note that running DHCP does not have to mean you hand out diferent IP
`addresses for your sysieme (which is what DHCP normally is used for). You can
`manually bind |P addresses to the physical interfaces and keep the same IP
`address each tima the server starts. DHCP would only be the easy way to
`configura the IP stack of each systam.
`
`You could even do dynamic IP addresses for your servers. This would be an
`option when combined with Dynamic Domain Name Service (DDNS)}. In that
`case, aach systam would register through DONS, for example, as the next
`system offering a particular service. Round-robin ONS would then cause the
`traffic to ba spread over multiple systems.
`
`10.4.5 When to apply the configuration changes
`
`There are at least two different ways to apply the changes to the copied disks for
`tha new Linux image,
`
`® Store a small script in the boot process to apply these changes thefirst time
`ihe cloned mage is axacuted, Instead of using a custom script with
`hardcoded values, you can write a qanaric script that obtains the IP address
`and hostname through some other mechanism. The hep command from the
`cpint package can be used to obtain the user ID of the virtual machine
`running the image.
`
`® Mount the file system into an existing running Linux image and run a script to
`apply the changes. This is a more flexible choice, because you can do
`different repair actlons thal may be necessary (like Installing additional
`packages). Unfortunately, it is currently difficult to access thefile system of a
`Linux image that is not running (also known as a “dead penguin’), or one that
`does not have a network connection.
`
`Which method will work best in your situation depends on various aspects of your
`installation (such as network topology, naming convention, etc).
`
`10.5 Sharing code among images
`
`The process outlined in 10.4, “Copying disks instead of doing a full install” on
`page 213 can simpley the install process, but it doas not yet axplort z/VM facilities
`for sharing resources, For those who are used to working with VM, it appears
`obvious that you want to share the common code between your Linux images.
`Fora “default insialf of SuSE, about 459: of the disk space is used for the /usr
`directory of the file system. Most packages have their binaries installed in ‘usr, so
`it seems obvious that this also should be shared.
`
`Chapter 70, Cloning Linuximages=227
`
`

`

`The Linux Standard Base (LSB) datines the file system hierarchy such that /usr
`can be shared among images (outside the 5/390 workd, over NFS),
`Unfortunately, it also defines thal application code should be installed in ‘opt,
`which makes sharing /usr lass attractive,
`
`Tha file sysiam can be split over two separate minidisks after installation, but it's
`much easier to let YaST do that job; during installation, you define one disk to
`hold the ‘usr diractory and YaST will copy all thosefiles to that minidisk. This
`process is apparenth $0 obvious that many people have built Linux images that
`had a RO link to a common minidisk holding the ‘usr subtree of the file system.
`This results in a significant reduction in disk space requiraments for running a
`large number of Linux images,
`
`However, as with many cheap solutions, this one also comes with a lew
`drawbacks.
`
`& Once a Linux image is using the sharéd /usr disk, fis no longer possible to
`make changes to the contents of the disk.
`
`In CMS, to share R/O minidisks, people have developed tnexs to deal with tha
`“ane writer - many readers”situation, but for Linux this doas not work because
`every Linux image will buffer parts of that disk in its buffer cache.
`
`» Portions of applications live outside the ‘usr directory, for example in /bin and
`‘shin. When those other portions are part of the private disk space of the
`Linux image,it will be difficult to maintain consistency when upgrading
`packages. This means there is no easy way to upgrade the sysiems
`alterward.
`
`» Many applications and users need to write into portions of ‘usrfor thelr
`function. An example of this is the package manager rpm that keapsits
`database (the software inventory) in ‘usr, as wall,
`
`® Many applications do not separate code and data (like WebSphere, writing
`the log file in the bin directory by default), which makes it very difficult to share
`oode.
`
`» The recent standards define /opt to hold packages that ara not part of the
`code systam, This would make sharing /usr less effective,
`
`We believe a realistic answer to this could be a new device driver as described in
`“Shadowed disk support’ on page 413, This code is not available yet.
`
`Despite thase drawbacks, this simple way of sharing the disk may be attractive
`for special situations (for example, “disposable penguins” only needed for a
`limited périod). lfan application has a specific requiramentto write in an
`otherwise F/O diractory, 4 private writable directory can be provided through a
`symlink to another part of the file system, or by “ovennounting® with another
`block device (via the loop driver, for example}.
`
`222
`
`Linux on JBM @server zSeries and S50: ISPYASP Solutions
`
`

`

`10.6 Breeding a colony of penguins
`
`Fora demonsiration of the cloning process, we had to use a configuration with
`usr on a separate F/O linked minidisk, despite the drawbacks illustrated iin 10.5,
`“Sharing code among images" on page 221. Trying the cloning process with
`private disk space for each cloned penguin would have been too expansive, both
`in disk space and in time to create the images.
`
`Unfortunately, YaST runs SuSEcontig after the first reboot, which tums out to
`write into the ‘usr diractory. This maans we need to finish tha install process
`completely before we have a file system thal can be copied and used by others.
`Since other installations may have similar restrictions, we decided to take a more
`generic approach and complete the install before copying the disks,
`
`The cloning process is demonstrated with each of the steps invoked by hand,
`This doas not mean the process could not ba automated, but i's probably easier
`to follow this way than with 4 single program that doasall.
`
`10.6.1 Images used in the cloning process
`
`The images used in the cloning process will have a few minidisks:
`
`07A0
`
`02A0
`O1A1
`
`owocD
`
`A 100-cylinder private disk to hold the rootfile system
`
`A/O link to the oniginal root file system for copying
`A 2000-cylindar disk linked R/O by all images
`
`AO link to a starter disk with initrd
`
`Each of the cloned images willhave an IUCY connection to 4 single common VM
`TCPIP stack.
`
`10.6.2 Create a patchfile for cloning
`
`We create a patch for the cloning process as described in “Using diff to find the
`changes’ on page 216, Doing this after finishing the install is not much different
`from deing it earlier in (he process.
`
`Obviously, diff will also find a lot of diffarancas in log tiles and other things that
`you do not want to énd up in the patch, so you can get those out of the process
`as soon as possible with, for example, a few grep commands before sorting the
`list of filanames.
`
`To create the two differant disks to compare, we copied the 0140 disk of the
`install system to a new minidisk and then ran YaST in the installation system to
`change the IP address and hostname.
`
`Chapter 10, Cloning Linuximagas
`
`22d
`
`

`

`Although tha chosen network setup resulted in identical gateway addrasses and
`default routes for ach of the cloned images, we decided to pul thal in the patch
`anyway to have a more generic patch.
`
`Example 10-10 Patoh generated for tha demo setuo
`
`--- afete/HOSTHAME
`++ bfeteHOSTHAME
`Ba =] +] GB
`
`Wed Aug
`Hed Aug
`
`8 02:54:04 2001
`§ 02:04:17 2001
`
`- tubs tr
`+hastname:
`--- afete/hosts Wed Aug
`++ bfeteshasts wed Aug
`ba 21,4 4214 a8
`ff022:2
`ff022:3
`
`ipvb-al l routers
`ipvé-al lhosts
`
`4 02:54:04 2001
`8 02:04:11" F001
`
`tuxdastr.hubé.itso. 1 Bm. can
`-192.184.6,254
`thastname: .hubé.1tso.ibm.com :hostnane:
`‘mip:
`== afete/rc.config
`Wed Aug
`8 02:54:02 2001
`++ bfetesrc config
`Hed Aug
`8 02:04:16 2001
`bY -132,7 +132,7 Ba
`
`tuxdns tr
`
`# IP Adresses
`4
`~ TPADOR_O-" 192, 1h. 234"
`+1PADOR_O=":myip:"
`IPADOR_1="*
`TPADOR 2=""
`
`TPADOR,3="*
`BH -151,7 +151,7 8
`# sample entry for ethernet:
`# TFOOWFIG"192. 164.41.2) broadcast 192. 160.81.6] netmask 255.255.2955 224"
`f
`=TFCOMF IGO="192.168.6.254 polmtopoimt 192. 168.6.1 mtu 1B up"
`+TFCOMFIG_O="smyip: polintopoint sqwips mba
`sganmtu: up"
`TFCOMFIG1=""
`TRCOMFIG¢=""
`TFCOMFTGJ=""
`Ba 2? 7 AAD? ae
`# fe.g. "rienann.suse.de" ar "huge, | iru. de")
`# don't forget
`ta also edit fetc/hosts for your system
`#
`
`~ POHDSTHANE="tus tr. hubb. itso, ba, com"
`+POHOSTHAME=":hastname: hubh.itso.7bm.can"
`
`# #
`
`Shall suskcontig maintain fete/resoly.cont (needed for OWS)
`--- afetc/raute.conf
`Tho Aug
`9 16:21:37 2001
`
`H+ bfete/rautescomf=Thu Aug 9 16:19:37 2001
`
`7
`
`2240Linux on JBM @server zSeries and S20: ISPYASP Solutions
`
`

`

`ba 34,4 4944 OB
`#192, 168,01
`# default
`192 .164.6,1
`«default
`+defaul £
`
`0.0.0.0
`192. 164.0.1
`0.0.4
`
`197, 66.6.1
`equip:
`
`255.255, 255, 255
`
`i ppp
`
`256.255.255.255
`
`Tueve
`
`The resulting patch is shown in Example 10-10. It tums out ta be vary small, It
`touches only four files in the systam (those marked with +++ characters). This
`patch was stored in the root directory of the installation system so that it would be
`available in each cloned image as well.
`
`Copy the root file system and IPL starter system
`The root file system is copied using tha COPYDISK program shown in
`Example 10-11. Exploiting the fact that this rootfile system is filled for 70%, this
`tumed out to be the fastest solution.
`
`Example 10-17 The COPYDISK program
`
`/* Copy a raserved disk to a formatted disk */
`signal on errar
`arg cuwl cuue .
`
`‘J!
`"ACCESS" cuul
`"PIPE COMMAND LISTFILE * * J | var infile'
`parse var Intilea fm .
`"ACCESS" cid 'K!
`queue '1';
`"RESERVE'
`"PIPE <"
`infile,
`l-* n',
`'|
`spec number 1.10 ri
`'! net verify Li-* x00",
`'k'
`'| fileupdate’ fn userid{)
`"PIPE mdiskblk number J) 1.2 | miskblk write K°
`retum re
`
`fm userid()
`
`'K'
`
`After the root file system is copied, the RAMdisk system is started,
`
`Example 10-12 Copying the rootfle systam and JPL with AAMalsk
`
`files on disk K(LAO). Oo you wish to
`
`copydisk gad lad
`DNSACC?T24] 240 replaces J (2A0)
`DNSACPAZ31 J
`(240) R/O
`DNSACCK241 LAO replaces K [140]
`DNSESVHOIR RESERVE will erase all
`continue? Enter 1
`(YES) or & {NO}.
`
`1 D
`
`MSRSW? 331 Reserving disk kK
`
`Chapter 10, Cloning Linuximagas
`
`225
`
`

`

`Ready; Te. SA/0.80 20243215
`ipl
`fed clear
`Linux yarsian 2.2.16 fraoteikretape.susede) [gec version 2.95.2 LUsg1d24
`(release)) #1 SMP Tue May 1 11:47:19 GMT 2001
`Command line fs: ro ramdisk_size=32766 root=/dev/ram0 ro
`
`Load the DASD driver and mountthe disks
`Now the DASO driver is baded and the new disks are mounted.
`
`Example 10-13 Acoesaing the oiake from fhe AAMoisk systen
`
`# insmod dasd dasd=1a0,1lal
`Using /Vib/medules/2.2.16/block/dasd.o
`dasd: initializing...
`daid:Registerad successfully ta major no 94
`dasdfeckd):ECKD discipline initializing
`dasd:Registered ECKD discipline successfully
`dasd(fbapsFBA discipline initializing
`dasd:Reqistered FRA discipline successfully
`dasd(eckd):0140 on seh Os 2390/0C(CU:d990/04) Cyl:100 Heads 15 Sec:224
`dasdfackd):0140 on sch Dd: TIG0/0C (CU: 3990/04): Configuration data read
`dasd: deve Oe01A0 on subchannel
`0 {ECKD)
`is fdev/dasda (94:0)
`dasd(eckd):O1A1 on sch Gs 3990/0C (CU: 3990/04) Cy1:1500 Heads15 Secs224
`dasd(eckd):01A1 on seh 9s 3990/00 (CU; 3990/04); Configuration data read
`dasd: devno De02Al on subchannel
`9 (ECKO) is fdevidasdhb (94:4)
`dasdrwaiting for responses...
`dasd(eckd): fdev{dasda [OLA0): capacity (4kB Bikes): 72000kKE at 48kE/trk
`dasda:(CM51)/TUXLAO: (MOSK) dasda dasdal
`dasd(eckd):/dev/dasdb (O1Al): capacity (4kB bikes}: LORQ000kB at 48kB/trk
`dasdb: (CM51)/TUXDAL: (MOSK) dasdb dasdbl
`dasd: initialization finished
`4 mount /dev/dasdal jot
`# mount.
`/dev/dasdbl jmat/usr -r
`
`Apply the patch to the copied file system
`The patch is applied to the copied file system by running the updclone.sh
`program. By running the program with chroot, it saes thefile systam mounted at
`‘mint asits root file system for the duration of the program,
`
`# chroot fot fupdelone.sh tux80000 197.166.8.2 1927.165.6.1 S158
`patching file ete,HOSTMAME
`patching file etc/hosts
`patching file ete/rc.config
`patching file ete/route, conf
`
`226
`
`Linux on JBM @server zSeries and S320: ISPYASP Solutions
`
`

`

`The updelone.sh script reads the ganenc patch and transforms that into a patch
`apecific for this image using Ihe host name and IP address specified, For a less
`afror-prone implementation, you should consider storing the host names and IP
`addresses ina table on that disk, That way, a grep could ba used to gat the
`arguments for the updelone.sh script.
`
`Example 10-14 The updciona.sh program fo apply fhe patoh
`
`a! bin/sh
`
`if | =z $4 J; then
`echo "Heed hostname [P-acdiress gateway-ip gateway-mtu"
`exit
`
`fi
`cat generic. diff
`| sed "s/:hostname:/$1/
`| sed “sfrmyips/$ef
`"4
`| sed "sfrqwips/$ay "4
`| sed "sfrqemtus ($4 "
`| patch -pl
`45
`
`\
`"4
`
`if you régistar the Linux images in ONS, you could aven consider getting the
`arguments lor updelone.sh from thal. The hep command could be used to get the
`user ID of the virtual machine. Given a practical naming convention, ns]ockup
`could get you the IP address of the Linux image and the gateway.
`
`Shut down the system
`The system shutdown should not only unrmaunt the file systems cleanly, but alsa
`laave network connections in a better state to be restarted when the image is
`rebooted. Unfortunately, the starter systam does nat load a disabled-wait PSW,
`but loops alter a shutdown, You get out of this using tha #CP command to do the
`IPL.
`
`Example 10-15 Shutting down the starter system
`
`# shutdown -h naw
`Syncing all buffers...
`Sending KILL signal
`to linuxre for shutdown, ..
`Sending all processes the TERM signal...
`Aug
`9 222052? suse exiting on signal 15
`Sending all processes the KILL signal...
`Syncing all buffers...
`Turning off swap...
`Inmnaunting file syitem...
`fdev/dasdbl unmounted
`fdev/dasdal unmounted
`fdewsram2 unmounted
`
`Chapter 10, Cloning Linuximagas=227
`
`

`

`IPL from the patched root file system
`With the patches applied, the Linux image can now be booted from the new disk.
`
`Example 10-1 JPL from the root file system alter the patch was annlied
`
`IPL 140 CLEAR
`Linux version #.2.16 {root@Tape.suse.del
`(release))
`#1 SMP Sun Nay 6 (6315:49 GT 2001
`Command Vine is: ro dascd20 00000041 cd, 0100, 0101 roote/dev/dasdbl noinitred
`jucw=$TCPIF
`
`face version 2.95.7 19991094
`
`he are running under V4
`This machine has an TEEE fpu
`Initial
`randisk at: Oe) (1677216 bytes}
`Detected device O10 on subchannel MM) - PIM = Fo, PAM = FO, PON = FF
`Detected device (008 on subchannel M01 - PIM = &), PAM = 40, POM = FF
`letected device W000 on subchannel Mile = PIM = Bl, PAM = a0, POM = FI
`
`10.7 Linux IPL from NSS
`
`A Named Saved System (N55) Is like a snapshot copy of part of the mamary of a
`Virtual machine. In addition to simulating the normal 5/390 IPL of a devica, VM
`can also [PL a virtual machine from a NSS. This is especially efficient for CMS,
`because the WSS for CMS ts defined such that large portions of it can be shared
`between virtual machines. This reduces the storage réquiraments for running a
`large number of CMS virtual machines.
`
`An NSS can have shared and non-shared pages. The $/390 architecture
`requiras all pages in a single 1 MB segment to be either shared or non-shared.
`The shared pages will be shared among all virtual machines that IPL the NSS.
`For the non-shared pages, each virtual machine will get its own copy, initialized
`from the NSS.
`
`10.7.1 Using an NSSwith just the kernel
`Uniortunately,the Linux for $390 kernel is not designed to be shared among
`images. The writable portions of the kemeal are mixed with the read-only portions,
`Whila the non-shared pages do not raduea overall mamory raquiramants, having
`memory initialized at startup should at least speed up the boot process.
`
`228
`
`Linux on JBM @server zSeries and S950: ISPYASP Solutions
`
`

`

`One of the complications with running the kernal from an NSS is that the kemel
`parameters (6.9. disk addresses forthe DASD driver) need to be tha samefor
`each Linux image using this NSS. Fortunately, VM allows us to tailor the virtual
`machine to fit on the addresses defined for tha kernal that was saved in tha NSS.
`
`Whila you can create tha NSS by IPL from the virtual reader, it is easier ta do
`when booting fram disk because silo gives you the information you need to
`define your NSS.
`
`Example 10-1? Output of silo to compute WSS adoresses
`
`'/beot/parnfile’...ak...
`original paraneterfile is:
`final parameterfile is: ‘/boot/parnfile.map'...ok...
`in O: offset: (592 count: Oc address: OxOi
`iv 1: offset: (59f count: 60 address: OxO)opei)
`ix 2: offset: M61 count: BO address: Oxolclbemp
`ix 3: offset: [69f count: %h address: O00) hem
`Ix 4: offset: (1609 count: O01 address: OxQO0aRID
`Bootnap is in black mo: OxO000140a
`
`When you run siloeto make a disk bootable, it displays the mamory addrass
`where the Kennel is going to be loaded. The addresses in Example 10-17 show
`that different portions of the kernel use the memory from 0 to 0x00182000, This
`means thatthe NSS should at least contain the pages 0-181? in exclusive write
`(EW) mode (and there is no reason to do more than that).
`
`To freeze the Linux image at the correct point during the IPL process, you can
`use the CP TRACE command. The current Linux for S990 kemel starts
`execution at address Ox070000, so the following TRACE command will cause the
`Linux image to stop at that point.
`
`When execution is stopped at that point, the TRACE command causes the
`segment to be saved and also ends the trace.
`
`Example 10-18 Defining the NSS and saving it
`
`DEFSYS SUSE 0-181 EW MINSIZE=404
`HOPASO4401 The Kaned Saved System (NSS) SUSE was successfully defined in fileid
`(G9,
`
`TRACE INST RANGE 100002 CH SAVESYS SIISE "TRACE END ALL
`[FL 160 CLEAR
`
`[PL
`Tracing active at
`2
`“= OOO BASR OOD
`HOPASS4401 Haned Saved System {N55} SUSE was successfully saved in fileid oo84,
`Trace ended
`
`* You can use the “Scientific® mode of the calculator in your MS Windows accessories to do the computations
`
`Chapter 10, Cloning Linuximagas
`
`229
`
`

`

`Aftartha NSS has been saved as shown in Example 10-18, the Linux images can
`boot this kernel with a simple IPL SUSE command.
`
`CPF IPL SUSE
`Linux version 2.2.18 (roat@vml inusé)
`SMP Thu Jul
`24 Wdedsa) EST 2001
`
`[geo version 2.95.2 1999] 00d
`
`Bacausa the NSS is defined as axclusive write (EW), the kernel pages are not
`shared by the Linux images and using the NSS dogs not reduce overall storage
`requirements as it doas with CMS. Work is in progress to change the layout of
`tha Kamel such that significant portions of the code can be shared,
`
`10.7.2 Using an NSS as a starter system
`
`To simplity the boot process, we packaged the kamel with the RANdisk mage in
`a single NSS thal was completely defined as EW. We compared an NSS with a
`compressed RAMdisk image to one with an uncompressed RAMdisk image,
`axpacting an impressive parnarmance boost when skipping ihe HAMdisk
`uncompress at each IPL. However, Table 10-2 shows that the opposite was true
`in our case.
`
`fable 10-2 Elapsed fime to boot fram WSS
`
`CongaNa a Uncompressed RAMdisk image
`
`A more detailed comparison of the two scenarios showed us that the CPU usage
`for an IPL from the compressed RAMdisK is indeed significantly higher (as
`axpected), but the 10 seconds of elapsed time missing in the case of ihe
`uncompressed RAMdisk tum out to be spooling IO for CP loading the pages of
`tha NSS in (one at a time).
`
`However, when a Linux image was already running from its non-shared copy of
`tha NSS,the next image could IPL from NSS in 3 seconds—this suggests that
`CP incorrectly considers all EW pages fram a NSS as if they were shared pages
`(where ilis sale to say EW is the most obvious indication of not sharing the
`page).
`
`For an NSS like CMS,this is not a significant issue since there are just afew EW
`pages in the segment. However, we can assumethat excessive use of an NSS
`with a lot of EW pages should be avoided,
`
`10.7.3 Picking up IPL parameters
`
`One of the probleme with an IPL from NSS ts that the kemel parameters are
`defined in the NSS and will be the same for each image that |PLs the NSS
`
`200
`
`Linux on JBM ileerver zSeries and Sod: ISP/ASP Solutions
`
`

`

`The CP IPL command im z/VM has a PARM option that allows the user to pass
`parameters to the system thal is being |PLed. Traditionally, this ig used by CMS
`to control some options in the IPL process (like bypass execution of the system
`profile). A logical extension of this is to usa that option to tailor the commana line
`parameters for Linux as well (for example, to specify what disks ta use).
`
`In ordar to éxperiment with this, a “quick and dirty” patch was written against the
`Linux kemel to pick up the argumentfrom the IPL command,
`
`Example 10-19 Patch fo pass |FL parameters to the Kemal
`
`--- boel inue-2.2.16/arch/st0/bootipleckd.=Mon Apr 30 1722241 2001
`+++ | inuxfarchs390/boot/ipleckd.5
`Wed Aug
`8 1B:20:17 2001
`Ba -41,6 +41,7 o8
`
`# Lets start naw...
`
`org Ox fp
`start: .globl start
`# gave the registers for later
`+
`sbn
`Sr SrL5 tied
`rl,LCSUBCHANNEL[0D # get IPL-subchannel
`from lowcare
`ark,Le_TPLDEY
`# keep it for reipl
`st
`=. Lrdedata
`stsch
`ba 112.7 #113,23 oe
`mc=e256, 43) odo(ard)
`Mc
`(me00(756,63) ,Ox1b0(Sr4)
`ive
`OMTOO(F56, 263) ,dx2B0(4r4)
`- Lrunkain:
`
`# We align here to (x02n)
`4 because that
`15 easy ta
`# remember for the trace
`
`# last instr when not M55
`# first instr fran WSs
`#¢ translate saved registers
`
`4 end af string?
`
`shopnas
`ie020x)
`
`Erg ,2rl5 mdfco
`erg arl4 tedyco
`MeofcO64,0),.ehcase
`ard era, .Latart
`
`OedOO(sr2) ded
`Srt,UfSr3)
`find
`Oef(Srd) dnd)
`edAO(6d 273) OKOfod
`(mdcOfsrd) ald
`art er4,.Litart
`
`+,Lrunkern:
`+
`j
`+
`org
`+ SToOnss:
`+
`In
`+
`ain
`+
`tr
`+
`In
`+. Pinel:
`‘
`cli
`+
`la
`+
`ine
`+
`mei
`+
`mec
`+
`mi
`+
`In
`+ motnss:
`ar? i

`i
`ar? 12
`#
`él]
`&rlL Oxoiic{er?]
`#
`st
`Pd -296,7 +3134) 08
`slong OF40010, 000000004. Llodata
`Lrdecw:
`
`# put a blank instead af Oxf
`
`4 and a Ux00 in case all 64 used
`
`# store iplsubchannel
`
`to lowcore
`
`Chapter 10, Cloning Linuximages=231
`
`

`

`long 08640000), honoio00
`arg Oat)
`
`org Oxeld
`sPHCaSCE
`
`# FRCDIC to lowercase ASCII]
`
`table
`
`byte=m0nO] ONO 020x07 Oc Od? , Oc? F
`ehybe=007 Oe? O07 eB, O00 Oc Oe, OocOF
`ebyte=Qh) OK 2 cSOx? Oecd Ot, Ooch
`ehyte=(L009 0N07 el? Ox? Onc! ood, Oot
`sbyte=OmOFod? OKLt ot? 0x07 doded? onl
`cyte
`0007 de,OnO7 de? x07 00S 0006, Oot?
`chyte=OM07 007 0x16, 0x07 x07 0c07 0007, Ome
`ehyte=e070) O07 07 ed cS ed? OA
`ebyte=(20 O0FF OMS 084 O65 OcOd? , Doe
`ehyte=M87Ad O98 0028 Onde O28 2B, Ore
`byte=e2b 0082 ONES 89OBA Oc ea, Oot
`byte
`DBD UE M214deAcesSE, OA
`byte=Oe? 002 F ON07 008E O07 0007 Od? , OeBF
`-bybe=ee AS, ONO reed eS OKIE, Ona F
`ehyte=M07 090OKO oc? OF Oc a? Oe?
`hyke=Oe),60, 0n3A, 2d, OdeetoD, Ones
`byte
`=0? mh] nb hd, ObedhS 06, Ob?
`byte=(ee 0059, 00K OMAP 0x07 tod ond, OMF 1
`byte©00F8, 066A, ONGB 0080, ONGD OME OMF, Onrd
`byte
`O07] 007? OmAG OAT 0891 00007 0002, OT
`rhybe=OM EARPE, On 3 dard,tSere Oar? Ones
`ebybe 79 Onc OAD CABOe? Oochad? Ooch
`ehyte=MSE, 0690 OSD PA OM Oc Oe? OA
`byte=(AB On? OeB OSD 0x07 OcOd? , doh
`byte=ONT B,(hl Oni? 083, Oxi4 00S On66, Ooh?
`cbyte©068,089, ONOT 093,094 0095 ,0KA7, O07
`byte«©007 006A, 0x68, 0080, 0x60 OeGk ,OndF, Oxra
`byte=Om 1 OeF 2 ON07 0096 081 O97Ad, O08
`ehyte=QC 0eFR 0073 hdOS ere er? Ore
`ebyte 079nF, ORF Ol? 99 Olt Chol? , Ooo?
`ebyte QaUe Onde dd edddS eb, Oe
`byte
`00380099, 0007 0007 0094 O07 ond? , Ont?
`
`FFFPFRRRFFFRRRHRHERRRHReFHFHFPRRHHFHrHHHHHHHT
`
`fend of pre initialized data is here (CMarea follows
`# from hers we load 1k blocklist
`# end af function
`
`Note that the patch shown in Example 10-19 is nota production-strength
`solution, and it has not yet baen submitted to the IBM team in Boablingen who
`maintain the &'390-specific portions of the kernel source.
`
`2d2
`
`Linux on JBM @server zSeries and S950: ISPYASP Solutions
`
`

`

`Note: The IPL parameters are not restricted to the IPL from NSS. You can
`also use therm whenyou IPL trom disk. With a little morecodein lhekernel, It's
`
`_ possibleto makethe cadeoesSAVESYSostossaveefhis SE, as 5
`done for CMS. Ha
`
`The length of the parameters passed on the IPL command is restricted to 64
`characters. This may not be sufficient in many casas, so we wrote the code such
`that ihe parameters ara appended to whatever ig already in the Kamel (i.e. tha
`parameters in the parameterfile as it was used in silo).
`
`Tip: Additional parameters specified in thekemelcommand line (not uséd by
`“the kemelor devios drivers) end up as environment variables tothe boot
`scnpts.This can be used to pass options to the boot scripts (e.g. IP address).
`
`To exploit this patch, a trace should be set up to stop execution at Ox0200, at
`which pointthe SAVESYS command can ba issued, as shown in Example 10-20.
`
`Examme 10-20 Defining and saving the NSS
`
`CP OOEFSYS SUSE2]HA 0-18] El MINSIZE=40M PARMREGS=0-15
`The Wamed Saved System (N53) SUSEFI64 was successfully defined in fileid OLlO.
`TRACE T A fan.
`
`[PL
`SHOR ORCI
`
`[PL 1A CLEAR
`Tracing active at
`== DOM0ZI
`LN
`SAVESTS SUSEZ164
`Haned Saved System (N53) SUSEZ]44 was successfully saved in fileid O10,
`TRACE EMD ALL
`Trace anded
`
`O0OOF OI
`
`co?
`
`This is very similar to what is shown in 10.7.1, “Using an NSS with just the
`kernal" on page 228, except for the different address to fraeze the IPL.
`
`Exanle 10-27 Demonstrate ie modiied kernel conmfrand lire
`
`(gec version 2.95.2 [4d (release) ) #1
`
`TPL SUSEZDGA PARM TEST=EMAMPLE
`Linux version 2.2.16 (root@tux80000)
`SMP Wed Aug 1
`lhs2ls2? EST 2001
`Command line is:
`fo dasd=200 0LA0 LAL Ged rmoot=)cevidasds] aoinitrd
`test=exanple
`We are running under ‘WH
`This machine has an [EEE fpu
`Initial ramdisk at: CxO0OO00 [16777216 bytes}
`Detected device J1A0 on subchannel] GO00 - PLA = FO,
`Detected deviled D1Al on subehanne! G0] = PLA = FO,
`Detected deviled O00 en subchannel! O02 = PLA = BO,
`
`PAM = Fd, PON = FF
`PRM = Fo,
`POM = FF
`PRM = 80,
`POM = FF
`
`Chapter 10, Cloning Linuximagas 2d
`
`

`

`The IPL in Example 10-21 shows the test-example option added to the IPL
`command. This shows up again al the end of the command line echoed by the
`kernal.
`
`Note: Because CP walluppercasetha command when typedinonthe
`console, the patch was made to translate it to lowercase. This way we can
`specifythe options for Linux that need to be lowercase. This obviously causes
`_ problems whenyouwant tto da thingsiin.ineSaasit igrewi take
`: mote thinking and more coding. 73
`
`The currant implementation of tha DASD driver requiras all disks to ba specified
`ina single dasd= parameter. If we want to tailor the list of disks al each IPL, wa
`need to specify them all on the IPL command. When the dasd= parameter is
`specified more than once, the last one is used. This & useful because the patch
`allows us to override thelist of disks defined in the parameterfile.
`
`You can do more with this than override the dasd= parameter. Parameters that
`are not processed by the built-in driver during the boot process will ba made
`available as environment variables to the init process. This means you can pick
`up valuas in the boot scripts (@.g. to configure your IP address). If you need the
`values after tha init process has completed, you can take the contents of the
`oroe!cmdline pseude file to retrieve the parameters.
`
`2a4
`
`Linux on JBM ileerver zSeries and Sod: ISP/ASP Solutions
`
`

`

`
`
`Network infrastructure
`design
`
`This chapter uses the networking theory introduced in Chapter 4, “Networking a
`penguin colony” on page 73 to help you design your virtual networking
`environment.
`
`© Gopyriaht (Bi Garp, 2007
`
`205
`
`

`

`11.1 Virtual IP addressing
`
`In this section we describe how to set up our virtual IP address solution using the
`Linux dummy interface. In4.2.3, “Virtual |P addressing’ on page 79, wa introduce
`tha concept of virtual IP addressing using dummy, and this method becomes part
`of the solution presented in the remainder of this chapter.
`
`11.1.1 Sample configuration
`
`In our example scenario, we have a single Linux instance which uses private IP
`addressing on the CTC device to the router, but requires a public IP addrass for
`network connectivity.
`
`11.1.2 Compiling dummy.o
`if dummy interface support is not present in your kemel, you'll have to build it.
`Although this is not a major task, instructions on how to build a complete new
`kamal are beyond the scope of this book. Instead, you can refer to the Linux
`HOWTOs to find ona on kernal complication that deseribas the basics.
`
`In your kernal configuration fila, dummy support is controlled by the
`CONFIG_DUMMY variable. Make this value ¥ or
`to include dummy support.
`Figure 11-1 on page 237 shows amake menuconfig session al the 5/390
`Network davica support panel Hara, wa have selected to add tha dummy
`support as a module. We recommend that the dummy support be built as a
`module, as this provides the least intrusive way of adding the support to a
`running system.
`
`206
`
`Linux on JBM ileerver zSeries and Sod: ISP/ASP Solutions
`
`

`

`S33) feteork device cupport
`Arrow keys navigate the menu,
`“Enter? selects submenus -—-),
`Highlighted letters are hotkeys, Pressing <Y> includes, <N> excludes,
`“> modulerizes Feabures, Pras: (Esee(Eso> ta anit. <7) For Help,
`Legends [#] Built-in [
`J eweluded
`¢M> module
`< > module capable
`
`[8]MHturk device support
`=== S390 Hetwork devices
`TD TC device support
`[#) UCY device 3
`& (WH only?
`[4] thernet (10 or LOOMbIE)
`[#] oken Ring driver support
`
`«Help?
`
`SORE Exit
`
`Figura 17-1 Compiling dummy net driver support info kamel
`
`Once you have updated the kernel configuration, you can make just the network
`modula directory with the following command {issued from the root of the Linux
`source tree):
`
`nake modules SUBDIRSdrivers,net
`
`In our case, we received the following output from the compilation:
`
`# fake modules SUBDDRS=drivers/net
`make =-C drivers/net CFLAGS="=Wall =Wstrict-prototypes -(2
`-fomi t-frane-petriter -tho-strict-aliasing -D_SMP -pipe
`~fro-strangth-reduce -DMODULE" MAKING _NOOULES=1 modules
`make[1]: Entering directory */usr/sre/linus-2,2.16,$uSE/drivers/net'
`gcc =)KERNEL -D/usr/sre/linuxfinclude -Wall -Wstrict-prototypes -0?
`-fomit-frame-patnter -tno-strict-aliasing -D_SAP -pipe
`fro=strength=reduce -DMODULE
`=c =0 dummy.o dummy.c
`rin -f $TOPDIR modules (METMOOULES
`echo=dunmy.o => $TOPOIR/modules WET MODULES
`echo drivers/net/
`drivers/net/
`dunmy.o; do \
`im
`for i
`od STOPDIRmodules;
`In -3f
`..fdrivers/net/s$1 33 done
`make[l): Leaving directory ~“fusefsre/)inus-2.2. 16. 5uSf/drivers/net *
`
`Chapter 11. Network infrastructure dasion«=27
`
`

`

`Once the module has been built, tt must be copied to the /libimodulas tree so that
`tha Kernel utililies can find the module when required. Tha easiest way is to
`simply copy the module using the following command:
`
`# cp drivers/net/dumy.o /1ib/medules/2.2.16/net/
`
`This is obviously fora 2.2.16 kamel: you will naed to confirm the correct directory
`under lih'modules! for your system,
`
`Aitention: Usually the command rake modulesinstall is used to copy
`newly-compiledmodules into the right ‘Hb‘modulas directory, However, if‘you
`usedthe wake command shownabove andhave not previously bbuill @kernel
`and full modules in this source irae, do notusetha make modulesinstall
`_ commandto instalthenew module, Doingso would delete as of yourexisting
`, Moca. |
`:
`i
`:
`i
`:
`i
`:
`i
`eee
`ee
`ee
`ce ee i
`:
`ir
`:
`
`After copying the module, run the command depnod -a to recreate the module
`dependency file. Once this is complete, you can issue modprobe or insmod to
`install thea dummy module:
`
`insmod durmy
`#
`ising #libfnedules/?. 2.167net/dumny .a
`
`YoU are now ready to configure a dummy interface.
`
`11.1.3 Configuring dummy0
`In our éxamplé, our Linux instance has a CTC davice configured with an |P
`address of 192.168.11.1. We want to add a dummy interface with the IP address
`9.12.6.99, which is visible to outside ourneatwork, Tha following command will do
`this:
`

`
`ifconfig dummy) 9.127.6.99 broadcast 9.126.990 nebrask 255.2595,.295,755 mtu 150e
`
`Now, we can ping our interlace to see that it is active:
`
`# ping 9.17.6.99
`PING 9.12.6.99 [9.12.6.99}): 56 data bytes
`64 bytes from 9.12.6.99:
`fomposeqe’l ttl-255 timer 10.469 om
`64 bytes from 9.12.6.99:
`ieomposeqel]
`ttl=255 time-5.903 ms
`--- 9,12.6.99 ping statistics ---
`2 packets Lransmilted, 2 packets received, O& packet
`round-trip mingavg’max = 5.903/6. 186/10.4649 om
`
`loss
`
`268=Linux on JBM @server zSeries and S950: ISPYASP Solutions
`
`

`

`Qur dummy interface is ready to receive traffic. To complete the configuration, ihe
`rest of tha network will have to be configured to direct traffic forthe virtual IP
`address to the correct Linux instance. In ourtest case, we onterad static routesin
`the intervening routers, This allowed us to connect to services from Windows
`machines on the network to our Linux instance using the virtual IP address; see
`Figure 11-2:
`
`PTTL ed Ce em etm eye ila
`
`The SuSE Website
`
`Welcometo SuSE, L

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket