Linux for S/390 Device Drivers and Installation Commands
by user
Comments
Transcript
Linux for S/390 Device Drivers and Installation Commands
Linux for S/390 Device Drivers and Installation Commands (March 4, 2002) Linux Kernel 2.4 LNUX-1203-07 Linux for S/390 Device Drivers and Installation Commands (March 4, 2002) Linux Kernel 2.4 LNUX-1203-07 Note Before using this document, be sure to read the information in “Notices” on page 203. Eighth Edition – (March 2002) This edition applies to the Linux for S/390 kernel 2.4 patch (made in September 2001) and to all subsequent releases and modifications until otherwise indicated in new editions. © Copyright International Business Machines Corporation 2000, 2002. All rights reserved. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Summary of changes . . . . . . . . . v | Edition 8 changes. . . . . . . . . . . . . v Edition Edition Edition Edition Edition Edition 7 6 5 4 3 2 changes. changes changes changes changes changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v . vi . vi . vi . vii . vii About this book . . . . . . . . . . . ix How this book is organized . Who should read this book . Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix . ix . ix Part 1. Linux for S/390 Device drivers overview . . . . . . . . . . 1 Chapter 1. Common device support . . . 3 Chapter 2. Partitioning DASD Prerequisites . . . . . Why use partitions? . . . Restrictions . . . . . . The partition table . . . S/390 disk layout (VTOC) . . . . . . . . . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 6 6 Part 2. Linux for S/390 — S/390 device drivers . . . . . . . . . . . 9 Chapter 3. Linux for S/390 DASD device driver . . . . . . . . . . . . . . . 11 DASD overview . . . . . . . . DASD naming scheme using devfs . DASD naming scheme without devfs . Partitioned DASD . . . . . . . DASD features . . . . . . . . DASD kernel parameter syntax . . . DASD kernel example (using devfs) . DASD module parameter syntax . . DASD module example . . . . . DASD dynamic attach/detach . . . DASD – Preparing for use . . . . DASD API (ioctl interface) . . . . DASD restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 12 13 14 15 16 17 17 17 18 19 21 Chapter 4. Linux for S/390 XPRAM device driver . . . . . . . . . . . . 23 XPRAM Note on XPRAM XPRAM features. . . . . . . reusing XPRAM partitions kernel parameter syntax . module parameter syntax. © Copyright IBM Corp. 2000, 2002 . . . . . . . . . . . . . . . . . . . . . . . . 23 23 24 25 Chapter 5. Linux for S/390 Console device drivers. . . . . . . . . . . . 27 Console features . . . . . . Console kernel parameter syntax Console kernel examples . . . Using the console . . . . . Console – Use of VInput . . . Console limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 28 28 28 30 31 Chapter 6. Channel attached tape device driver . . . . . . . . . . . . 33 Tape Tape Tape Tape Tape Tape Tape Tape Tape Tape Tape driver features . . . . . . character device front-end. . . block device front-end . . . . driver kernel parameter syntax . driver kernel example . . . . driver module parameter syntax driver module example . . . device driver API . . . . . driver examples . . . . . . driver restrictions . . . . . driver further information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 34 34 35 35 36 36 37 37 38 38 Chapter 7. Generic cryptographic device driver . . . . . . . . . . . . 39 Overview . . . . . . HMC settings. . . . . Installing z90crypt . . . Decryption using z90crypt Other functions of z90crypt z90crypt header file . . Example of use: Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 40 41 43 44 45 46 Part 3. Linux for S/390 Network device drivers . . . . . . . . . . . 49 Chapter 8. Linux for S/390 Channel device layer . . . . . . . . . . . . 51 Description . Channel device See also. . . Files . . . . . . layer . . . . . . . options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 52 60 61 Chapter 9. Linux for S/390 CTC/ESCON device driver . . . . . . . . . . . . 63 CTC/ESCON CTC/ESCON CTC/ESCON CTC/ESCON CTC/ESCON features . . . . . . . . . . with the channel device layer . . without the channel device layer . – Preparing the connection . . . – Recovery procedure after a crash . . . . . . 63 63 64 66 69 iii Chapter 10. Linux for S/390 IUCV device driver . . . . . . . . . . . . 71 IUCV features . . . . . . . . . IUCV kernel parameter syntax . . . . IUCV kernel parameter example . . . IUCV module parameter syntax . . . IUCV module parameter example . . . IUCV – Preparing the connection . . . IUCV – Further information . . . . . IUCV restrictions . . . . . . . . IUCV Application Programming Interface . . . . . . . . . . . . . . . . (API) . . . . . . . . . . . . . . . . . . 71 71 72 72 72 73 75 75 75 Chapter 11. Linux for S/390 LCS device driver . . . . . . . . . . . . . . . 93 | LCS LCS LCS LCS LCS LCS supported functions . . . . . channel device layer configuration channel device layer configuration kernel parameter syntax . . . warning . . . . . . . . . restrictions . . . . . . . . . . . . . . example . . . . . . . . . . . . . . . . . . . . . 93 93 93 94 95 95 Chapter 12. QETH device driver for OSA-Express (QDIO) . . . . . . . . . 97 Naming conventions . . . . . . . . . . Introduction . . . . . . . . . . . . . Installing the modules . . . . . . . . . . QETH supported functions . . . . . . . . Configuring QETH for QDIO OSA-Express using the channel device layer . . . . . . . . . OSA-Express feature in QDIO mode QETH parameter syntax . . . . . . . . . . . OSA-Express feature in QDIO mode channel device layer configuration example . . . . . Examples: OSA-Express feature in QDIO mode . OSA-Express feature in QDIO mode – Preparing the connection . . . . . . . . . . . . IP address takeover . . . . . . . . . . OSA-Express feature in QDIO mode – Virtual IP address (VIPA) . . . . . . . . . . . . QETH restrictions . . . . . . . . . . . Priority queuing . . . . . . . . . . . . . . . 97 97 98 98 insmod - Load a module into the Linux kernel modprobe - Load a module with dependencies the Linux kernel . . . . . . . . . . lsmod - List loaded modules . . . . . . depmod - Create dependency descriptions for loadable kernel modules. . . . . . . . mke2fs - Create a file system on DASD. . . . . 144 into . . 146 . . 149 . . Chapter 14. VIPA – minimize outage due to adapter failure . . . . . . . . 153 Standard VIPA . . . . . . . . . . . . . 101 . 102 . 102 . 104 . 104 . 105 . 105 . 105 Part 4. Installation commands and parameters . . . . . . . . . . . . 107 . 153 Chapter 15. Kernel parameters . . . . 155 ipldelay . . maxcpus . . mem . . . noinitrd . . ramdisk_size ro . . . . root . . . vmhalt . . cio_msg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 157 158 159 160 161 162 163 164 Chapter 16. Overview of the parameter line file . . . . . . . . . . . . . . 165 Parameters . . . . . . . . . . . . . . 166 . . 167 Appendix A. Reference information . 99 . 150 . 152 LCS parameter syntax . . . . . . . . LCS module parameter syntax (without the channel device layer) . . . . . . . . . OSA-Express parameter syntax . . . . . OSA-Express driver command syntax (without channel device layer) . . . . . . . . . Linux for S/390 Major/Minor numbers. . . 167 . . . . the . . . . 167 168 168 169 Appendix B. Kernel building . . . . . 171 Building the kernel . . . Using ’config’ or ’oldconfig’ Using ’menuconfig’ . . . Kernel parameter options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 175 180 192 Glossary . . . . . . . . . . . . . 199 Notices . . . . . . . . . . . . . . 203 | | Chapter 13. Useful Linux commands 109 Trademarks . dasdfmt - Format a DASD . . . . . . dasdview - Display DASD Structure . . . fdasd – DASD partitioning tool . . . . snIPL – Remote control of Support Element functions . . . . . . . . . . . . zIPL – zSeries initial program loader . . ifconfig - Configure a network interface . . 110 . 114 . 123 International License Agreement for Non-Warranted Programs . . . . . . 205 iv . . . . . . (SE) . . . . . . . 130 . 134 . 140 . . . . . . . . . . . . . 204 Index . . . . . . . . . . . . . . . 211 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Summary of changes This revision contains changes to support the Linux for S/390 kernel loadable module for the Linux kernel version 2.4. | | | | | Edition 8 changes New Information v snIPL tool v Setting up XPRAM dynamically v Reference to Dump Tools manual | | | | Changed Information v Open-source LCS driver v Corrected the separator (colon) between multiple guest-machine IDs in the iucv kernel parameter and insmod command line. v Added references to VIPA requirement for kernel built with CONFIG_DUMMY kernel option. | | | This revision also includes maintenance and editorial changes. Technical changes or additions to the text and illustrations are indicated by a vertical line to the left of the change. | | Deleted Information | | v References to CONFIG_IP_ALIAS kernel option Edition 7 changes New Information v Option u added to fdasd. The option re-creates VTOC labels and keeps the partitions. v VIPA (virtual IP addressing) chapter v Installation instructions for qdio and qeth modules v z90crypt cryptographic device driver Changed Information This revision also includes maintenance and editorial changes. Technical changes or additions to the text and illustrations are indicated by a vertical line to the left of the change. Deleted Information v Parameter buffer_count (replaced by mem_in_k) in QETH © Copyright IBM Corp. 2000, 2002 v Edition 6 changes New Information v DASDview Changed Information This revision also includes maintenance and editorial changes. Technical changes or additions to the text and illustrations are indicated by a vertical line to the left of the change. v OSA-Express – Clarifying editorial changes v fdasd – r and s options added v zIPL – Use of quotes Edition 5 changes New Information v VIPA v IP address takeover Changed Information This revision also includes maintenance and editorial changes. Technical changes or additions to the text and illustrations are indicated by a vertical line to the left of the change. v OSA-Express – Updates for new cards v IUCV – New API v Kernel building restrictions. Edition 4 changes New Information v Channel device layer v v v v Device file system Tape driver zIPL utility modprobe, lsmod, depmod summarized Changed Information This revision also includes maintenance and editorial changes. Technical changes or additions to the text and illustrations are indicated by a vertical line to the left of the change. v DASD – Add commands for creating device nodes and more details of naming scheme and channel device layer description added v XPRAM – note on reusing partitions v CTC channel device layer description added v Gigabit Ethernet section expanded for all OSA-Express devices and channel device layer description added v Console section expanded vi Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Edition 3 changes New Information v Gigabit Ethernet driver restriction This revision also includes maintenance and editorial changes. Technical changes or additions to the text and illustrations are indicated by a vertical line to the left of the change. Edition 2 changes New Information v CTC/ESCON VM channel subset selection for TCP/IP Changed Information v CTC/ESCON module parameter syntax v VM Minidisk driver revisions v ’mem’ parameter additional option v Console parameter change for P/390 Summary of changes vii viii Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) About this book This book describes the drivers available to Linux for the control of S/390 devices and attachments. It also provides information on commands and parameters relevant to the installation process. | | | Note: These drivers may be used on S/390 machines or on zSeries machines running in S/390 compatibility mode. The drivers described herein have been developed with version 2.4.7 of the Linux kernel. If you are using a later version of the kernel, the kernel parameters may be different from those described in this document. For more specific information about the device driver structure, see the documents in the kernel source tree at ...linux/Documentation/s390. When you have installed Linux including the kernel sources this path will be on your machine. Typically: /usr/src/linux/Documentation/s390. Note: For tools related to taking and analyzing system dumps, see the manual Linux for S/390 Using the Dump Tools, LNUX-1208. | | How this book is organized The first part of this book contains general information relevant to all Linux for S/390 device drivers. Parts two and three consist of chapters specific to individual device drivers. (Part two describes the drivers for S/390 hardware; part three describes the network device drivers.) Part four contains information on the Linux and S/390 commands and parameters used in installing. These chapters are followed by a reference section containing summaries of the command syntax of the drivers, a glossary and an index. Who should read this book This book is intended for : v System administrators who wish to configure a Linux for S/390 system Assumptions The following general assumptions are made about your background knowledge: v You have an understanding of Linux and S/390 terminology. v You are familiar with Linux device driver software. v You have an understanding of basic computer architecture, operating systems, and programs. © Copyright IBM Corp. 2000, 2002 ix v You are familiar with the S/390 devices attached to your system. (S/390 knowledge should not be required, as the code specific to the S/390 hardware is provided by IBM.) x Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Part 1. Linux for S/390 Device drivers overview This section describes principles common to different device drivers. © Copyright IBM Corp. 2000, 2002 1 2 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 1. Common device support Before Linux for S/390 can use a device the associated device driver must be available to the Linux kernel. This can be achieved either by configuring the Linux kernel to use the channel device layer, compiling the device driver into the kernel or by invoking the driver as a module. The options for each driver are shown in the following table: Device driver | | Able to use Channel device layer Kernel Module DASD no yes yes XPRAM no yes yes Hardware console no yes no 3215 console no yes no Tape no yes yes CTC/ESCON yes yes yes IUCV no yes no LCS yes yes yes OSA-Express yes no yes Crypto no no yes A description of how to build the kernel including device drivers is given in Appendix B, “Kernel building” on page 171. The parameters for the kernel resident device drivers are held in the parameter line file which is created during the installation of Linux . v If you are using an LPAR or native installation this is parameter -p in the zipl parameter file. v For a VM installation, include the parameter in the PARM LINE A file. For the format of this file see Chapter 16, “Overview of the parameter line file” on page 165. Drivers which are not kernel resident are loaded into Linux with their parameters by means of the insmod or modprobe command. See “insmod - Load a module into the Linux kernel” on page 144 or “modprobe - Load a module with dependencies into the Linux kernel” on page 146 for the syntax. Because the S/390 and zSeries architecture differs from that used by the Intel PC and other machines the I/O concepts used by S/390 and zSeries device drivers are also different. Linux was originally designed for the Intel PC architecture which uses two cascaded 8259 programmable interrupt controllers (PIC) that allow a maximum of 15 different interrupt lines. All devices attached to that type of system share those 15 interrupt levels (or IRQs). In addition, the bus systems (ISA, MCA, EISA, PCI, etc.) might allow shared interrupts, different polling methods or DMA processing. © Copyright IBM Corp. 2000, 2002 3 Unlike other hardware architectures, ESA/390 and zSeries implements a channel subsystem that provides a unified view of the devices attached to the system. Although a large variety of peripheral attachments are defined for the ESA/390 architecture, they are all accessed in the same manner using I/O interrupts. Each device attached to the system is uniquely identified by a subchannel, and the ESA/390 and zSeries architecture allows up to 64,000 devices to be attached. To avoid the introduction of a new I/O concept to the common Linux code, Linux for S/390 preserves the IRQ concept and systematically maps the ESA/390 subchannels to Linux as IRQs. This allows Linux for S/390 to support up to 64,000 different IRQs, each representing a unique device. The unified I/O access method incorporated in Linux for S/390 allows the operating system to implement all of the hardware I/O attachment functionality that each device driver would otherwise have to provide itself. A common I/O device driver is provided which uses a functional layer to provide a generic access method to the hardware. The driver comprises a set of I/O support routines, some of which are common Linux interfaces, while others are Linux for S/390 specific: get_dev_info() Allows a device driver to find out what devices are attached (visible) to the system, and to determine their current status. request_irq() Assigns the ownership of a specific device to a device driver. free_irq() Releases the ownership of a specific device. disable_irq() Prevents a specific device from presenting interrupts to the device driver. enable_irq() Allows a device to present I/O interrupts to the device driver. do_IO() Initiates an I/O request. halt_IO() Terminates the I/O request that is currently being processed by the device. do_IRQ() This is an interrupt pre-processing routine that is called by the interrupt entry routine whenever an I/O interrupt is presented to the system. The do_IRQ() routine determines the interrupt status and calls the device specific interrupt handler according to the rules (flags) defined by do_IO(). More information on these commands can be found in the Linux source directory, .../usr/share/doc/kernel-doc-2.4.7/s390/cds.txt 4 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 2. Partitioning DASD Partitioning is a means of dividing a single DASD into several logical disks. A partition is a contiguous set of blocks on a DASD which is treated by Linux as an independent disk. The partition table defines the extents of partitions on a DASD. Prerequisites To set up and use DASD partitions you must take these steps: 1. Use dasdfmt tool (see “dasdfmt - Format a DASD” on page 110) with the (default) ’-d cdl’ option to format the DASD with the IBM compatible disk layout. 2. Use the fdasd tool (see “fdasd – DASD partitioning tool” on page 123) to create or add partitions. After this your partitions should appear in the device file system in the /dev/dasd/... directory. 3. Use the Linux mke2fs tool (see “mke2fs - Create a file system on DASD” on page 152) to create a file system on the partition or the mkswap tool to use the partition as swap space. If you use mke2fs you must ensure that the blocksize specified matches that which was defined with dasdfmt. 4. If you have created a file system you may mount the partition to the mount point of your choice in Linux . If a DASD is formatted in the normal Linux disk layout (dasdfmt option -d ldl) it is not possible to create partitions on it and the whole DASD must be accessed as a single partition. Why use partitions? There are several reasons why you may want to partition your data. The most common of these are: v Encapsulate your data. As corruption of the file system is likely to be local to a single partition, data in other partitions should survive. v Increase disk space efficiency. You can have different partitions with different block sizes to optimize your usage. To improve performance a large blocksize is better, but this can be wasteful of space. In general wastage amounts to half a block for each file, which becomes significant for small files. For these reasons it is usually better to store small files in a partition with a small blocksize and large files in one with a larger blocksize. v Limit data growth. Runaway processes or undisciplined users can consume so much disk space that the operating system no longer has room on the hard drive for its bookkeeping operations. This will lead to disaster. By segregating space you ensure that processes other than the operating system die when the disk space allocated to them is exhausted. Restrictions There are some limitations to the current implementation and some precautions you should take in using it. These are: v You can only partition ECKD disks formatted with the new disk layout (dasdfmt option -d cdl). © Copyright IBM Corp. 2000, 2002 5 DASD device driver v No more than three partitions can be created on any one physical volume. This restriction is a result of the scheme of allocating Linux major and minor numbers to the partitions. (Increasing the number of partitions per DASD would drastically reduce the number of DASD that could be mounted in a system). v You are advised to use fdasd to create or alter partitions as it checks for errors. If you use another partition editor it is your responsibility to ensure that partitions do not overlap. If they do, data corruption will occur. v To avoid wasting disk space you should leave no gaps between adjacent partitions. Gaps are not reported as errors, but a gap can only be reclaimed by deleting and recreating one or other of the surrounding partitions and rebuilding the file system on it. v A disk need not be partitioned completely. You may begin by creating only one or two partitions at the start of your disk and convert the remaining space to a partition later (perhaps when performance measurements have given you a better value for the blocksize). v There is no facility for moving, enlarging or reducing partitions as fdasd has no control over the file system on the partition. You only can delete and recreate them. If you change your partition table you will lose the data in all altered partitions. It is up to you to preserve the data by copying it to another medium. The partition table The partition table is an index of all the partitions on a DASD. In Linux for S/390 we do not use the normal Linux partition table, but as in other S/390 operating systems we use a VTOC (Volume Table Of Contents) to store this index information. In the S/390 a VTOC is used to access data on any DASD. It is an index in a special format which contains pointers to the location of every data set on the volume. In Linux for S/390 these data sets form our Linux partitions. S/390 disk layout (VTOC) Operating systems on a mainframe (OS/390, VM/ESA and VSE/ESA) expect a standard DASD format. In particular the format of the first two tracks of a DASD is defined by this standard. In order to share data with other operating systems Linux for S/390 can use DASD in the common format. The first two tracks are then unavailable to Linux (they have non-Linux -standard variable blocksizes for example) but this is transparent to the user (apart from a slight loss in disk capacity). Volume label The third block of the first track of the DASD (cylinder 0, track 0, block 2) contains the volume label. This block has a four byte key and an eighty byte data area. The contents are: 1. Key This identifies the block as a volume label. It must contain the four EBCDIC1 characters ’VOL1’. 2. VOLSER (volume serial number) This identifies by serial number the volume on which the partition resides or will reside. A volume serial number is one to six alphanumeric, national ($, #, 1. The conversion to EBCDIC will be carried out by the fdasd tool. 6 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) DASD device driver @) or special characters in the EBCDIC1 code. If it contains special characters other than hyphens it must be enclosed in apostrophes. If the VOLSER is shorter than six characters it is padded with trailing blanks (converted to EBCDIC code 0x40). Do not code a volume serial number as SCRTCH, PRIVAT, MIGRAT or Lnnnnn (L with five digits) as these are reserved labels in other S/390 operating systems. 3. VTOC address This is a five byte field containing the address of a standard IBM format 4 data set control block (DSCB). The format is: cylinder (2 bytes) track (2 bytes) block (1 byte). All other fields of the volume label will contain EBCDIC space characters (code 0x40). VTOC The VTOC is located in the second track (cylinder 0, track 1). It contains a number of 144 byte labels which consist of a 44 byte key and a 96 byte data area. The first label is a format 4 DSCB describing the VTOC itself. The second label is a format 5 DSCB containing free space information. (If the volume has more than 65536 tracks the format 5 DSCB will contain binary zeroes and will be followed by a format 7 DSCB containing the free space information.) After these follow format 1 DSCBs for each of the partitions. Each label is written in a separate block. The key of the format 1 DSCB contains the data set name, which identifies the partition to z/OS, OS/390, VM/ESA or VSE/ESA. The VTOC can be displayed with standard S/390 tools such as VM/DITTO. A Linux DASD with physical device number 0x’0193’, volume label ’LNX001’, and three partitions might be displayed like this: VM/DITTO DISPLAY VTOC ===> CUU,193 ,VOLSER,LNX001 3390, WITH LINE 1 OF 5 SCROLL ===> PAGE 100 CYLS, 15 TRKS/CYL, 58786 BYTES/TRK --- FILE NAME --- (SORTED BY =,NAME ,) ---- EXT BEGIN-END RELTRK, 1...5...10...15...20...25...30...35...40.... SQ CYL-HD CYL-HD NUMTRKS *** VTOC EXTENT *** 0 0 1 0 1 1,1 LINUX.VLNX001.PART0001.NATIVE 0 0 2 46 11 2,700 LINUX.VLNX001.PART0002.NATIVE 0 46 12 66 11 702,300 LINUX.VLNX001.PART0003.NATIVE 0 66 12 99 14 1002,498 *** THIS VOLUME IS CURRENTLY 100 PER CENT FULL WITH 0 TRACKS AVAILABLE PF 1=HELP PF 7=UP 2=TOP 8=DOWN 3=END 9=PRINT 4=BROWSE 5=BOTTOM 10=RGT/LEFT 11=UPDATE 6=LOCATE 12=RETRIEVE In Linux (using the device file system) this DASD might appear so: [root@host /root]# ls -l /dev/dasd/0193/ total 0 brw------- 1 root root 94, 12 brw------- 1 root root 94, 12 brw------- 1 root root 94, 13 brw------- 1 root root 94, 14 brw------- 1 root root 94, 15 Jun Jun Jun Jun Jun 1 1 1 1 1 2001 2001 2001 2001 2001 device disc part1 part2 part3 where the disc file and the device file represent the whole dasd and the part# files represent the individual partitions. Chapter 2. Partitioning DASD 7 8 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Part 2. Linux for S/390 — S/390 device drivers The S/390 device drivers are: v Chapter 3, “Linux for S/390 DASD device driver” on page 11 v Chapter 4, “Linux for S/390 XPRAM device driver” on page 23 v Chapter 5, “Linux for S/390 Console device drivers” on page 27 | v Chapter 6, “Channel attached tape device driver” on page 33 v Chapter 7, “Generic cryptographic device driver” on page 39 © Copyright IBM Corp. 2000, 2002 9 10 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 3. Linux for S/390 DASD device driver DASD overview The DASD device driver in Linux for S/390 takes care of all real or emulated DASD (Direct Access Storage Device) that can be attached to an S/390 system. The class of devices named DASD includes a variety of physical media, on which data is organized in blocks and/or records which can be accessed (read or written) in random order. Traditionally these devices are attached to a control unit connected to an S/390 I/O channel. In modern systems these have been largely replaced by emulated DASD, such as the internal disks of the Multiprise family, the volumes of the RAMAC virtual array, or the volumes of the Enterprise Storage Server. These are completely virtual representations of DASD in which the identity of the physical device is hidden. Each device protocol supported by the DASD device driver is supplied as a separate module, which can be added and removed at run-time. The DASD core module is named dasd_mod and the device format modules are named dasd_eckd_mod, dasd_fba_mod and dasd_diag_mod. All modules are loaded by issuing the command ’modprobe module_name’. As well as the parameter ’dasd=’ which specifies the volumes to be operated by the DASD device driver, the core module has an additional parameter ’dasd_disciplines=mod_names’ which enables a selection of device protocols to be auto-loaded during initialization of the core module. The DASD device driver is capable of accessing an arbitrary number of devices. The default major number for DASD (94) can only address 64 DASD (see below for details), so additional major numbers (typically descending from 254) are allocated dynamically at initialization or run time. The only practical limit to the number of DASD accessible is the range of major numbers available in the dynamic allocation pool. Each DASD configured to the system uses 4 minor numbers. v The first minor number always represents the entire device, including IPL, VTOC and label records. v The remaining three minor numbers represent partitions of the device as defined in the partition table. DASD naming scheme using devfs We recommend that you use the device filesystem (devfs) to have a comfortable and easy-to-use naming scheme for DASD. (The older naming scheme is described in “DASD naming scheme without devfs” on page 12.) DASD nodes generated by devfs have the general format ’/dev/dasd/<devno>/<type>’, where ’devno’ is the unit address of the device and ’type’ is a name denoting either a partition on that device or the entire device. devno must be four hexadecimal digits, padded with leading zeroes if necessary. For example /dev/dasd/01a1/disc refers to the whole of the disk with device address 0x01a1 and /dev/dasd/01a1/part1 refers to the first partition on that disk. © Copyright IBM Corp. 2000, 2002 11 The entire physical device can also be referred to as node ’/dev/dasd/<devno>/device’ which is equivalent to ’.../disc’; the difference being that the /device node is always available whereas the /disc node is only available after the device has been formatted. (The /part<x> nodes are only available after the device has been formatted and partitioned.) For example a device with address 0x0150 and 2 partitions will have these device node entries: 94 94 94 94 0 0 1 2 /dev/dasd/0150/device /dev/dasd/0150/disc /dev/dasd/0150/part1 /dev/dasd/0150/part2 - for for for for the the the the entire device (before formatting) entire device (after formatting) first partition second partition DASD naming scheme without devfs A Linux 2.2 or 2.4 system is restricted to 256 major device numbers, each holding 64 blocks of 4 minor numbers, giving a maximum of 16,384 DASD even if no numbers are used for other types of device. Every major number used for other devices reduces the maximum number of DASD by 64. If the device file system (devfs) is not activated the DASD device driver has a built in naming scheme for DASD according to Table 1. (You can override the built in scheme by creating customized nodes in the Linux /dev/ subdirectory.) These names are sufficient to access the maximum number of DASD accessible. Table 1. DASD naming convention Names Number Major/minor numbers (assuming dynamic allocation from 254) dasda – dasdz 26 94:0 — 94:100 dasdaa – dasdbl 38 94:104 — 94:252 dasdbm – dasdzz 638 dasdaaa – dasdzzz 17576 Sum: 254:0 — 245:244 245:248 — 131:148 18278 General DASD nodes have the format dasd<x>, or dasd<x><p>, where <x> is a letter identifying the device and <p> is a number denoting the partition on that device. The first form, dasd<x>, is used to address the entire disk. The second, dasd<x><p>, is used to address the partitions on this device. For example /dev/dasda refers to the whole of the first disk in the system and /dev/dasda1 to the first partition on that disk. They are typically created by: mknod mknod mknod mknod mknod mknod .... -m -m -m -m -m -m 660 660 660 660 660 660 /dev/dasda /dev/dasda1 /dev/dasda2 /dev/dasda3 /dev/dasdb /dev/dasdb1 b b b b b b 94 94 94 94 94 94 0 1 2 3 4 5 If you have a large number of DASD you may wish to use a script to create them. An example of this for bash is: 12 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) `cat /proc/dasd/devices | sed ’s/^.*[(]\([ 0-9]*\)[:]\([ 0-9]*\)[)].*\(dasd[a-z]*\)[:].*$/\1 \2 \3/g’ | awk ’ $1 { printf "mknod /dev/%s b %d %d; mknod /dev/%s1 b %d %d;",$3,$1,$2,$3,$1,$2+1; }’` A similar script may be written for csh or ksh. Partitioned DASD The DASD device driver is embedded into the Linux generic support for partitioned disks. This implies that you can have any kind of partition table known to Linux on your DASD, such as the MSDOS or Amiga partition scheme. However none of the partition schemes built in to Linux to support platforms other than S/390 will preserve S/390 IPL, VTOC and label records. ’IBM label’ partition scheme: To ensure compatibility with other S/390 operating systems the IBM-label partition scheme has been added to Linux . This scheme currently supports VOL1 (S/390), LNX (Linux ) and CMS (VM/ESA) labeled disks, as well as unlabeled disks which are treated equivalently to LNX-labeled disks. The disk layout of the different types is shown in Figure 1. Figure 1. Partition scheme for VOL1, LNX and CMS labeled disks The first of these examples shows a DASD with compatible disk layout. The second shows a disk in an LPAR or native mode, or a full pack minidisk (dedicated DASD) in VM. The third and fourth examples are VM specific. VOL1 labeled disk: Chapter 3. Linux for S/390 DASD device driver 13 This disk layout (also known as the compatible disk layout, or CDL) is compliant with IBM guidelines for volume labeling of ECKD volumes. This enables non-Linux operating systems to access Linux volumes online, for example for backup and restore. | Partitioning support for such disks means that the VTOC contains data in the IBM standard, namely one ’format 4’ label describing the VTOC, one ’format 5’ label2 and one to three ’format 1’ labels3 describing the extents of the volume (partitions to Linux ). The partitions are created and modified by the fdasd tool (see “fdasd – DASD partitioning tool” on page 123). LNX1 labeled disk or non-labeled volume: These disks are implicitly reserved for use by Linux . The disk layout reserves the IPL and label records for access through the ’entire disk’ device. All remaining records are grouped into the first (and only) partition. CMS1 labeled disk: Handling of these disks depends on the content of the CMS filesystem. If the volume contains a CMS filesystem it will be treated equivalently to a LNX labeled volume. If the volume is a CMS reserved volume 4 the CMS reserved file is represented by the first and only partition. IPL and label records as well as the metadata of the CMS filesystem are reserved for access through the ’entire disk’ device. See Chapter 2, “Partitioning DASD” on page 5 for more information. DASD features The DASD device driver can access devices according to Table 2 by its built in CCW interface. Table 2. Supported devices. ’*’ signifies any digit. Device format Control unit type/model ECKD (Extended Count 3990(2105)/** Key Data) 3990(2105)/** FBA (Fixed Block Access) Device type/model 3380/** 3390/** 9343/** 9345/** 6310/?? 9336/?? 3880/** 3370/** The DASD device driver is also known to work with these devices: v Multiprise internal disks v RAMAC v RAMAC RVA v Enterprise Storage Server (Seascape) virtual ECKD-type disks 2. The ’format 5’ label is required by other operating systems but is unused by Linux and set to zeroes by fdasd. 3. Other operating systems may create up to seven ’format 1’ labels. 4. CMS reserved volume means a volume that has been reserved by a ’CMS RESERVE fn ft fm’ command. 14 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Linux for S/390 implements a maximum of three partitions per volume. The available disk space for partitions is the whole volume, skipping the first blocks according to the scheme outlined in Figure 1 on page 13. DASD kernel parameter syntax The DASD driver is configured by a kernel parameter added to the parameter line: DASD kernel parameter syntax WW dasd = device-list autodetect probeonly WY device-list: , Z from devno to (ro) where: autodetect causes the driver to consider any device operational at the time of IPL as a potential DASD and allocate a device number for it. Nevertheless the devices which are not DASD, or do not respond to the access methods known to the kernel, will not be accessible as DASD. Any ’open’ request on such a device will return ENODEV. In /proc/dasd/devices these devices will be flagged ’unknown’. probeonly causes the DASD device driver to reject any ’open’ syscall with EPERM. autodetect,probeonly behaves in the same way as above, but additionally all devices which are accessible as DASD will refuse to be opened, returning EPERM. This setting is the default if no ’dasd=...’ parameter is given in the command line or in the module parameter. from-to defines the first and last DASD in a range. All DASD devices with addresses in the range are selected. It is not necessary for the from and to addresses to correspond to actual DASD. devno defines a single DASD address. (ro) specifies that the given device or range is to be accessed in read-only mode. The DASD addresses must be given in hexadecimal notation with or without a leading 0x, for example 0191 or 5a10. Chapter 3. Linux for S/390 DASD device driver 15 If you supply one or more kernel parameters dasd=device-list1 dasd=device-list2 ... the devices are processed in order of appearance in the parameter line. Devices are ignored if they are unknown to the machine, non-operational, or set off-line.5 If autodetection is turned on a DASD device is allocated in Linux for every device operational at the time of initialization of the driver, in order of ascending subchannel numbers. Note that the autodetection option may cause confusing results if you change your I/O configuration between two IPLs, or if you are running as a guest operating system in VM/ESA, because the devices might appear with different major/minor combinations in the new IPL . DASD kernel example (using devfs) dasd=192-194,5a10(ro) This reserves major/minor numbers and nodes as follows: 94 94 94 94 94 0 0 1 2 3 /dev/dasd/0192/device /dev/dasd/0192/disc /dev/dasd/0192/part1 /dev/dasd/0192/part2 /dev/dasd/0192/part3 - for the entire device for the entire device first partition on second partition on third partition on 192 192 (formatted) 192 192 (if used) 192 (if used) 94 94 94 94 94 4 4 5 6 7 /dev/dasd/0193/device /dev/dasd/0193/disc /dev/dasd/0193/part1 /dev/dasd/0193/part2 /dev/dasd/0193/part3 - for the entire device for the entire device first partition on second partition on third partition on 193 193 (formatted) 193 193 (if used) 193 (if used) 94 8 /dev/dasd/0194/device - for the entire device 194 94 8 /dev/dasd/0194/disc - for the entire device 194 (formatted) 94 9 /dev/dasd/0194/part1 - first partition on 194 94 10 /dev/dasd/0194/part2 - second partition on 194 (if used) 94 11 /dev/dasd/0194/part3 - third partition on 194 (if used) 94 94 94 94 94 12 12 13 14 15 /dev/dasd/5a10/device /dev/dasd/5a10/disc /dev/dasd/5a10/part1 /dev/dasd/5a10/part2 /dev/dasd/5a10/part3 - for the entire device for the entire device first partition on second partition on third partition on 5a10 5a10 5a10 5a10 5a10 (read only) (formatted,read only) (read only) (if used,read only) (if used,read only) The ’/device’ node is registered by the DASD device driver during initialization and is always available. All other nodes are generated by the device filesystem support and are only available after formatting (/disc) and partitioning (/part1 to /part3). 5. Currently there is no check for duplicate occurrences of the same device number. 16 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) DASD module parameter syntax The following are the DASD driver module parameters: DASD module parameter syntax WW insmod dasd_mod dasd W = device-list probeonly W WY autodetect device-list: , Z from devno to (ro) where: dasd_mod is the name of the device driver module dasd is the start of the parameters and all other parameters are the same as the DASD kernel parameters described in “DASD kernel parameter syntax” on page 15. DASD module example insmod dasd_mod dasd=192-194,5a10(ro) The details are the same as “DASD kernel example (using devfs)” on page 16. DASD dynamic attach/detach Dynamic device attach/detach enables Linux for S/390 to deal with DASD devices which are dynamically attached to or detached from a running system. In addition it allows the operator to dynamically enable or disable devices. The system will take appropriate action automatically when a dynamic attach or detach occurs. When a device is attached the system will try to initialize it according to the configuration of the DASD device driver. When a device is detached the system will stop any activity on this device. The device will stay in a ’fenced’ state until it is re-attached or disabled manually. Chapter 3. Linux for S/390 DASD device driver 17 Note Detachment of a device still open or mounted may trigger a restriction in the Linux kernel 2.4 common code which causes the system to hang or crash. The /proc filesystem node /proc/dasd/devices provides an interface which can be used to dynamically configure the DASD device driver’s settings. This interface provides some elementary support and does not provide a base for full DASD management. For example, there is the capability to add a device range by using the add directive, but there is no corresponding remove directive. Therefore, the following commands should be used with care, as some configuration errors can not be corrected without a reboot of the system. v To add a range to the list of known devices: echo "add device range=devno-range" >> /proc/dasd/devices This updates the currently running system. It does not update any persistent information on the volumes. v To disable devices manually: echo "set device range=devno-range off" >> /proc/dasd/devices This resets the state of the devices as if they had never been defined as DASD. All buffers referring to the devices are flushed unconditionally or terminated with an error. v To enable devices manually. : echo "set device range=devno-range on" >> /proc/dasd/devices This tries to initialize devices as if they had just been added to the system. DASD – Preparing for use 1) Low level format Before using an ECKD type DASD as a Linux for S/390 disk the device must be formatted. This should be done from Linux for S/390 by issuing an ioctl called BIODASDFMT on the file descriptor of the opened volume /dev/dasd/<devno>/<device>. The utility dasdfmt is provided as an interface to this ioctl with additional checking. Caution: Using dasdfmt or the raw ioctl can potentially destroy your running Linux for S/390 system, forcing you to reinstall from scratch. See the help given by dasdfmt -help and “dasdfmt - Format a DASD” on page 110 for further information. The dasdfmt utility calls several processes sequentially. Take care to allow sufficient time for each process to end before attempting to enter an additional command. 18 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) We recommend you set blksize to 1024 or higher (ideally 4096) because the ext2fs file system uses 1KB blocks and 50% of capacity will be unusable if the DASD blocksize is 512 bytes. The formatting process can take a long time (hours) for large DASD. 2) Create partitions After formatting the device with the common disk layout (CDL), (this is the default option for dasdfmt), the partitions have to be created. This is done by the fdasd tool which writes some labels to the device (see “Partitioned DASD” on page 13) and calls the device driver to re-read the partition table. fdasd is a user-space program with a command-line interface. See “fdasd – DASD partitioning tool” on page 123 for more information. The restriction of four minor numbers per DASD in the current implementation means that no more than three partitions can be created on a single DASD. Note: If you do not use the common disk layout you are not able to partition the device. In this case only one partition per DASD is supported. 3) Make a file system Before using a DASD as a Linux for S/390 data disk, you must create a file system on it. (A DASD for use as a swap device or paging space only needs to be defined as such.) Using mkxxfs (replacing xx with the appropriate identifier for the file system – for example use mke2fs for an ext2 file system) you can create the file system of your choice on that volume or partition . It is recommended that you build your file system on the partitions of the DASD (/dev/dasd/<devno>/<part>, and so on), rather than the whole volume. Note that the blocksize of the file system must be larger than or equal to the blocksize given to the dasdfmt command. It is recommended that the two blocksize values are equal. You must enable CONFIG_DASD, CONFIG_DASD_ECKD and CONFIG_DASD_FBA in the configuration of your current kernel to access IBM DASD. DASD API (ioctl interface) The ioctl interface of the DASD device driver follows the common format: int ioctl (int fd, int command, xxx) The argument ’fd’ is a descriptor of an open file. ’command’ is the action requested and the third argument ’xxx’ is a pointer to a data structure specific to the request. The ioctl commands specific to the DASD device driver are: DASDAPIVER returns the version of the DASD device driver API. BIODASDDISABLE disables the device. BIODASDENABLE enables the device BIODASDFMT formats the device with a specified blocksize. Chapter 3. Linux for S/390 DASD device driver 19 BIODASDPRRST resets profiling information. BIODASDPRRD reads profiling information. BIODASDRSRV requests reserve of a device. BIODASDRLSE requests release of a reserved device. BIODASDINFO returns status information for the device. In addition the DASD device driver shares a number of common ioctl commands with most other block device drivers: HDIO_GETGEO get the device geometry. BLKGETSIZE get the device size in blocks. BLKRRPART re-read the partition table. BLKSSZGET get the sector size of the device. BLKROSET set or change the read-only flag of the device. BLKROGET get the current setting of the read-only flag of the device. BLKRASET set or change the number of read-ahead buffers of the device. BLKRAGET get the current number of read-ahead buffers of the device BLKFLSBUF flush the buffers. BLKPG handle the partition table and disk geometry. BLKELVGET get elevator. BLKELVSET set elevator. If you need more ioctl functionality for your applications you may register your own ioctl commands to the DASD device driver. This is done using the function: dasd_ioctl_no_register (struct module int dasd_ioctl_fn_t *owner, no, handler) A previously added ioctl command can be deleted using: dasd_ioctl_no_unregister (struct module int dasd_ioctl_fn_t 20 *owner, no, handler) Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) These dynamically added ioctls are scanned if none of the statically defined commands fulfils the requested command. If no related command is found in the static or in the dynamic list the driver returns ’ENOTTY’. For more information about ioctl see the ioctl man page or the public Linux documentation. Examples of the implementation of the DASD ioctl interface can be found in the sections about DASD tools, in particular dasdfmt (“dasdfmt - Format a DASD” on page 110) and fdasd (“fdasd – DASD partitioning tool” on page 123). DASD restrictions v Note that the dasdfmt utility can only format volumes containing a standard record zero on all tracks. If your disk does not fulfill this requirement (for example if you re-use an old volume, or access a brand new disk or one having an unknown history), you should additionally use a device support facility such as ICKDSF (in OS/390, VM/ESA, VSE/ESA or stand-alone) before doing the dasdfmt for the low-level format. v The size of any swap device or file may not exceed 2 GB. Similarly, the limit for the main memory that can be defined is slightly less than 2 GB. Chapter 3. Linux for S/390 DASD device driver 21 22 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 4. Linux for S/390 XPRAM device driver The S/390 architecture and the zSeries architecture in 31 bit mode supports the access of only 2 GB (gigabytes) of main memory. To overcome this limitation additional memory can be declared and accessed as expanded memory. The S/390 architecture allows applications to access up to 16 TB (terabytes) of expanded storage (although the current hardware can be equipped with at most 64 GB of real memory). The memory in the expanded storage range can be swapped in or out of the main memory in 4 KB blocks. An IPL (boot) of Linux for S/390 does not reset expanded storage, so it is persistent through IPLs and could be used, for example, to store diagnostic information. The expanded storage is reset by an IML (power off/on). The XPRAM device driver is a block device driver that enables Linux for S/390 to access the expanded storage. Thus XPRAM can be used as a basis for fast swap devices and/or fast file systems. XPRAM features v Automatic detection of expanded storage. (If expanded storage is not available, XPRAM fails with a log message reporting the lack of expanded storage.) v Storage can be subdivided into up to 32 partitions. v Device driver major number: 35. v Partition minor numbers: 0 through 31. v Hard sector size: 4096 bytes. v The device file system (devfs) is supported. If devfs is switched on during kernel build XPRAM automatically generates the device nodes /dev/slram/0 through /dev/slram/31. Note on reusing XPRAM partitions It is possible to reuse the filesystem or swap device on an XPRAM device or partition if the XPRAM kernel or module parameters for the new device or partition match the parameters of the previous use of XPRAM. If you change the XPRAM parameters for a new use of XPRAM you must make a new filesystem (for example with mke2fs) or a new swap device for all partitions that have changed. A device or partition has changed if its size has changed. All partitions following one which has changed are treated as changed as well (even if their sizes have not been changed). © Copyright IBM Corp. 2000, 2002 23 XPRAM kernel parameter syntax The kernel parameter is optional. If omitted the default is to define the whole expanded storage as one partition. The syntax is: XPRAM kernel parameter , WW xpram_parts = number_of_partitions Z partition_size WY where number_of_partitions defines how many partitions the expanded storage is split into. The i-th partition_size defines the size of the i-th partition. Blank entries are inserted if necessary to fill number_of_partitions values. Each size may be blank, specified as a decimal value, or a hexadecimal value preceded by 0x, and may be qualified by a magnitude: v k or K for kilo (1024) is the default v m or M for Mega (1024*1024) v g or G for Giga (1024*1024*1024) The size value multiplied by the magnitude defines the partition size in bytes. The default size is 0. Any partition defined with a non-zero size is allocated the amount of memory specified by its size parameter. Any remaining memory is divided as equally as possible among any partitions with a zero or blank size parameter, subject to the two constraints that blocks must be allocated in multiples of 4K and addressing constraints may leave un-allocated areas of memory between partitions. XPRAM kernel example xpram_parts=4,0x800M,0,0,0x1000M This allocates the extended storage into four partitions. Partition 1 has 2 GB (hex 800M), partition 4 has 4 GB, and partitions 2 and 3 use equal parts of the remaining storage. If the total amount of extended storage was 16 GB, then partitions 3 and 4 would each have approximately 5 GB. 24 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) XPRAM module parameter syntax If it is not included in the kernel XPRAM may be loaded as a module. The syntax of the module parameters passed to insmod or modprobe differs from the kernel parameter syntax: XPRAM module call WW insmod xpram devs W = number_of_partitions , sizes = partition_size Z W WY partition_size where: v partition_size is a non-negative integer that defines the size of the partition in KB. Only decimal values are allowed and no magnitudes are accepted. XPRAM module example insmod xpram devs=4 sizes=2097152,8388608,4194304,2097152 This allocates a total of 16 GB of extended storage into four partitions, of (respectively) size 2 GB, 8 GB, 4 GB, and 2 GB. | Support for loading XPRAM dynamically | | | In order to load the xpram module dynamically either using the modprobe command or by mounting an xpram partition for the first time, an entry in /etc/modules.conf (formerly also /etc/conf.modules) is required. | | | The following is an example of an xpram entry in /etc/modules.conf: | | | | With the above entry, four xpram partitions will be created. The first partition (minor 0) will have a size of 4096 KB, the third partition (minor 2) will have a size of 2048 KB, and partitions 2 and 4 (minors 1 and 3) will each use half the size of the remaining expanded storage. alias block-major-35 xpram options xpram devs=4 sizes=4096,0,2048 Chapter 4. Linux for S/390 XPRAM device driver 25 26 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 5. Linux for S/390 Console device drivers The S/390 hardware requires a line-mode terminal (the hardware console) for overall system control. The Linux for S/390 console device drivers enable Linux to use this console for basic Linux control as well. You can use a 3215 or a 3270 console instead of the hardware console if Linux is running under VM/ESA. You can use a 3215 console if Linux is running on a P/390. The S/390 system console is the device which gives the S/390 operator access to the SE (Service Element) which is in overall control of the S/390 system. This can be a real device physically attached to the S/390, or it can be emulated in software, for example by running an HMC (Hardware Management Console) in a Web browser window. A S/390 terminal is any device which gives a S/390 user access to applications running on the S/390 system. This could be a real device such as a 3270 linked to the S/390 through a controller, or again it can be a terminal emulator on a networked device. Note that both ’terminal’ and ’console’ have special meanings in Linux which should not be confused with the S/390 usage. The Linux console and the Linux terminals are different applications which both run on S/390 terminals. The drivers for the 3215, 3270 and hardware consoles can be compiled into the Linux kernel. If more than one console is present the default console driver will be chosen at run time according to the environment: v In an LPAR or native environment, the hardware console will be made the default. v In VM/ESA either the 3215 or the 3270 console driver will be made the default, depending on the guest’s console settings (the ″CONMODE″ field in the output of ″#CP QUERY TERMINAL″). v On a P/390 the 3215 console will be made the default. The default driver can be overridden with the ″conmode=″ kernel parameter (see “Console kernel parameter syntax” on page 28). | | The intended use of the console device drivers is solely to launch Linux . When Linux is running, the user should access Linux for S/390 via a terminal emulation such as Telnet or ssh, because the console is a line-mode terminal and is unable to support applications such as vi. Therefore it is strongly recommended that you assign dumb to the TERM environment variable so that at least applications like less give appropriate output. Note that there are different options that must be selected during kernel configuration to enable the Linux terminal on the hardware console or to enable the Linux console on the 3215 or 3270 console. © Copyright IBM Corp. 2000, 2002 27 Console features v Provides a line mode typewriter terminal. v Console output on the first terminal. Console kernel parameter syntax The hardware console device driver does not require any parameters. The 3215 console device driver does not require any parameters if it is used under VM/ESA. If it is used with a P/390 system, you have to specify the condev kernel parameter. This supplies the device driver with the subchannel number of the 3215 device. The reason that this parameter is needed is that there is no guaranteed method of recognizing a 3215 device attached to a P/390. The kernel parameter syntax is: 3125 device driver syntax WW condev = cuu WY where cuu is the device ’Control Unit and Unit’ address, and may be expressed in hexadecimal form (preceded by 0x) or in decimal form. Note: Early releases of the driver will not accept this parameter in hexadecimal form. Console kernel examples condev=0x001f or condev=31 Both of these formats tell the device driver to use device number hex 1F for the 3215 terminal. Using the console The console is a line mode terminal. The user enters a complete line and presses enter to let the system know that a line has been completed. The device driver then issues a read to get the completed line, adds a new line and hands over the input to the generic TTY routines. Console special characters The console does not have a control key. That makes it impossible to enter control characters directly. To be able to enter at least some of the more important control characters, the character ’^’ has a special meaning in the following cases: v The two character input line ^c is interpreted as a Ctrl+C. This is used to cancel the process that is currently running in the foreground of the terminal. 28 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) v The two character input line ^d is interpreted as a Ctrl+D. This is used to generate an end of file (EOF) indication. v The two character input line ^z is interpreted as a Ctrl+Z. This is used to stop a process. v The two characters ^n at the end of an input line suppresses the automatic generation of a new line. This makes it possible to enter single characters, for example those characters that are needed for yes/no answers in the ext2 file system utilities. v The two characters ’^-’ followed by a third character invoke the so called ″magic sysrequest″ function. Various debugging and emergency functions are performed specified by the third character. This feature can be switched on or off during runtime by echoing ’1’ or ’0’ to /proc/sys/kernel/sysrq. The third character can be: – – – – – – ’b’ – re-IPL immediately, ’s’ – emergency sync all filesystems, ’u’ – emergency remount all mounted filesystems readonly, ’t’ – show task info, ’m’ – show memory, ’0’ to ’9’ – set console log level, – ’e’ – terminate all tasks, – ’i’ – kill all tasks except init, – ’l’ – kill all tasks including init. If you are running under VM without a 3215 console you will have to use the CP VINPUT command to simulate the ENTER and SPACE keys. The ENTER key is simulated by entering: #CP VInput VMSG \n The SPACE key is simulated by entering: #CP VInput VMSG \n (two blanks followed by \n). If the special characters do not appear to work, make sure you have the correct codepage in your terminal emulator. One known to work is codepage 037 (United States). VM console line edit characters When running under VM, the control program (CP) defines five characters as line editing symbols. Use the CP QUERY TERMINAL command to see the current settings. The defaults for these depend on the terminal emulator you are using, and can be reassigned by the CP system operator or by yourself using the CP TERMINAL command to change the setting of LINEND, TABCHAR, CHARDEL, LINEDEL or ESCAPE. The most common values are: LINEND # The end of line character (this allows you to enter several logical lines at once). TABCHAR | The logical tab character. CHARDEL @ The character delete symbol (this deletes the preceding character). Chapter 5. Linux for S/390 Console device drivers 29 LINEDEL [ (ASCII terminals) or ¢ (EBCDIC terminals) The line delete symbol (this deletes everything back to and including the previous LINEND symbol or the start of the input). ESCAPE ″ The escape character (this allows you to enter a line edit symbol as a normal character). To enter the line edit symbols # | @ [ " (or # | @ ¢ ") you need to type the character pairs "# "| "@ "[ "" (or "# "| "@ "¢ ""). Note in particular that to enter the quote character (″) you must type it twice (″″). Example: If you should type in the character string: #CP HALT#CP ZIPL 190[#CP IPL 1@290 PARM VMHALT=""MSG OP REBOOT"#IPL 290"" the actual commands received by CP will be: CP HALT CP IPL 290 PARM VMHALT="MSG OP REBOOT#IPL 290" Console 3270 emulation If you are accessing the VM console using the x3270 emulator, then you should add the following settings to the .XDefaults file in order to get the correct code translation: ! X3270 keymap and charset settings for Linux x3270.charset: us-intl x3270.keymap: circumfix x3270.keymap.circumfix: :<key>asciicircum: Key("^")\n Console – Use of VInput Note: ’VInput’ is a VM CP command. It may be abbreviated to ’VI’ but should not be confused with the Linux command ’vi’. If you use the hardware console driver running under VM it is important to consider how the input is handled. Instead of writing into the suitable field within the graphical user interface at the service element or HMC you have to use the VInput command provided by VM. The following examples are written at the input line of a 3270 terminal or terminal emulator (for example, x3270). Note that, in the examples, capitals within VInput and its parameters processed by VM/CP indicate the characters you have to type. The lower case letters are optional and are shown for readability. These examples assume that you enter the CP READ mode first. If you are not in this mode you must prefix all of the examples with the command #CP. VInput VMSG LS -L (the bash will call ls -l after this command was sent via VInput to the hardware console as a non-priority command - VMSG). VInput PVMSG ECHO * 30 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) (the bash will execute echo * after this command was sent via VInput to the hardware console as a priority command - PVMSG). The hardware console driver is capable to accept both if supported by the hardware console within the specific machine or virtual machine. Please inspect your boot messages to check the hardware console’s capability of coping with non-priority or priority commands respectively on your specific machine. Remember that the hardware console is unable to make its own messages available via dmesg. Features of VInput. 1. Use ’″″’ to output a single ’″’. VInput example: VInput PVMSG echo ""Hello world, here is ""$0 (on other systems: echo "Hello world, here is "$0) 2. Do not use # within VInput commands. This character is interpreted as an end of line character by VM CP, and terminates the VInput command. If you need the # character it must be preceded by the escape character (″#). 3. All characters in lower case are converted by VM to upper case. If you type VInput VMSG echo $PATH, the driver will get ECHO $PATH and will convert it into echo $path. Linux and the bash are case sensitive and cannot execute such a command. To resolve this problem, the hardware console uses an escape character (%) under VM to distinguish between upper and lower case characters. This behavior and the escape character (%) are adjustable at build-time by editing the driver sources, or at run time by use of the ioctl interface. Some examples: v input: VInput VMSG ECHO $PATH output: echo $path v input: VInput vmsg echo $%PATH% output: echo $PATH v input: VInput pvmsg echo ""1/11/02ello, here is ""$0 #name of this process output: VINPUT PVMSG ECHO "1/11/02ELLO, HERE IS "$0 NAME OF THIS PROCESS HCPCMD001E Unknown CP command: NAME echo "Hello, here is "$0 Hello, here is -bash Console limitations v The 3215 driver only works in combination with VM/ESA. In a single image or in LPAR mode the 3215 terminal device driver initialization function just exits without registering the driver. v Due to a problem with the translation of code pages (500, 037) on the host, the pipe command character ( | ) cannot be intercepted by the console. If you need to use this command execute it from a Telnet session. v Displaying large files might cause some missing sections within the output because of the latency of the hardware interface employed by the device. v In native or LPAR environments, you occasionally have to use the Delete button of the GUI on the Service Element or Hardware Management Console to enable further output. This is relevant to: Chapter 5. Linux for S/390 Console device drivers 31 – SE version 1.6.1 or older on G5, G6, and Multiprise 3000. – SE version 1.5.2 or older on G3, G4, and Multiprise 2000. v Messages concerning the hardware console operation generated by the hardware console driver cannot be provided to the syslog and are therefore unavailable with dmesg. v Output from the head/top is deleted if the amount exceeds approximately 30 kilobytes per LPAR (or image) on SE or HMC. v Applications such as vi are not supported because of the console’s line-mode nature. 32 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 6. Channel attached tape device driver The Linux for S/390 tape device driver manages channel attached tape drives which are compatible with IBM 3480 or 3490 magnetic tape subsystems. Various models of these devices are handled (for example the 3490E). Tape driver features The device driver supports a maximum of 128 tape devices. No official Linux device major number is assigned to the S/390 tape device. The driver allocates major numbers dynamically and lists them on initialization. Typically major number 254 will be allocated. (This will be used for both the character device front-end and the block device front-end.) Minor numbers will be allocated in pairs from zero. The driver may search for all tape devices attached to the Linux machine, or it may be given a list of device addresses to use. If it is not given a list the numbers allocated are volatile – the number allocated to any particular physical device may change if the system is rebooted or the device driver is reloaded. In particular a device brought online during a Linux session will be allocated the next available number at the time it comes online, but at the next reboot it will be given a number according to the sequence of device addresses. If a ″tape=″ parameter is present at system startup or module load, all tape devices in the ranges of the specified parameter list will be used. The devices are then numbered (sequentially from zero) according to the order in which their subchannel numbers appear in the list. In both cases the associations between subchannel numbers and device numbers are listed in the file /proc/tapedevices. If the Device File System (devfs) is used the user need not be concerned about the major and minor numbers used since each device will be assigned a node name based on the channel address of the device automatically. When the driver is initialized in autodetect mode without parameters (at system startup or module load) all supported tape devices attached will be detected. © Copyright IBM Corp. 2000, 2002 33 Tape character device front-end You will usually read or write to the tape device using the character device front-end of the driver. In fact two front-ends are provided for each physical device. One of these is used in multi-step procedures to leave the tape in position for the subsequent step at the close of each step. The other is used in single-step procedures, or in the last step of multi-step procedures, to automatically rewind the tape at the end of the step. If devfs is not used, the node names for these devices should be constructed from the standard label tibm, with a prefix indicating the close function r ( rewind) or n (non-rewind), and a suffix from the device number (starting at zero). Thus the names given to the first two devices are /dev/rtibm0, rtibm0 -> r rewind tibm label 0 device number /dev/ntibm0, /dev/rtibm1 and /dev/ntibm1. If devfs is used, the node names for these devices are constructed from the standard label tape, the device number, and rewinding or nonrewinding. Thus the names given to the first two devices are /dev/tape/0181/char/rewinding, /dev/tape/0181/char/nonrewinding, /dev/tape/0182/char/rewinding and /dev/tape/0182/char/nonrewinding You can use the character device front-end in the same way as any other Linux tape device. You can write to it and read from it using normal Linux facilities such as GNU tar. You can perform control operations (such as rewinding the tape or skipping a file) with the standard tool mt. Most Linux tape software should work with both the rewinding and non-rewinding devices. Tape block device front-end You can also use the tape driver as a block device, but this is restricted to read-only mode. This device could be used for the installation of software in the same way as tapes are used under other operation systems on the S/390 platform. (This is similar to the way most Linux software distributions are shipped on compact disk using the ISO9660 filesystem). One block device node is allocated to each physical device. They follow a similar naming convention to the character devices. Without devfs the prefix b is used – /dev/btibm0 for the first device, /dev/btibm1 for the second and so on. With devfs a device type of /block/disc is used – /dev/tape/0181/block/disc for the first device, /dev/tape/0182/block/disc for the second and so on. It is advisable to use only the ISO9660 filesystem on Linux for S/390 tapes, since this filesystem is optimized for CD-ROM devices, which – just like 3480, 3490, or 3590 tape devices – cannot perform fast seeks. 34 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Tape driver kernel parameter syntax You do not need to give the tape device driver any kernel parameters if you want to use tape auto-detection. You should not give it parameters if you are using devfs. If you want to specify the physical tape devices to be used you must configure the tape driver by adding a parameter to the kernel parameter line: Tape driver kernel parameter syntax , WW tape = Z from devno to WY where: from-to defines the first and last tape device in a range. All valid tape devices with addresses in this range are selected. It is not necessary for the from and to addresses to correspond to actual devices. devno defines a single tape device. The tape addresses must be given in hexadecimal notation (without a leading 0x), for example 0181 or 5a01. If you supply one or more kernel parameters, for example tape=fromto,tape=devno,..., the devices are processed in the order in which they appear in the parameter line. Devices are ignored if they are unknown to the device driver, non-operational, or set offline. You should specify no more than 128 devices in the parameter line as this is the maximum number of devices manageable by the driver.6 Note that the auto-detection option may cause confusing results if you change your I/O configuration between two IPLs, or if you are running as a guest operating system in VM/ESA, because the devices might appear with different names (major/minor combinations) in the new IPL if you are not using devfs. Tape driver kernel example If devfs is not used the kernel parameter could be: tape=181-184,19f This reserves devices as follows: 0181 0182 0183 0184 019f will will will will will be be be be be /dev/ntibm0 /dev/ntibm1 /dev/ntibm2 /dev/ntibm3 /dev/ntibm4 /dev/rtibm0 /dev/rtibm1 /dev/rtibm2 /dev/rtibm3 /dev/rtibm4 /dev/btibm0 /dev/btibm1 /dev/btibm2 /dev/btibm3 /dev/btibm4 If devfs is used the device names will be: 6. Currently there is no check for duplicate occurrences of the same device number. Chapter 6. Channel attached tape device driver 35 0181 will be 0182 0183 0184 019f will will will will be be be be /dev/tape/0181/char/rewinding /dev/tape/0181/char/nonrewinding /dev/tape/0181/block/disc .../0182/... .../0183/... .../0184/... .../019f/... Tape driver module parameter syntax The syntax of the module call to load the tape device driver is: Tape module parameter syntax WW modprobe insmod tape390 WY , tape = Z from devno to where: tape390 is the name of the device driver module and the rest of the parameters are the same as those of the tape driver kernel syntax. Tape driver module example modprobe tape390 tape=181-184,19f The details are the same as “Tape driver kernel example” on page 35. 36 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Tape device driver API The tape device driver uses the POSIX-compliant tape interface similar to the Linux SCSI tape device driver. | | Some differences in the MTIO interface do exist due to the different hardware: v MTSETDENSITY has no effect as the recording density is automatically detected. v MTSETDRVBUFFER has no effect as the drive automatically switches to unbuffered mode if buffering is unavailable. v MTLOCK and MTUNLOCK have no effect as the tape device hardware does not support media locking. v MTLOAD waits until a tape is inserted rather than loading a tape automatically. v MTUNLOAD. The drives do not support an unload command, but if MTUNLOAD is used the next tape in the stacker will be inserted automatically. v MTCOMPRESSION controls the IDRC (Improved Data Recording Capability). This is activated if the COUNT argument is non-zero or deactivated if it is zero. On system startup the IDRC is activated by default. v MTSETPART and MTMKPART have no effect as the devices do not support partitioning. v The contents of the structure returned by MTIOCGET are incomplete as some SCSI specific data is not applicable. Tape driver examples | | The following examples illustrate the operation of the tape driver on the basis of the mt utility. Example 1 – Creating a single-volume tape (without devfs) In this example a tape with an ISO9660 filesystem is created using the first tape device. For this the ISO9660 filesystem support must be built into your system kernel. Use the mt command to issue tape commands, and the mkisofs command to create an ISO9660 filesystem: v Create a Linux directory (somedir) and fill it with the contents of the filesystem mkdir somedir cp contents somedir v Insert a tape v Ensure the tape is positioned at the beginning mt -f /dev/ntibm0 rewind v Set the blocksize of the character driver. (The blocksize 2048 bytes is commonly used on ISO9660 CD-roms.) mt -f /dev/ntibm0 setblk 2048 v Write the filesystem to the character device driver mkisofs -o /dev/ntibm0 somedir v Rewind the tape again mt -f /dev/ntibm0 rewind v Now you can mount your new filesystem as a block device: mount -t iso9660 -o ro,block=2048 /dev/btibm0 /mnt Chapter 6. Channel attached tape device driver 37 Example 2 – Creating a multivolume tape (with devfs) In this example files are backed up onto a multivolume tape using the Linux facility tar. v Insert a tape medium in the device (here: /dev/tape/019f/char/nonrewinding). v If necessary, rewind and erase the tape: mt -f /dev/tape/019f/char/nonrewinding rewind mt -f /dev/tape/019f/char/nonrewinding erase mt -f /dev/tape/019f/char/nonrewinding rewind v Open a new Telnet session to trace the content of /var/log/messages tail -f /var/log/messages & v In the first Telnet session backup the files to tape using the tar command with the option -M (multi-volume), for example: tar -cvMf /dev/tape/019f/char/nonrewinding /file_specs v If more tape volumes are required you will be prompted to prepare the next medium. Go to a third Telnet session and enter the command: mt -f /dev/tape/019f/char/nonrewinding offl v Insert a new tape manually (if not using a tape unit magazine with autoload). v Wait for a message of the form: Apr 30 16:27:53 boeaet22 kernel: T34xx:A medium was inserted into the tape drive. in /var/log/messages (see 38). When you see this message hit the return key in the tar session. v Repeat the last four steps with further tapes until the backup is complete. Tape driver restrictions The driver is unable to detect manual operations on the tape device, in particular manual tape unloads, and these operations will lead to errors in reading and writing. The driver provides ioctl functions to control the device and these must be used, either through the API or by using the Linux mt utility. Tape driver further information Basic Linux tape control is handled by the mt utility, which is described in the mt man page. Note that the sections on SCSI tape devices are inapplicable to S/390 devices. 38 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 7. Generic cryptographic device driver Note on license This driver is subject to license conditions as reflected in “International License Agreement for Non-Warranted Programs” on page 205. This Linux driver (z90crypt) is a generic character device driver for a cryptographic device. This virtual device will route work to any physical devices (for example, PCI Cryptographic Coprocessor, PCICC, or PCI Cryptographic Accelerator, PCICA) installed on the system. Overview This driver controls the PCICC or PCICA in a Linux environment. Its current function is RSA-PKCS 1.2 decryption using a private key. The owner of the key can decrypt messages that were encrypted using the corresponding public key. This function is however confined to ″insecure cryptography″ – the private key is not itself encrypted. For RSA–PKCS 1.2 see http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/. The context consists of four steps: v Encoding – also termed ″padding″ – which adds material to a plain-text message v Encryption, with a public or private key, by arithmetic operations involving very large numbers v Decryption, closely related to encryption, with the counterpart of the key used for encryption v Decoding, which for PKCS 1.2 means stripping the padding from the message. z90crypt performs the last two operations using the private member of a key-pair. When using a PCICC and invoking z90crypt directly (not via libica), the generation of public/private key pairs, encryption, signing and signature verification, and even decryption using a public key are not supported by Linux for S/390 at present. When using libica, this library supplies these functions via software, with a speed tradeoff. The PCICA, on the other hand, performs these functions in hardware. The following figure illustrates the software relationships: © Copyright IBM Corp. 2000, 2002 39 Figure 2. z90crypt device driver interfaces HMC settings On the HMC you can determine what your current settings for cryptographic cards are, and specify settings for a new card. Checking your current crypto hardware settings on the HMC To check that you have the correct settings: 1. Go into single object operation mode with your machine. 2. Right click on the LPAR icon. It must show three parts (chipids, cps and pci crypto). 3. Click on crypto. This shows the crypto processors. They must be ’online’. Alternatively: 1. Go into single object operation mode with your machine. 2. Select the LPAR icon. 3. Click customize/delete activation profiles icon on the right. 4. Double click on active profile. 5. Click on the crypto tab (at the bottom). If you do not see this use the small right arrow in the upper right corner. You can see the currently set ’control domain index’ and ’usage domain index’ (highlighted number). If the enable modify authority check box is marked then you have the rights to change settings. 6. Click the pci crypto tab. 40 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) You see the current coprocessor number in the ’pci cryptographic coprocessor candidate list’ and ’pci cryptographic coprocessor online list’. Defining a crypto device to an LPAR The cryptographic device must be defined to the LPAR. To define the device to the LPAR, on the HMC, do the following: 1. With the PCICC card installed, bring up the PR/SM™ Panel for your Linux LPAR. On this panel there is an initial Processor tab. This offers a choice of two built-in S/390 Cryptographic Co-processor Features (CCF’s). One or both must be chosen for the PCICC card to operate, but the built-in feature does not operate under Linux. You must click on one or both, but it makes no difference which you choose. 2. Select a unique ″cryptographic domain″: When the CCF(s) are selected, two further tabs appear to the right. They are: v A ″crypto″ tab. On this tab, select a ″cryptographic domain″ for the LPAR. This is a number between 0 and 15. The cyptographic domain must be unique to the LPAR — different from the cryptographic domain for any other LPAR. The choice, however, has no visible effect. v The PCI card tab. This offers a choice of PCICCs and/or PCICAs. Be aware, however, that z90crypt uses only PCICAs when both types of adapters are installed. 3. If you are using a zSeries z900 (Freeway) GA2 machine: On the PR/SM panel where you choose which architecture your LPAR will support, choose ESA390. Do not choose ’Linux only’. If you choose Linux only, no crypto devices will be available to your LPAR. Installing z90crypt Prerequisites To use the crypto device driver, you will need the driver module and the libica library. The library is the interface between the application and the z90crypt driver module. The module and the library can be obtained from the DeveloperWorks Web site: v The crypto module: http://www.ibm.com/developerworks/oss/linux390/download_obj.html v The libica library: http://www-124.ibm.com/developerworks/projects/libica The 390 (31-bit) binary is in ’libica-1.1-2.s390.rpm’. Source code is also available here in tar form. v pkcs#11: http://www-124.ibm.com/developerworks/projects/openCryptoki The 390 (31-bit) binary is in ’openCryptoki-1.3-2B.s390.rpm’. Source code is also available here in tar form. z90crypt is distributed as a package with a name of the form ″z90crypt ... .tar.gz″. Contents of the tar file The tar file contains: v The object module devica.o, which can be loaded into the Linux kernel. v The script z90crypt_install, which copies the object module into a suitable directory. Chapter 7. Generic cryptographic device driver 41 v The script z90crypt_load, which loads it. v The script z90crypt_unload, which unloads it. v A text README file (if there is any new information augmenting the description in this chapter). v The header file z90crypt.h. Structures in this header are essential to interface your program with z90crypt. Installing and loading To install and load the z90crypt driver, follow these steps. Note: For certain actions, you will need root authority, which is indicated by the shell prompt character ’#’. 1. You will need to gunzip the driver file (name in the format ″z90crypt ... .tar.gz″) and then perform: $ tar -xvf z90crypt ... .tar to obtain its constituents. 2. Make the shell scripts executable: $ chmod 744 z90crypt_install $ chmod 744 z90crypt_load $ chmod 744 z90crypt_unload 3. Run the install script for z90crypt: # ./z90crypt_install 4. Run the script to load z90crypt: # ./z90crypt_load 5. (Optional) Check whether z90crypt is in the kernel list of modules: $ /sbin/lsmod This should result in output like the following: Module z90crypt Size 34160 Used by 0 (unused) If the correct choices have not been made in the PR/SM panel, the module will not load. 6. Test the hardware response of the driver-module. $ cat /proc/driver/z90crypt You should have an output similar to the following: bash-2.04$ cat /proc/driver/z90crypt Cryptographic domain: 14 Total device count: 2 PCICA count: 0 PCICC count: 2 requestq count: 0 pendingq count: 0 total open handles: 0 Mask of online devices: 01 means PCICA, 02 means PCICC 0202000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 42 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Mask of waiting work element counts 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 7. Unload the driver. Note: Always load the driver before using it and always unload it after use. # ./z90crypt_unload 8. Unpack the libica library 9. Compile and install the libica library make -f Makefile.linux You may choose to program, as outlined below, between the 2nd and 3rd steps. VM Requirements APAR VM62905 for VM 4.2 is required in order to use the crypto function in Linux guests. The Linux guest must also have the following entry defined in the User Directory Table: CRYPTO APVIRT Decryption using z90crypt How to perform decryption using z90crypt: Outline of decryption program These steps are required: 1. Get a device handle, say ″dh″ for z90crypt: dh= open("/dev/z90crypt", 0_RDWR) 2. Create and load a structure of the type ica_rsa_modexpo_t or ica_rsa_modexpo_crt_t as described below. You will define the private key to be used and set the input buffer pointer to the message you want decrypted. 3. Invoke ioctl to activate z90crypt: rc= ioctl(dh, <function code>, <structure name>) where: v <function code> is ICARSAMODEXPO or ICARSACRT v <structure name> is the name of the structure you created, of the type ica_rsa_modexpo_t or ica_rsa_modexpo_crt_t v rc is your name for the return code For example: rc= ioctl(dh, ICARSAMODEXPO, mycryptmex) where: v rc is your name for the ioctl return code v dh is your name for the z90crypt device handle 4. Obtain the decrypted and decoded message from the output buffer in the structure. The original message must have been PKCS 1.2 encoded – that is, the decrypted message must have correct padding. If so, z90crypt strips the padding, but if not it gives an error message. . Chapter 7. Generic cryptographic device driver 43 The ica_rsa_modexpo_t structure The ica_rsa_modexpo_t structure is shown in “z90crypt header file” on page 45, along with the other structures for use with z90crypt. The (private) key consists of the exponent in *b_key and the modulus in *n_modulus. Both of these are hexadecimal representations of large numbers. The length L of *n_modulus must be in the range 64 – 256. The input data and the exponent b_key must both be of length L. The output data must be of length L or greater. In all these cases, padding on the left with zeroes is allowed. There are mathematical rules for the construction of public/private key-pairs, constraining the modulus and exponent in each member of a pair, but we omit these, as z90crypt will not generate key-pairs anyway. See http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/ for a summary of the mathematics. The ica_rsa_modexpo_crt_t structure The only formal difference between this structure and the previous one is in the definition of the key. This is defined so that the Chinese Remainder Theorem can be used in decryption/encryption. z90crypt decrypts about 4 times faster if the CRT definition is used. The key-definition fields are all in hexadecimal representation. They have these meanings and limitations: v *bp_key, *bq_key: Prime factors of the modulus. In z90crypt the modulus is (*bp_key) * (*bq_key). The resulting length L of the modulus, in hexadecimal representation, must be found before these fields are defined. v *np_prime, *nq_prime: Exponents used for *bp_key and *bq_key respectively. v *u_mult_inv: A coefficient used in the z90crypt implementation of decryption by CRT. v *bp_key, *np_prime, *u_mult_inv must all be of length 8 + L/2 v *bq_key, *nq_prime must both be of length L/2 The input data length must be L, and the output data length must be at least L, as in ica_rsa_modexpo_t. Other functions of z90crypt Checking hardware status There is an ioctl interface for checking on underlying hardware in z90crypt. The function code is ICAZ90STATUS, and you supply a struct ica_z90_status_t (see “z90crypt header file” on page 45 for the definition) as the argument. When control returns you will have the number of cards installed and a mask showing which cards are installed. Example: rc= ioctl(dh, ICAZ90STATUS, my_z90crypt_status); where: 44 rc is your name for the ioctl return code dh is your name for the z90crypt device handle Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) my_z90crypt_status is your name for your structure of type ica_z90_status, in which the status data is to be written. Quiescing You need root authority to do this. You can ’quiesce’ z90crypt by executing an ioctl with function code ICAZ90QUIESCE. This lets the driver finish any outstanding work, but prevents any new work from being submitted. After 30 seconds, either all outstanding requests will be completed or else the requesting process will be notified that its work will not be completed. The only way to ’un-quiesce’ z90crypt is to unload it and then re-load it. Example: rc = ioctl(dh, ICAZ90QUIESCE); Random number generation If you do a read from z90crypt, you will get back a string of more-or-less random bytes. For read, you cannot specify a buffer length of more than 256 bytes. Example: rc = read (dh, my_buffer, number_of_bytes); where: rc is your name for the ioctl return code dh is your name for the z90crypt device handle my_buffer is your name for the byte-array where the random bytes will be loaded in reponse to the read Returns from read and ioctl 0 means everything went well and the result is in your output buffer. Return codes greater than 0 have the following meanings: v v v v 8 -- invalid operand 16 -- device not available. 17 -- error in pkcs 1.2 padding (no room for required padding) 24 -- error copying to or from user space A return code of ’-1’ means that errno is one of the following: v v v v 13 -- permission denied (attempted quiesce but not root) 22 -- invalid operand 132 -- device is quiescing; no new work being accepted. 134 -- unknown error (this usually means a transient error in a crypto device; a retry may succeed). For any other error code, look in /usr/include/asm/errno.h z90crypt header file Refer to file ’z90crypt.h’ for other important information. Chapter 7. Generic cryptographic device driver 45 Example of use: Apache This section details the installation of the Apache Web server with SSL and crypto-card support. Prerequisites Table 3. Requirements Software Item Operating system: Linux for S/390, version: kernel 2.4.7 Patches: v Configure-390.patch v ibmca.patch Install the ibmca patch with patch -p5. Source The DeveloperWorks Web site: http://www.ibm.com/developerworks/oss/linux390/ alpha_src.html The OpenSSL Web site: http://www-124.ibm.com/developerworks/ projects/libica Select the Files tab. There is a link to download the OpenSSL patches. Download Patchset1. All files are source. Apache Web server version 1.3.20 Download the Apache Web server. The Web site is: http://www.apache.com/ Modssl version 2.8.4 Download from the ModSSL Web site: http://www.modssl.org/ OpenSSL (engine) version 0.9.6b Download from the OpenSSL Web site: http://www.openssl.org/ pkcs#11 Download from: http://www-124.ibm.com/developerworks/ projects/openCryptoki The 390 (31-bit) binary is in openCryptoki-1.32B.s390.rpm. Source code is also available here in tar form. Hardware Customized crypto card, for example, PCICC or PCICA Installing the Apache Web server 1. Create the directory my_web_server 2. Change into the directory my_web_server 3. Download the Apache Web server and copy it into the directory my_web_server: wget http://httpd.apache.org/dist/httpd/apache_1.3.20.tar.gz 4. Download the Openssl [engine] library and copy it into the directory my_web_server wget http://www.openssl.org/source/openssl-0.9.6b-engine.tar.gz 5. Download the Modssl module and copy it into the directory my_web_server wget http://www.modssl.org/source/mod_ssl-2.8.4-1.3.20.tar.gz 6. Unpack the Apache Web server. 7. Unpack the Openssl [engine] library. 8. Unpack the Modssl module. 46 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) 9. Now you should have the following directory tree: 10. Change to the Openssl [engine] directory 11. Configure, compile, test and install Openssl. Prerequisites: Two patches are needed: v Configure-390.patch v ibmca.patch Install the ibmca patch with patch -p5. Makefiles: You may need to edit some makefiles and include some extra libs with -ldl. $ $ $ # ./config make make test make install 12. Change to the Modssl module directory 13. Configure the Modssl module: $ ./configure --with-apache=../apache-<VERSION> \ --with-ssl=../openssl-engine-<VERSION> \ --enable-module=ssl \ --enable-rule=SSL_EXPERIMENTAL \ 14. Change to the Apache directory 15. Configure, compile, create self-sign certificate and install Apache: $ ./configure --prefix=/usr/local/apache \ --enable-module=ssl $ make $ make certificate TYPE=custom # Here you can type in # the self-sign certificate data $ make install 16. Define the crypto device in the httpd.conf file: <IfModule mod_ssl.c> SSLCryptoDevice ibmca ... something else ... </IfModule> This will activate the hardware. To check your set-up: 1. Start Apache 2. With your favorite Web browser, try to establish a secure connection (an https connection) If Apache comes up on your browser, the connection and encryption are OK. Chapter 7. Generic cryptographic device driver 47 48 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Part 3. Linux for S/390 Network device drivers These chapters describe the channel device layer and the device drivers available to connect S/390 systems to your network. The drivers described are: v Chapter 9, “Linux for S/390 CTC/ESCON device driver” on page 63 v Chapter 10, “Linux for S/390 IUCV device driver” on page 71 v Chapter 11, “Linux for S/390 LCS device driver” on page 93 v Chapter 12, “QETH device driver for OSA-Express (QDIO)” on page 97 License conditions Some of these drivers are subject to license conditions as reflected in: “International License Agreement for Non-Warranted Programs” on page 205. © Copyright IBM Corp. 2000, 2002 49 50 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 8. Linux for S/390 Channel device layer The channel device layer provides a common interface to Linux for S/390 channel devices. You can use this interface to configure the devices and to handle machine checks (devices appearing and disappearing). The drivers using the channel device layer at the time of writing are: 1. LCS – supports OSA-2 Ethernet Token Ring, and OSA-Express Fast Ethernet in non-QDIO mode. 2. CTC/ESCON – high speed serial link 3. QETH – supports OSA-Express feature in QDIO mode. The channel device layer draws together the configuration of the drivers and resolves conflicts. These could, for example, result in the LCS and CTC drivers in contention for 3088/08 and 3088/1F devices (which could be either 2216/3172 LCS compatible devices or ESCON/CTC). To resolve the clashing without the channel device layer, each of these device drivers had to be configured separately, with a check for conflicts performed visually. The channel device layer is used on a per-driver basis, not on a system basis. For example a CTC driver which is not configured to use the channel device layer can be used in conjunction with an LCS driver which is configured to use it. Description The current configuration of the channel device layer is held (in human readable form) in the file /proc/chandev. You can pass arguments to the channel device layer in three ways: 1. Piping them to /proc/chandev, for example: echo reprobe >/proc/chandev will cause un-initialized channel devices to be probed. | | 2. Editing them into /etc/chandev.conf – this will only take effect after a reboot of after executing the sequence of commands mentioned in “Read configuration” on page 60. You can also add comments to the configuration file. Comment lines must be prefixed with a ’#’ character. 3. Using the ’chandev=’ keyword on the Linux boot command line, for example: chandev=noauto,0x0,0x480d;noauto,0x4810,0xffff will exclude all devices from auto-detection except for subchannels 0x480e and 0x480f. Multiple options can be passed, separated by commas, but no spaces are allowed between parameters. To be consistent with other hot-pluggable architectures, the script pointed to by /proc/sys/kernel/hotplug (this will normally be /sbin/hotplug) will be called automatically on startup or on a device machine check as follows:. © Copyright IBM Corp. 2000, 2002 51 /sbin/hotplug chandev <start starting_devnames> <machine_check (devname last/pre_recovery_status) (current/post_recovery_status)>. The channel device layer does not open stdin, stdout, or stderr so it is advisable that you open them at the start of your script, as in this sample which starts devices as they become available: #!/bin/bash exec >/dev/console 2>&1 0>&1 # Remove the comment symbol from the line below for debugging purposes. # echo $* if [ "$1" = "chandev" ] && [ "$2" = "start" ] then shift 2 while [ "$1" != "" ] && [ "$1" != "machine_check" ] do isup=’ifconfig $1 2>/dev/null | grep UP’ if [ "$isup" = "" ] then ifup $1 fi shift done fi For example if devices tr0 and ctc0 become active at a time when eth0 and eth1 are subject to a gone machine check and eth2 is subject to a revalidate machine check (which is normally fully recoverable), the parameters passed to hotplug would be: /sbin/hotplug chandev start tr0 ctc0 machine_check eth0 gone gone eth1 gone gone eth2 revalidate good This script can be used, for example, to call /etc/rc.d/init.d/network start when a device appears. (This makes the ipldelay kernel boot parameter obsolete when Linux is running native.) It may also be used to recover from bad machine checks if the default machine check handling is inadequate. The machine checks that can be presented as parameters to the channel device layer are good, not_operational, no_path, revalidate and device_gone. The channel device layer will wait a few seconds after machine checks before running /sbin/hotplug because a machine check on one device is often followed by checks on others. It is better to handle multiple devices with a single script, rather than with individual scripts for each device, which could compete for resources. Channel device layer options Terminology devno a 16 bit unsigned number (usually expressed as hexadecimal) which uniquely identifies a subchannel connected to a device. force list a term (specific to channel device layer) describing a range of devno which are to be configured specifically (as opposed to configuration by auto-detection). auto machine check recovery bitfield 52 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) The bits in this field signify: not_operational 0x1 no_path 0x2 revalidate 0x4 gone 0x8 chan_type bitfield The bits in this field signify: ctc 0x01 escon 0x02 lcs 0x04 osad 0x08 – reserved, not used in this release qeth 0x10 A single device driver may handle more than one type of device. In this case the values corresponding to each device handled are summed to create the parameter Device identification (CTC/ESCON and LCS) This section describes how to use the channel device layer to control CTC, ESCON and LCS devices. The CTC/ESCON and LCS drivers are configured (for a single device) with the command: CTC, ESCON, LCS device identification ctc escon lcs WW W , devif_num -1 (1) , read_devno , write_devno W WY 0 memory_usage_in_k , 0 port_no protocol_no , 0 checksum_received_ip_pkts , 0 use_hw_stats Notes: 1 devif_num is concatenated to the device type, for example ctc1, escon7 or lcs2. Where: ctc | escon | lcs specifies the channel device type Chapter 8. Linux for S/390 Channel device layer 53 devif_num is the device interface number. This can be 0 to 255 for a specific number, or ’-1’ to indicate you do not care which device interface number is chosen. read_devno is the read device address. write_devno is the write device address. memory_usage_in_k is the memory to be allocated for buffers. The default (zero) means ’let the driver decide’. port_no is the relative adapter number for LCS. protocol_no is the protocol number for CTC or ESCON. This can take the values: v 0 for compatibility mode (the default; used with non-Linux peers other than OS/390 and z/OS) v 1 for extended mode, v 2 meaning ″CTC-based tty″ (this is only supported on Linux -Linux connections), v 3 for compatibility mode with OS/390 and z/OS. checksum_received_ip_pkts is a flag: ’1’ = true; ’0’ (default) = false. use_hw_stats is a flag: ’1’ = true; ’0’ (default) = false. For examples of device identification see: v CTC, ESCON: “Configuration examples” on page 63 v LCS: “LCS channel device layer configuration example” on page 93 The CTC/ESCON and LCS drivers are configured for a range of devices with the command: CTC, ESCON, LCS device range WW ctc escon lcs W , , start_devno , end_devno W WY 0 memory_usage_in_k , 0 port_no protocol_no , 0 checksum_received_ip_pkts Where: start_devno is the start address of a range. 54 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) , 0 use_hw_stats end_devno is the end address of a range. The rest of the parameters are as above. All addresses within the specified range will be scanned and any devices found which match the device type specified will be assigned. For examples of device range identification see: v CTC, ESCON: “Configuration examples” on page 63 v LCS: “LCS channel device layer configuration example” on page 93 Device identification (QDIO) For the syntax of the QETH device driver for the OSA-Express feature with the channel device layer see “Configuring QETH for QDIO OSA-Express using the channel device layer” on page 99. Commonly used options These options are used to set up the system. add parameters WW add_parms , chan_type all devnos , lo_devno , high_devno , string WY chan_type is defined in chan_type bitfield in the terminology on page 53. This is for device driver specific options which are passed as a string to the driver and are not dealt with by the channel device layer. This string cannot contain spaces. lo_devno and high_devno are optional parameters to specify a range. The string is interpreted by the driver (see the particular driver chapter for details). delete parameters WW del_parms all , chan_type WY , exact_match , lo_devno chan_type is defined in the terminology on page 53. This deletes some or all device driver specific options. If chan_type is not specified all the strings will be deleted. If exact_match is set to ’1’ the driver parameters will only be removed where chan_type is exactly equal. If exact_match is set to ’0’ the Chapter 8. Linux for S/390 Channel device layer 55 parameters are to be removed where any bit matches chan_type. lo_devno is an optional parameter to specify that the delete is only to happen if this parameter matches a lo_devno in a defined range. no auto-detection WW noauto all , lo_devno , high_devno WY This stops auto-detection of channel devices in the given range of device numbers. noauto without a device range will stop auto-detection of all channel devices. use device names WW use_devno_names WY This instructs the channel device layer to assign device names based on the cuu number of the read channel. For example a Token Ring read channel with cuu number 0x7c00 would be assigned an interface name of tr0x7c00. This may be used to avoid device name conflicts. The default is to generate device names in sequence, so the default name for the channel above might be tr2. Power user options These options are used for maintenance or fine-tuning. delete no-auto ranges WW del_noauto all , devno WY Delete the range containing devno, or all noauto ranges if devno is not given. delete forced device WW del_force , read_devno Remove a forced channel device from the force list. 56 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY do not use device names WW dont_use_devno_names WY Cancel a use_devno_names command. add a device WW add_model , chan_type , cu_type , cu_model W max_port_no , automatic_machine_check_handling , dev_type , dev_model , W WY Probe for the device specified. ’-1’ may be used as a wildcard for any of the parameters except chan_type or automatic_machine_check_handling. Set max_port_no to zero (’0’) for non LCS devices. chan_type and automatic_machine_check_handling are defined in the terminology on page 52. delete a device WW del_model , cu_type , cu_model , dev_type , dev_model WY Remove the device specified. ’-1’ may be used as a wildcard for any of the parameters. delete all devices WW del_all_models WY Remove all devices. auto-detect any devices WW non_cautious_auto_detect WY Chapter 8. Linux for S/390 Channel device layer 57 Attempt to auto-detect devices even if their type/model pairs do not unambiguously identify the device. For example 3088/1F’s can either be CTC/ESCON or 3172 LCS compatible devices. If the wrong device driver attempts to probe these channels there may be long delays on startup or even a kernel lockup, so use this option with caution. auto-detect known devices WW cautious_auto_detect WY Do not attempt to auto-detect devices unless their type/model pairs unambiguously identify the device. (This is the default behavior.) machine check recovery WW auto_msck all devnos , lo_devno , high_devno , auto_msck_recovery WY Specify the kind of machine check recovery to be performed over a range of devices. auto_msck_recovery is defined in the terminology on page 52. delete machine check recovery WW del_auto_msck all , devno WY Delete machine check recovery for the range of devices including devno, or all machine check recovery if devno is not specified. null model information WW reset_clean Reset all model information, forced devices and noauto lists to null. 58 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY default model information WW reset_conf WY Reset all model information, forced devices and noauto lists to default settings. empty model information WW reset_conf_clean WY Reset all model information, forced devices and noauto lists to empty. shutdown device WW shutdown all WY device_name read_devno Shut down the particular device identified by device_name or read_devno, de-register it and release its interrupts. If no parameter is given all devices are shut down. reprobe WW reprobe WY Call probe method for channels whose interrupts are not owned. unregister general probe WW unregister_probe all probefunc_addr WY Unregister a probe function, or unregister all probe functions if no address given. Chapter 8. Linux for S/390 Channel device layer 59 unregister specific probe WW unregister_probe_by_chan_type chan_type WY Unregister all probe functions which match the chan_type bitfield exactly. This is useful if you want a configuration to survive a kernel upgrade. read configuration WW read_conf WY Read instructions from /etc/chandev.conf. This is used to make the channel device layer read from /etc/chandev.conf on boot, or to cause the channel device layer to re-read its configuration during operation. do not read configuration WW dont_read_conf WY Do not read instructions from /etc/chandev.conf on boot. For example the following sequence of commands piped to /proc/chandev should have the same effect as rebooting for channel devices: v shutdown v reset_conf v read_conf v reprobe See also If you wish to write a driver which is compatible with the channel device layer see: v /linux/include/asm-s390/chandev.h – for the API (which is commented), and v /linux/drivers/s390/misc/chandev.c – for the code. 60 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Files /proc/chandev This holds the current configuration. Use cat /proc/chandev to see the configuration, and echo command >/proc/chandev to enter a new command. /etc/chandev.conf This file can be used to configure the channel device layer kernel parameters. /sbin/hotplug This is a user script or executable which is run whenever devices come online or go offline (’appear’ or ’disappear’). Chapter 8. Linux for S/390 Channel device layer 61 62 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 9. Linux for S/390 CTC/ESCON device driver A CTC connection or an ESCON connection is the typical high speed connection between mainframes. The data packages and the protocol of both connections are the same. The difference between them is the physical channel used to transfer the data. Both types of connection may be used to connect a mainframe, an LPAR, or a VM guest to another mainframe, LPAR or VM guest, where the peer LPAR or VM guest may reside on the same or on a different system. A third type of connection is virtual CTC which is a software connection between two VM guests on the same VM system and which is faster then a physical connection. The Linux for S/390 CTC device driver supports all three types of connection and can be used to establish a point-to-point TCP/IP connection between two Linux for S/390 systems or between a Linux for S/390 system and another operating system such as VM/ESA, VSE/ESA or OS/390. CTC/ESCON features v Any number of CTC and/or ESCON connections available. v Autosense mode available (the driver will pick all available channels starting with the lowest device numbers). v If built monolithically (not as a module) the parameters can be used to describe a maximum of 16 devices. If more channels are available and ’noauto’ is not specified the additional channels are auto-sensed and used in ascending order. CTC/ESCON with the channel device layer Channel device layer configuration The default for this driver is to select channels in order (automatic channel selection). If you need to use the channels in a different order, or do not want to use automatic channel selection, you can specify alternatives using the ctc= kernel parameter. For the syntax of the CTC/ESCON channel device layer configuration see “Device identification (CTC/ESCON and LCS)” on page 53. Configuration examples For one network device (CTC): ctc0,0x7c00,0x7c01,200,0,0,0 This tells the channel device layer to force ctc0 (if detected) to use device addresses 7c00 and 7c01. 200 kilobytes are to be allocated for buffers. The usual protocol id (0) will be used, checksumming is not to be done on received ip packets and hardware statistics are not to be used. (For devices such as ctc which do not have hardware statistics this parameter is ignored.) Or for two network devices (CTC + ESCON): © Copyright IBM Corp. 2000, 2002 63 ctc0,0x601,0x600 escon3,0x605,0x608 This forces ctc0 to use device addresses 601 and 600 and escon3 to use 605 and 608. All other parameters are defaulted. To scan a range of devices: ctc,0x700,0x7ff,100 will scan the range 0x700 to 0x7ff for all CTC devices and allocate a buffer of 100 kilobytes for every device found. A device name will be generated for each device. CTC/ESCON without the channel device layer Kernel parameter syntax The default for this driver is to select channels in order (automatic channel selection). If you need to use the channels in a different order, or do not want to use automatic channel selection, you can specify alternatives using the ctc= kernel parameter. CTC kernel parameter : WW ctc = Z devicename : read_channel : noauto write_channel WY : protocol-id Note: The entire parameter is repeated (separated by spaces) for each CTC/ESCON device. Where: devicename is ctc or escon concatenated with the channel number, for example ctc1 or escon99. read_channel is the read channel address (in hexadecimal preceded by 0x). write_channel is the write channel address (in hexadecimal preceded by 0x). If omitted the default is the read channel address plus 1. protocol-id is the protocol number for CTC or ESCON. This can take the values: v 0 for compatibility mode (the default; used with non-Linux peers other than OS/390 and z/OS) v 1 for extended mode, v 2 meaning ″CTC-based tty″ (this is only supported on Linux -Linux connections), v 3 for compatibility mode with OS/390 and z/OS. 64 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Using noauto as the device name disables automatic channel selection. If the only parameter given is noauto the CTC driver is disabled. This might be necessary, for example, if your installation uses 3271 devices or other such devices that use the CTC device type and model, but operate with a different protocol. Kernel example For one network device (CTC): Figure 3. Connection of two systems via CTC ctc=ctc0:0x600 Or for two network devices (CTC + ESCON): ctc=ctc0:0x601:0x600:escon3:0x605:0x608, Module parameter syntax These parameters can be passed to the CTC/ESCON driver module by insmod, or can be specified in the parameter file "/etc/modules.conf" or "/etc/conf.modules" (the file name depends on the Linux distribution). CTC module options : | WW (1) insmod modprobe options modulename (2) ctc = Z kernel-parameter WY | | Notes: | | 1 insmod or modprobe on the command line or options in the parameter file. | | | 2 When using insmod, modulename includes the path to the module’s object file (for example /lib/modules/.../ctc.o). When using modprobe, modulename is the module name without the path (ctc). Where: kernel-parameter is as defined above in “Kernel parameter syntax” on page 64 Note: If the parameter line file is used, the CTC driver may be loaded by typing modprobe ctc on the command line. Chapter 9. Linux for S/390 CTC/ESCON device driver 65 Module example For one network device (CTC): Figure 4. Connection of two systems via CTC Command line example: insmod ctc ctc=ctc0:0x0600:0x0601 or insmod /lib/modules/ctc.o ctc=ctc0:0x0600 Parameter file example: options ctc ctc=ctc0:0x0600 Or for two network devices (CTC + ESCON): Command line example: insmod /lib/modules/ctc.o ctc=ctc0:0x0601:0x0600:escon3:0x0605:0x0608 or Parameter file example: options ctc ctc=ctc0:0x0601:0x0600:escon3:0x0605:0x0608 CTC/ESCON – Preparing the connection 1. Connection Prior to activation a channel connection is required. This can be a real or virtual connection : v Real Channels Connect the systems with a pair of channels to the remote system. Verify that the read channel of one is connected to the write channel of the other. v LPAR to LPAR Channels Select a pair of channels on each system. Verify that the read channel of one is connected to the write channel of the other and vice-versa. v VM Channels a. Obtain a subnet from your TCP/IP communications staff. It is important that the subnet used by your Linux guests is not the same as that used by VM/ESA on the LAN. The Linux system is a separate network and should be treated as such. b. Take one address from that subnet and assign it to VM. c. Define two virtual channels to your user ID. The channels may be defined in the VM User Directory using directory control SPECIAL statements, for example: 66 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) special 0c04 ctca special 0c05 ctca or by using the CP commands: define ctca as 0c04 define ctca as 0c05 from the console of the running CMS machine (preceded by #CP if necessary), or from an EXEC file (such as PROFILE EXEC A). d. Add the necessary VM TCP/IP routing statements (BsdRoutingParms or Gateway). Use an MTU size of 9216 and a point-to-point host route (subnet mask 255.255.255.255). If you use dynamic routing, but do not wish to run routed or gated on Linux , update the VM ETC GATEWAYS file to include ″permanent″ host entries for each Linux guest. e. Bring these updates online by using OBEYFILE or by recycling TCPIP and/or ROUTED as needed. Connect the virtual channels to the channels of the VM TCP/IP target user ID. You must couple the Linux read channel to the VM TCP/IP write channel and vice versa. The coupling can be done with the following CP commands (following the previous example) couple 0c04 to tcpip 0c05 couple 0c05 to tcpip 0c04 The VM TCP/IP channel numbers depend on the customisation on the remote side. In this example, the CTC read channel 0c04 is connected to the VM TCP/IP write channel 0c05. Similarly, CTC write (0c05) is connected to VM TCP/IP read (0c04). You can write the define and couple commands into the CMS PROFILE EXEC A script. The Linux for S/390 virtual machine must always be IPLed as CMS before IPLing as Linux in order for these commands to take effect. Instead of connecting to the VM TCP/IP user ID, you can connect to any other virtual machine in which a Linux for S/390, OS/390, or VSE system is running. 2. Definitions on the remote side Set up the TCP/IP on the remote side, as described in the reference manuals. This will vary depending on which operating system is used on the remote side. Note: It is important that you have IOBUFFERSIZE 32678 defined because the Linux for S/390 CTC driver works with 32k internally. This is configurable for each device by writing the value to the buffersize file for that device (/proc/net/ctc/<devicename>/buffersize), for example echo 32768 > /proc/net/ctc/ctc0/buffersize 3. Activation on the remote side Activate the channels on the remote side. This again will vary depending on the operating system used on the remote side. 4. Activation on the Linux for S/390 side The network devices are activated with the ifconfig command. It is necessary to define the right MTU size for the channel device, otherwise it will not work properly. Please use the same MTU size (default 1500) that is defined on the remote side: Chapter 9. Linux for S/390 CTC/ESCON device driver 67 The syntax of this command is: CTC ifconfig command WW ifconfig device_id ip_address pointopoint to_address W mtu 32760 mtu max_transfer_unit up down W WY Where: device_id identifies the device. (ctc0 to ctcn or escon0 to esconn)7 ip_address is the IP address of the local side. to_address is the IP address of the remote side. max_transfer_unit is the size of the largest IP packet which may be transmitted up activates the interface down deactivates the interface An example of the use of ifconfig is: ifconfig ctc0 10.0.51.3 pointopoint 10.0.50.1 mtu 32760 If you are using a CTC-based tty connection you must create a device node with major number 43 in the Linux /dev directory: mknod /dev/ttyZ0 c 43 0 mknod /dev/ttyZ1 c 43 1 and so on No network device setup is needed in this case. The CTC-based tty emulates a standard serial port including the usual handshake lines (RTS/CTS/DTR/DSR/CD). To establish a connection, simply open the previously created device (/dev/ttyZx) on both peers using a standard terminal emulator or activate a standard getty on it. Notes Device major number 43 is reserved on PC architecture for /dev/isdn. This number has been allocated to CTC/ESCON on Linux for S/390 because on S/390 there is no ISDN support. The connection is established when the tty device is opened. Following closure of the tty device, shutdown of the connection is delayed for about ten seconds. This delay has been implemented 7. When using the channel device layer only, all CTC network devices are named ctcn, regardless of whether they are virtually defined or a real ESCON. 68 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) to avoid unnecessary initialization sequences if programs quickly open and close the device . For this reason, if the driver is loaded as a module, it can only be unloaded after first closing all CTC-based ttys and then waiting for this delay to expire. CTC/ESCON – Recovery procedure after a crash In a native Linux for S/390 system if one side of a CTC connection crashes it is not possible to simply reconnect to the other side after a reboot. The correct procedure is: 1. Stop the CTC connection on the Linux for S/390 side using (for instance): ifconfig escon0 down 2. Activate the channels on the remote side. 3. Activate the channels on the Linux for S/390 side, for example: ifconfig escon0 10.0.0.1 pointopoint 10.0.50.1 mtu 32760 Chapter 9. Linux for S/390 CTC/ESCON device driver 69 70 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 10. Linux for S/390 IUCV device driver The Inter-User Communication Vehicle (IUCV) is a VM/ESA communication facility that enables a program running in one virtual machine to communicate with another virtual machine, or with a control program, or even with itself. The communication takes place over a predefined linkage called a path. The Linux for S/390 IUCV device driver is a network device, which uses IUCV to connect Linux kernels running on different VM user IDs, or to connect a Linux kernel to another VM guest such as a TCP/IP service machine. IUCV features The following features are supported: v Multiple output paths from a Linux guest v Multiple input paths to a Linux guest v Simultaneous transmission and reception of multiple messages on the same or different paths v Network connections via a TCP/IP service machine gateway IUCV kernel parameter syntax The driver must be loaded with the IDs of the guest machines you want to connect to: IUCV kernel parameter : | WW iucv = Z userid WY | Parameter: userid © Copyright IBM Corp. 2000, 2002 Name of the target VM guest machine (in capital letters) 71 IUCV kernel parameter example The following diagram shows the possible connection of two Linux for S/390 machines: Figure 5. Connection of two systems using IUCV The command iucv=VMTCPID:LINUX2 | connects the LINUX1 system to the TCP service machine and the other Linux system. IUCV module parameter syntax The driver must be loaded with the IDs of the guest machines you want to connect to: IUCV module parameter : | WW insmod netiucv iucv = Z userid WY | Parameter: userid Name of the target VM guest machine (in capital letters) IUCV module parameter example The example of “IUCV kernel parameter example” could be set up by starting the IUCV module with: insmod netiucv iucv=VMTCPID:LINUX2 | 72 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) IUCV – Preparing the connection This is an additional task that you must perform before you can use the IUCV network link. If Linux is being used as a network hub instead of VM TCP/IP, the concepts discussed remain the same, though the syntax will be different. The following steps must be undertaken in VM: 1. Obtain a subnet from your TCP/IP communications staff. It is important that the subnet used by your Linux guests not be the same as that used by VM on the LAN. It is a separate network and should be treated as such. 2. Take one address from that subnet and assign it to VM. Update your PROFILE TCPIP file with a home entry, device, link, and start statements for each guest, for example: Home vm_ip_address link_name1 vm_ip_address link_name2 Device device_name1 IUCV 0 0 linux_virtual_machine1 A Link link_name1 IUCV 0 device_name1 Device device_name2 IUCV 0 0 linux_virtual_machine2 A Link link_name2 IUCV 0 device_name2 Start device_name1 Start device_name2 3. Add the necessary VM TCP/IP routing statements (BsdRoutingParms or Gateway). Use an MTU size of 9216 and a point-to-point host route (subnet mask 255.255.255.255). If you use dynamic routing, but do not wish to run routed or gated on Linux , update the VM ETC GATEWAYS file to include ″permanent″ host entries for each Linux guest. 4. Bring these updates online by using OBEYFILE or by recycling TCPIP and/or ROUTED as needed. 5. Add the statement IUCV ALLOW IUCV ANY to your VM user directory entry. The Linux commands needed to start communications through a TCP/IP service machine are: Chapter 10. Linux for S/390 IUCV device driver 73 TCP/IP ifconfig command WW ifconfig iucv iucv_number W your_address pointopoint service_address W options WY options: mtu 9216 netmask mask_value mtu n Parameters: iucv_number Path number (for example 0) your_address TCP/IP address of your machine pointopoint required to establish a point-to-point connection to a service machine service_address Address of the TCP/IP service machine to connect to n maximum transfer unit size. The default is 9216, which is suitable for use with the S/390 Virtual Image Facility for Linux (VIF). The maximum value is 32764. mask_value Mask to identify addresses served by this connection route command WW route add -net default iucv iucv_number Parameters: iucv_number Path number defined above 74 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY inetd command WW inetd (1) WY Notes: 1 Not required if the IUCV driver is started during boot. The commands needed to start direct communications to another guest are: user-to-user ifconfig command WW ifconfig iucv iucv_number W W guest_0_address pointopoint guest_1_address WY Parameters: iucv_number Path number (for example 0) guest_0_address TCP/IP address of your machine guest_1_address TCP/IP address of target machine IUCV – Further information The standard definitions in the VM TCP/IP configuration files apply. For more information of the VM TCP/IP configuration see: VM/ESA TCP/IP Planning and Customization , SC24-5847-01. IUCV restrictions v This device driver is only available to Linux for S/390 systems running as guests under VM/ESA or z/VM. IUCV Application Programming Interface (API) Linux IUCV is a full duplex, event driven facility which transfers whole records at a time. To exploit any of the IUCV functions one must first register with IUCV using the function iucv_register_program(). For more information on all IUCV functionality refer to the CP Programming Services book, available on the Web as manual number SC24-5760 at http://www.ibm.com/s390/vm/pubs . Chapter 10. Linux for S/390 IUCV device driver 75 IUCV API In this description of the API parameters which are pointers do not necessarily require a value. A ’NULL’ pointer will be ignored by the functions. If a parameter is not a pointer a value must be provided. All addresses passed to IUCV must be real addresses in the VM guest machine. iucv_register_program Purpose: To register an application with IUCV. Note: pgmmask v When pgmname, userid and pgmmask are provided the mask is used as is. v When pgmname and userid are provided and pgmmask is not provided the default mask is all 0xff v When pgmname and pgmmask are provided and userid is not provided the first 8 bytes of the mask are 0x00 and the last 16 bytes are copied from the last 16 bytes of pgmmask. v When pgmname is provided and userid and pgmmask are not provided the first 8 bytes of the mask are 0x00 and the last 16 bytes are 0xff. API Descriptor: Name Type Input/Output Description pgmname uchar [16] input User identification userid uchar[8] input Machine Identification pgmmask uchar[24] input Indicates which bits in the userid and pgmname combined will be used to determine who is given control ops iucv_interrupt_ops_t input Address of vector of interrupt handlers pgm_data * void Application data passed to interrupt handlers. (token) input Return value: type iucv_handle_t This is a token used as input value for iucv_connect, iucv_accept and iucv_unregister A value of zero (0) indicates that an error occurred in registration. Check syslog for details. The reasons for the error could be: v Machine size is greater than 2 GB v new_handler kmalloc failed v pgmname was not provided v ops is not defined v pathid_table kmalloc failed v An application with this pgmname, userid and pgmmask is already registered v iucv_declare_buffer failed 76 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) iucv_unregister_program Purpose: Unregister application with IUCV API Descriptor: Name Type Input/Output Description handle iucv_handle_t input Token which was returned during registration to identify application to be unregistered Return value: type int This should be zero (0) to indicate a normal return. iucv_accept Purpose: After the user has received a Connection Pending external interrupt this function is issued to complete the IUCV communication path API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msglim_reqstd u16 input the number of outstanding messages requested user_data uchar[16] input 16-bytes of user data flags1 int input Contains options for the path: IPPRTY 0X20 input specifies that you want to send a priority message IPRMDATA 0X80 input specifies that your program can handle a message in the parameter list IPQUSCE 0X40 input specifies that you want to quiesce the path being established handle iucv_handle_t input address of token pgm_data * void input application data passed to interrupt handlers flags1_out * int output 0x20 byte ON, indicates you may send a priority message msglim * u16 outVput number of outstanding messages Chapter 10. Linux for S/390 IUCV device driver 77 Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the handle given was NULL. iucv_connect Purpose: This function establishes an IUCV path. Although the connect may have completed successfully you are not able to use the path until you receive an IUCV ″Connection Complete″ external interrupt. API Descriptor: 78 Name Type Input/Output Description pathid u16 output path identification number msglim_reqstd u16 input the number of outstanding messages requested user_data uchar[16] input 16-bytes of user data userid uchar[8] input User identification system_name uchar[8] input 8-bytes identifying the system flags1 int input Contains options for the path: IPPRTY 0X20 input specifies that you want to send a priority message IPRMDATA 0X80 input specifies that your program can handle a message in the parameter list IPQUSCE 0X40 input specifies that you want to quiesce the path being established IPLOCAL 0X01 input allows an application to force the partner to be on the local system. If IPLOCAL is specified then target class cannot be specified. flags1_out * int output 0x20 byte ON indicates you may send a priority message msglim * u16 outVput number of outstanding messages handle iucv_handle_t input address of handler Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) pgm_data void * input application data passed to interrupt handlers Return value: type int A zero (0) or positive value is the return code from CP IUCV or the internal function add_pathid. A return code of -EINVAL means an invalid handle passed by application or the pathid address is NULL. iucv_purge Purpose: This function cancels a message that you have sent API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid u32 input specifies the ID of the message to be purged. If msgid is specified then pathid and srccls must also be specified. srccls u32 input specifies the source message class audit uchar[3] output contains information about any asynchronous error that may have affected the normal completion of this message. Return value: type int This is the return code from CP IUCV. iucv_query_bufsize Purpose: This function determines how large an external interrupt buffer IUCV will require to store information. API Descriptor: Void Return value: type ulong This is the required size of the external interrupt buffer. Chapter 10. Linux for S/390 IUCV device driver 79 iucv_query_maxconn Purpose: This function determines the maximum number of connections that may be established by the virtual machine. API Descriptor: Void Return value: type ulong Maximum number of connections. iucv_quiesce Purpose: This function temporarily suspends incoming messages on an IUCV path. You can later reactivate the path by invoking the iucv_resume function. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number user_data uchar[16] input 16-bytes of user data Return value: type int This is the return code from CP IUCV. iucv_receive Purpose: This function receives messages that are being sent to you over established paths. To receive data buflen must be 8-bytes or greater. API Descriptor: 80 Name Type Input/Output Description pathid u16 input path identification number msgid u32 input specifies the message ID. If msgid is specified then pathid and srccls must also be specified trgcls u32 input specifies target class buffer * void input address of buffer to receive buflen ulong input length of buffer to receive flags1_out * int output Contains information about the path: IPNORPY 0x10 specifies that a reply is required IPPRTY 0x20 specifies that you want to send a priority message Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) IPRMDATA 0x80 specifies the data is contained in the parameter list residual_buffer * void output address of buffer updated by the number of bytes you have received residual_length * ulong *output Contains one of the following values depending on whether the receive buffer is: v The same length as the message – this field is zero. v Longer than the message – this field contains the number of bytes remaining in the buffer. v Shorter than the message, this field contains the residual count (that is, the number of bytes remaining in the message that does not fit into the buffer. In this case return code is 5. Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is pointing to NULL. iucv_receive_array Purpose: This function receives messages that are being sent to you over established paths. To receive data the first entry in the array must be 8-bytes or greater. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid u32 input specifies the message ID. If msgid is specified then pathid and srccls must also be specified trgcls u32 input specifies target class Chapter 10. Linux for S/390 IUCV device driver 81 buffer * iucv_array_t input address of array of buffers buflen ulong input total length of buffers flags1_out * int output Contains information about the path: IPNORPY 0x10 specifies that a reply is required IPPRTY 0x20 specifies that you want to send a priority message IPRMDATA 0x80 specifies the data is contained in the parameter list residual_buffer * void output address points to the current list entry IUCV is working on residual_length * ulong *output Contains one of the following values depending on whether the receive buffer is: v The same length as the message – this field is zero. v Longer than the message – this field contains the number of bytes remaining in the buffer. v Shorter than the message, this field contains the residual count (that is, the number of bytes remaining in the message that does not fit into the buffer. In this case return code is 5. Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is pointing to NULL. iucv_reply Purpose: This function is used to respond to a two-way message that you have received. You must specify completely the message to which you wish to reply (pathid, msgid and trgcls). The msgid and trgcls are the values returned by the previous IUCV receive. 82 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid u32 input specifies the message ID. trgcls u32 input specifies the target class flags1 int input Contains options for the path: IPPRTY 0x20 specifies that you want to send a priority message buffer * void input address of reply buffer buflen * ulong input length of reply buffer residual_buffer * ulong output Address of buffer updated by the number of bytes you have moved residual_length * ulong output Contains one of the following values depending on whether the receive buffer is: v The same length as the message – this field is zero. v Longer than the reply – this field contains the number of bytes remaining in the buffer. v Shorter than the message, this field contains the residual count (that is, the number of bytes remaining in the reply which do not fit into the buffer. In this case b2f0_result = 5. Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is pointing to NULL. Chapter 10. Linux for S/390 IUCV device driver 83 iucv_reply_array Purpose: This function is used to respond to a two-way message array that you have received. You must specify completely the array to which you wish to reply (pathid, msgid and trgcls). The msgid and trgcls are the values returned by the previous iucv_receive_array. The array contains a list of discontiguous buffer addresses and their lengths. These buffers contain the reply data. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid u32 input specifies the message ID. trgcls u32 input specifies the target class flags int input Contains options for the path: IPPRTY 84 0x20 specifies that you want to send a priority message buffer * iucv_array_t input address of array of reply buffers buflen ulong input total length of reply buffers residual_address * ulong output Address of buffer which IUCV is currently working on Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) residual_length * ulong output Contains one of the following values depending on whether the answer buffer is: v The same length as the reply – this field is zero. v Longer than the reply – this field contains the number of bytes remaining in the buffer. v Shorter than the message, this field contains the residual count (that is, the number of bytes remaining in the reply which do not fit into the buffer. In this case b2f0_result = 5. Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is pointing to NULL. iucv_reply_prmmsg Purpose: This function is used to respond to a two-way message that you have received. You must specify completely the message to which you wish to reply (pathid, msgid and trgcls).prmmsg signifies the data has been moved into the parameter list. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid u32 input specifies the message ID. trgcls u32 input specifies the target class flags1 int input Contains options for the path: IPPRTY 0x20 specifies that you want to send a priority message Chapter 10. Linux for S/390 IUCV device driver 85 prmmsg uchar[8] input 8-bytes of data to be placed into the parameter list. Return value: type int This is the return code from CP IUCV. iucv_resume Purpose: This function restores communications over a quiesced path. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number user_data uchar[16] input 16-bytes of user data Return value: type int This is the return code from CP IUCV. iucv_send Purpose: This function transmits data from a buffer to another application. This is a one-way process – the receiver will not reply to the message. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid * u32 output specifies the message ID. trgcls u32 input specifies the target class srccls u32 input specifies the source message class msgtag u32 input specifies a tag to be associated with the message flags1 int input Contains options for the path: IPPRTY 0x20 specifies that you want to send a priority message buffer * void input address of send buffer buflen ulong input length of send buffer Return value: type int 86 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is NULL. iucv_send_array Purpose: This function transmits data to another application. The array holds the addresses and lengths of discontiguous buffers which hold the message text. This is a one-way process – the receiver will not reply to the message. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid * u32 output specifies the message ID. trgcls u32 input specifies the target class srccls u32 input specifies the source message class msgtag u32 input specifies a tag to be associated with the message flags1 int input Contains options for the path: IPPRTY 0x20 specifies that you want to send a priority message buffer * iucv_array_t input address of array of send buffers buflen ulong input total length of send buffers Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is NULL. iucv_send_prmmsg Purpose: This function transmits data to another application. prmmsg signifies the 8 bytes of data are to be moved into the parameter list. This is a one-way message – the receiver will not reply to this message. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid * u32 output specifies the message ID. Chapter 10. Linux for S/390 IUCV device driver 87 trgcls u32 input specifies the target class srccls u32 input specifies the source message class msgtag u32 input specifies a tag to be associated with the message flags1 int input Contains options for the path: IPPRTY prmmsg 0x20 uchar[8] specifies that you want to send a priority message input 8-bytes of data to be placed into the parameter list. Return value: type int This is the return code from CP IUCV. iucv_send2way Purpose: This function transmits data to another application. The data to be transmitted is in a buffer. The receiver of the message is expected to reply, and a buffer is provided into which IUCV will move the reply. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid * u32 output specifies the message ID. trgcls u32 input specifies the target class srccls u32 input specifies the source message class msgtag u32 input specifies a tag to be associated with the message flags1 int input Contains options for the path: IPPRTY 88 0x20 specifies that you want to send a priority message buffer * void input address of send buffer buflen ulong input length of send buffer ansbuf * void input address of reply buffer anslen ulong input length of reply buffer Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is NULL. iucv_send2way_array Purpose: This function transmits data to another application. The array holds the addresses and lengths of discontiguous buffers which hold the message text. The receiver of the message is expected to reply, and a buffer is provided into which IUCV will move the reply. API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid * u32 output specifies the message ID. trgcls u32 input specifies the target class srccls u32 input specifies the source message class msgtag u32 input specifies a tag to be associated with the message flags1 int input Contains options for the path: IPPRTY 0x20 specifies that you want to send a priority message buffer * iucv_array_t input address of array of send buffers buflen ulong input total length of send buffer ansbuf * iucv_array_t input address of array of reply buffers anslen ulong input total length of reply buffers Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is NULL. iucv_send2way_prmmsg Purpose: This function transmits data to another application. prmmsg specifies that the 8-bytes of data are to be moved into the parameter list. The receiver of the message is expected to reply, and a buffer is provided into which IUCV will move the reply. Chapter 10. Linux for S/390 IUCV device driver 89 API Descriptor: Name Type Input/Output Description pathid u16 input path identification number msgid * u32 output specifies the message ID. trgcls u32 input specifies the target class srccls u32 input specifies the source message class msgtag u32 input specifies a tag to be associated with the message flags1 int input Contains options for the path: IPPRTY 0x20 specifies that you want to send a priority message prmmsg uchar[8] input 8-bytes of data to be placed into parameter list ansbuf * void input address of reply buffer anslen ulong input length of reply buffer Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is NULL. iucv_send2way_prmmsg_array Purpose: This function transmits data to another application. prmmsg specifies that the 8-bytes of data are to be moved into the parameter list. The receiver of the message is expected to reply, and an array of addresses and lengths of discontiguous buffers is provided into which IUCV will move the reply. API Descriptor: 90 Name Type Input/Output Description pathid u16 input path identification number msgid * u32 output specifies the message ID. trgcls u32 input specifies the target class srccls u32 input specifies the source message class Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) msgtag u32 input specifies a tag to be associated with the message flags1 int input Contains options for the path: IPPRTY 0x20 specifies that you want to send a priority message prmmsg uchar[8] input 8-bytes of data to be placed into parameter list ansbuf * iucv_array_t input address of array of reply buffers anslen ulong input total length of reply buffers Return value: type int A zero (0) or positive value is the return code from CP IUCV. A return code of -EINVAL means the buffer address is NULL. iucv_setmask Purpose: This function enables or disables message interrupts and reply interrupts (priority or non-priority). A zero value disables the interrupts; any non-zero value enables them. API Descriptor: Name Type Input/Output Description SetMaskFlag int input Flag for setting interrupt types. Nonpriority_ MessagePending InterruptsFlag 0x40 Priority_ MessagePending InterruptsFlag 0x80 Nonpriority_ MessageCompletion InterruptsFlag 0x20 Priority_ MessageCompletion InterruptsFlag 0x10 Return value: type int This is the return code from CP IUCV. iucv_sever Purpose: This function terminates an IUCV path. Chapter 10. Linux for S/390 IUCV device driver 91 API Descriptor: Name Type Input/Output Description pathid u16 input path identification number user_data uchar[16] input 16-bytes of user data Return value: type int This is the return code from CP IUCV. IUCV Interrupt Handler API The following are declarations of IUCV interrupts. To ignore an interrupt, declare it as NULL. Input parameters: eib pointer to an external interrupt buffer pgm_data pointer to token that was passed by the application. Output and Return: void typedef struct { void (*ConnectionPending) (iucv_ConnectionPending * eib, void* pgm_data); void (*ConnectionComplete) (iucv_ConnectionComplete * eib, void* pgm_data); void (*ConnectionSevered) (iucv_ConnectionSevered * eib, void* pgm_data); void (*ConnectionQuiesced) (iucv_ConnectionQuiesced * eib, void* pgm_data); void (*ConnectionResumed) (iucv_ConnectionResumed * eib, void* pgm_data); void (*MessagePending) (iucv_MessagePending * eib, void* pgm_data); void (*MessageComplete) (iucv_MessageComplete * eib, void* pgm_data); } iucv_interrupt_ops_t; 92 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 11. Linux for S/390 LCS device driver | Note The LCS driver is now provided in source-code form. This Linux network driver supports OSA–2 Ethernet Token Ring, and OSA-Express Fast Ethernet in non-QDIO mode. To configure this device driver, use the channel device layer. For details on how to use the channel device layer, see Chapter 8, “Linux for S/390 Channel device layer” on page 51. The LAN Channel Station (LCS) network interface has two channels, one read channel and one write channel. This is very similar to the S/390 CTC interface (see Chapter 9, “Linux for S/390 CTC/ESCON device driver” on page 63). The read channel must have model type 0x3088 and an even cua number. The write channel also has a model type of 0x3088 and has a cua number one greater than the read cua number. Only certain cua types are supported so as not to clash with a CTC control unit type. The driver always has a read outstanding on the read subchannel. This is used to receive command replies and network packets (these are differentiated by checking the type field in the LCS header structure). Any network packets that arrive during the startup and shutdown sequence have to be discarded. During normal network I/O, the driver will intermittently retry reads in order to permanently keep a read outstanding on the read channel. (This is in case an -EBUSY or the like occurs, in which case the driver would stop receiving network packets.) The default configuration is to use software statistics, with IP checksumming off (this improves performance) and to have network hardware checking using a CRC32 check which should guarantee integrity for normal use. However, financial institutions or the like might want the additional security of IP checksumming. Additional cua model types can be added later so that new LCS compatible cards will be supported even if not available when the driver was developed. LCS supported functions v Supports Ethernet and Token Ring v Auto detects whether card is connected to Token Ring or Ethernet LCS channel device layer configuration For the syntax of LCS configuration with the channel device layer see “Device identification (CTC/ESCON and LCS)” on page 53. LCS channel device layer configuration example chandev=noauto,lcs0,0x7c00,0x7c01,1,1,1 © Copyright IBM Corp. 2000, 2002 93 This will make LCS device 0 use addresses 7c00 and 7c01 for input and output, use relative adapter 1, set IP checksumming on and collect network statistics from the hardware. | LCS kernel parameter syntax If the channel device layer is not used and the LCS driver is compiled directly into the kernel the LCS boot parameters are as follows: | | | lcs kernel parameter | | | WW lcs | | W = hw_stats , ip_checksumming W WY , Z model_no,max_adapter_no || | | lcs devno kernel parameter | , | WW lcs_devno = Z model_no,rel_adapter_no WY || | | lcs noauto kernel parameter | WW lcs_noauto | WY || | | The meanings of these parameters are: | | | hw_stats If set to 1 it is equivalent to the use_hw_stats keyword for the module call. If set to 0 it is ignored. | | | ip_checksumming If set to 1 it is equivalent to the do_sw_ip_checksumming keyword for the module call. If set to 0 it is ignored. | | model_no,max_adapter_no is identical to the additional_model_info keyword described for modules. | | | | model_no,rel_adapter_no is identical to the devno_portno_pairs keyword described for modules. The keyword lcs_devno is short because of limitations in the allowable length of kernel parameter names. 94 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) | | | lcs_noauto Put this parameter in the kernel parameter line if you want to set auto-detection off. | | It is important that the parameters are entered in pairs (2, 4, 6 or 8 parameters) as the cu model and max rel adapter no must go together. LCS warning Under some circumstances, LCS initialization can generate a message such as: "failed to add multicast address" This message is for information purposes only and can be ignored. The driver and card continue to operate normally. LCS restrictions v To use OSA devices when running Linux for S/390 on a basic mode machine (no LPARs) you may need to specify an ipldelay=xyz boot parameter. We recommend a value between 2m and 5m for xyz for the OSA card to initialize fully after IPL. Chapter 11. Linux for S/390 LCS device driver 95 96 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 12. QETH device driver for OSA-Express (QDIO) This driver is subject to license conditions as reflected in: “International License Agreement for Non-Warranted Programs” on page 205. The QETH Linux network driver supports the OSA-Express Fast Ethernet, Gigabit Ethernet, zSeries 900 High Speed Token Ring, and ATM (running Ethernet LAN emulation) features in QDIO mode. The OSA-Express feature in QDIO mode is described in detail in OSA-Express Customer’s Guide and Reference, SA22-7403. Naming conventions Different cards used will generate different interface base names: v Ethernet cards will generate an interface name starting with ″eth″ v Token Ring cards will generate an interface name starting with ″tr″ The ’eth’ interface name is used for the OSA-Express ATM feature when emulating Ethernet in QDIO mode. ATM cards in Token Ring LAN emulation use ’tr’. Numbers will be appended to the base names according to the following rules: v If a device interface number, devif_num, is specified during device configuration, that number will be used. For example, a device configuration like: qeth7, <read_devno>, <write_devno>, <data_devno> will cause the interface name to be eth7 for an Ethernet card and tr7 for a Token Ring card. If the devif number is -1, the next available number will be used. See “Configuring QETH for QDIO OSA-Express using the channel device layer” on page 99 for the description of devif_num. v If chandev is instructed to use device number names (use_devno_names), the interface number will be the cuu number of the read channel. For example, if the read channel has the cuu 0xfd0c, the interface name would be eth0xfd0c for an Ethernet card and tr0xfd0c for a Token Ring card. See “Commonly used options” on page 55 for the description of use_devno_names. Introduction You need two modules to configure the OSA-Express feature in QDIO mode: v The QDIO protocol governs the interface between the S/390 and the OSA-Express card. You need only load the QDIO module; no configuration is necessary. v The QETH module controls the card itself. Configuring the QETH module is described in this chapter. For the OSA-Express feature in QDIO mode three I/O subchannels must be available to the driver. One subchannel is for control reads, one for control writes, and the third is for data. © Copyright IBM Corp. 2000, 2002 97 | | | Figure 6. I/O subchannel interface Installing the modules To install the qdio and qeth modules, follow these steps: 1. Check if the QDIO OSA or IQDIO devices are online in Linux (check if they appear in /proc/subchannels). If not, attach them to the Linux guest or bring them online to the Linux LPAR. 2. Make sure the devices are correctly defined in the chandev.conf file. If they are not, define them and then reset chandev by issuing: echo reset_conf;read_conf > /proc/chandev 3. Issue the insmod command for the qdio.o module: insmod qdio 4. Issue the insmod command for the qeth.o module: insmod qeth 5. Issue the ifup command or the ifconfig command with the desired parameters for any QDIO OSA or IQDIO interfaces. Now the interfaces to the devices are set up. QETH supported functions The following functions are supported: v Auto-detection of devices v Primary and secondary routers v Priority queueing v Individual device configuration. It is possible to configure different triples of channels on the same CHPID differently. For example, if you have CHPID fc, then you can configure 0xfc00,0xfc01,0xfc02 differently from 0xfc04,0xfc05,0xfc06, for example, with different mem_usage_in_k values. v IP address takeover v Virtual IP addresses (VIPA) 98 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Configuring QETH for QDIO OSA-Express using the channel device layer This section describes how to configure QETH for the OSA-Express feature in QDIO mode with the channel device layer. Only the most common options are given here to illustrate the syntax; see Chapter 8, “Linux for S/390 Channel device layer” on page 51 for full details of all channel device options. The driver will normally use auto-detection to find all QDIO OSA-Express features in the system. (The noauto option can be used to exclude address ranges from auto-detection.) In some circumstances it may be necessary to configure the driver explicitly for a device. This is done with the qeth command. OSA-Express device identification WW qeth W , devif_num -1 , read_devno , write_devno , data_devno W WY 0 memory_usage_in_k , 0 port_no , 0 checksum_received_ip_pkts Note: All characters must be entered in lower case as shown, except for hexadecimal numbers, where either case may be used. Chapter 12. QETH device driver for OSA-Express (QDIO) 99 Where: devif_num is the device interface number. This is concatenated with qeth, for example qeth1. A value of -1 indicates that the next available number is to be allocated automatically. read_devno is the read channel address (in hexadecimal preceded by 0x) This address must be an even number. write_devno is the write channel address (in hexadecimal preceded by 0x) This address must be one greater than the read channel address. data_devno is the data channel address (in hexadecimal preceded by 0x) memory_usage_in_k is the number of kilobytes to be allocated for read and write buffers. (The allocation between read and write is determined by the driver.) port_no is the relative port number of the device. The OSA-Express feature in QDIO mode use only port 0, the default port. (The OSA-Express ATM feature in QDIO mode set up for Ethernet LAN emulation allows configuration of two emulated ports.) checksum_received_ip_pkts is 1 to perform software checksumming or 0 to suppress it. Port identification Each OSA-Express feature in QDIO mode must be associated with a port name. To do this, use the channel device layer add_parms command as shown below. OSA-Express feature in QDIO mode port identification WW add_parms , 0x10 all , lo_devno , hi_devno , portname : PORT_NAME , qeth_parms WY Where: add_parms Used to pass additional parameters to the driver. 0x10 Identifies the device as an OSA-Express feature in QDIO mode. lo_devno,hi_devno Specifies the address range containing the device. port_name Required. Identifies the port for sharing by other OS images. port_name can be 1 to 8 characters long and must be uppercase. All operating systems sharing the port must use the same port_name. Example: NETWORK1. 100 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) qeth_parms are additional QETH parameters that can be added by using the chandev add_parms command as described in “OSA-Express feature in QDIO mode QETH parameter syntax”. OSA-Express feature in QDIO mode QETH parameter syntax QETH parameters WW W (1) no_router ,no_checksumming primary_router secondary_router , sw_checksumming ,no_prio_queueing , , , W prio_queueing_tos prio_queueing_prec no_prio_queueing : W , sparebufs : number W none spare_buffers ,dont_fake_broadcast W , polltime : W 500 , fake_broadcast WY poll_time Notes: 1 All options except the first used must be preceded by a comma. All characters must be entered in lower case as shown, except for hexadecimal numbers where either case may be used. The meanings of the parameters of this command are as follows: primary_router | secondary_router | no_router For OSA-Express feature in QDIO mode: Specifies whether the device is used to interconnect networks. A ″primary router″ is the principal connection between two networks; a ″secondary router″ is used as backup in case of problems with the primary. Both of these options require the Linux system to be configured as a router. The default for this parameter is ″No router″ – the will only be used to connect the Linux for S/390 system to a single network. It is possible to add routing status dynamically. This is done with the command: echo primary_router ifname > /proc/qeth Chapter 12. QETH device driver for OSA-Express (QDIO) 101 or echo secondary_router ifname > /proc/qeth ifname is the name of the interface in Linux , for example eth0. It is not possible to reset routing status with the current hardware. sw_checksumming | no_checksumming Specifies whether error detection is to be performed by the driver, or is not required. prio_queueing_tos | prio_queueing_prec | no_prio_queueing | no_prio_queueing: number Specifies the type of priority queuing to be used. See “Priority queuing” on page 105 for details. no_prio_queueing is equivalent to no_prio_queueing: 2 (the default queue). spare_buffers Specifies the number of spare buffers to reserve. The default is none. These buffers are pre-allocated and can be used as a safety valve if excessive load fills the normal buffer pool. poll_time Specifies the maximum duration of background polling (in microseconds) used by QDIO. The default is 500. dont_fake_broadcast | fake_broadcast fake_broadcast sets the ’broadcast capable’ device flag. This is necessary for the gated routing daemon. OSA-Express feature in QDIO mode channel device layer configuration example add_parms,0x10,0x7c00,0x7c02,portname:NETWORK1 qeth1,0x7c00,0x7c01,0x7c02,4096,-1 This tells the channel device layer to force qeth1 (if detected) to use device addresses 7c00, 7c01 and 7c02, allocate four megabytes of buffer space, name the connection ’NETWORK1’, and use the default port. Examples: OSA-Express feature in QDIO mode 1: Basic configuration In this example a single OSA-Express CHPID is being used to connect a Linux for S/390 system to a network. 102 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Hardware configuration – OSA-Express connecting Linux for S/390 to a network Software configuration – OSA-Express connecting Linux for S/390 to a network With the channel device layer the load commands for this configuration are: add_parms,0x10,0xAA00,0xAA02,portname:NETWORK qeth-1,0xAA00,0xAA01,0xAA02 2: Router configuration This example shows how Linux systems running on different LPARs in an S/390 may use OSA-Express to communicate with a network or to act as a router between networks. Hardware configuration – OSA-Express and Linux for S/390 as a router In this example it is assumed that Linux is configured as a router in both LPARs. Software configuration – OSA-Express and Linux for S/390 as a router LPAR 1 – This LPAR is configured to be the primary routing LPAR: add_parms,0x10,0x400,0x402,primary_router,portname:OSACARD1 qeth-1,0x400,0x401,0x402 add_parms,0x10,0x200,0x202,primary_router,portname:OSACARD2 qeth-1,0x200,0x201,0x202 LPAR 2 – This LPAR is configured to be the secondary routing LPAR: add_parms,0x10,0x404,0x406,secondary_router,portname:OSACARD1 qeth-1,0x404,0x405,0x406 add_parms,0x10,0x204,0x206,secondary_router,portname:OSACARD2 qeth-1,0x204,0x205,0x206 Chapter 12. QETH device driver for OSA-Express (QDIO) 103 OSA-Express feature in QDIO mode – Preparing the connection Activating the OSA-Express feature in QDIO mode connection: The network devices can be activated with the ifconfig command. It is necessary to define the right MTU size for the channel device, otherwise it will not work properly. You must use the same MTU size as that which is defined on the remote side. For details of the ifconfig command, see the ifconfig man page. An example of the use of ifconfig for an OSA-Express feature in QDIO mode is: ifconfig eth0 192.168.100.11 netmask 255.255.255.0 broadcast 192.168.100.255 mtu 1492 up or, more simply: ifconfig eth0 192.168.100.11 IP address takeover It is possible to add and remove ranges of IP addresses for the OSA-Express feature in QDIO mode by writing to the /proc/qeth_ipa_takeover file. When a command is written to this file the driver calls on the OSA ″Address Takeover″ mechanism. This overrides any previous allocation of the specified address to another LPAR or card. If another LPAR on the same card has already registered for that IP address this association will be removed. The registered addresses are held in this file in plain text and can be read to see the current associations. Only one command at a time can be written to the file. Subsequent commands in the same write action are ignored. The following commands are available: v add4 <addr>/<mask_bits>[:<interface>] v inv4 v del4 <addr>/<mask_bits>[:<interface>] add4 adds an address range. del4 deletes an address range. <addr> is an 8 character hexadecimal IP address. <mask_bits> specifies the number of bits which are set in the network mask. <interface> is optional and specifies the interface name to which the address range is bound. For example echo add4 c0a80a00/24 > /proc/qeth_ipa_takeover activates all addresses in the 192.168.10 subnet for address takeover. inv4 inverts the selection of address ranges done with add4. . Issue inv4 once to set all addresses which have been specified with add4 not to use the takeover mechanism; all other IPv4 addresses will be set to use it. 104 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Note: The address is not actually taken over until a corresponding ifconfig command is executed. OSA-Express feature in QDIO mode – Virtual IP address (VIPA) | | S/390 uses virtual IP addresses to protect against certain types of hardware connection failure. These virtual IP addresses (VIPAs) can be built under Linux using ″dummy″ devices (for example dummy0 or dummy1) or loopback aliases (lo:0 or lo:1). (To enable these virtual devices the kernel must be compiled with the special option CONFIG_DUMMY.) In order to make the OSA-Express card accept packets for the VIPAs on the system the qeth driver must be informed about the VIPAs using the /proc interface. The virtual devices are configured with the following commands: v add_vipa4 <addr>:<interface> v del_vipa4 <addr>:<interface> These commands must be piped to /proc/qeth_ipa_takeover, for example: echo add_vipa4 c0a80a00 > /proc/qeth_ipa_takeover add_vipa4 adds an address range. del_vipa4 deletes an address range. <addr> is an 8 character hexadecimal IP address. <interface> is optional and specifies the interface name to which the address range is bound. For an example of how to use VIPA, see Chapter 14, “VIPA – minimize outage due to adapter failure” on page 153. QETH restrictions v The MTU range is 576 – 18000. This may be restricted by the framesize announced by the microcode. v There is a restriction in Linux that the packet size of a multicast packet cannot be greater than the MTU size of the interface used. Priority queuing The OSA-Express feature in QDIO mode has four output queues (queues 0 to 3) in central storage. The feature gives these queues different priorities (queue 0 having the highest priority) which is relevant mainly to high traffic situations. When there is little traffic queuing has no impact on processing. The device driver can put data on one or more of the queues. By default it uses queue 2 for all data. However, the driver can look at outgoing IP packets and select a queue for the data according to the IP type of service (if prio_queueing_tos is specified in the options) or IP precedence (if prio_queueing_prec is specified in the options) fields. These fields are part of the IP datagram header and can be set with a setsockopt call. Some applications use these fields to tag data. The mapping the driver performs between IP type of service is as follows: Chapter 12. QETH device driver for OSA-Express (QDIO) 105 IP type of service queue used when IP TOS queueing is switched on not important 3 low latency 0 high throughput 1 high reliability 2 default 2 (The default queue may be changed by a kernel option.) When IP precedence is selected as the queueing type, the two most significant bits of each IP header precedence field are used to determine the queue for this packet. 106 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Part 4. Installation commands and parameters This section describes configuration parameters for Linux for S/390 and the tools available for configuration. These are described in the chapters: v Useful Linux commands: – dasdfmt - Format a DASD | – – – – – – dasdview - Display DASD characteristics fdasd - Partition a DASD snIPL - Remote control of Support Element (SE) functions zipl - Make DASD bootable ifconfig - Configure a network interface insmod - Load a module into the Linux kernel – modprobe - Load a module with dependencies into the Linux kernel – lsmod - List loaded modules – depmod - Create dependency descriptions for loadable kernel modules – mke2fs - Create a file system v VIPA (Virtual IP Address) implementation, to minimize outage due to adapter failure. v Kernel parameters: – ipldelay – maxcpus – mem – noinitrd – ramdisk_size – ro – root – vmhalt – cio_msg v Overview of the parameter line file. | | Note: For tools related to taking and analyzing system dumps, see the manual Linux for S/390 Using the Dump Tools, LNUX-1208. © Copyright IBM Corp. 2000, 2002 107 108 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 13. Useful Linux commands | This chapter describes commands which have been created to install and configure Linux for S/390: v dasdfmt v dasdview v fdasd v snIPL v zipl It also summarizes standard Linux commands used during the installation, configuration and initial startup of Linux for S/390. These are: v ifconfig v v v v v | | insmod modprobe lsmod depmod mke2fs Note: For tools related to taking and analyzing system dumps, see the manual Linux for S/390 Using the Dump Tools, LNUX-1208. © Copyright IBM Corp. 2000, 2002 109 dasdfmt - Format a DASD Purpose This tool is used to give a low-level format to direct access storage devices (DASD). Note that this is a software format. To give a hardware format to raw DASD you must use another S/390 device support facility such as ICKDSF, either in stand-alone mode or through another operating system. dasdfmt uses an ioctl call to the DASD driver to format tracks. A start and end track for formatting can be specified, as well as a blocksize (hard sector size). Remember that the formatting process can take quite a long time. See Chapter 2, “Partitioning DASD” on page 5 for further information about partitioning DASD. Usage Prerequisites: (see Chapter 2, “Partitioning DASD” on page 5 for terminology and further information) v You must have installed the library libvtoc.so in the Linux /lib directory, and v You must have root permissions. Format dasdfmt syntax WW dasdfmt W W -t -v -y -V -F -s 0 -s -p -m start_track -f -n diskspec devno -d cdl -d ldl -L -l -e -1 -b 4096 -e -b end_track blocksize W volid W WY hashstep or WW dasdfmt -h The parameters are: 110 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY -f diskspec or --device=diskspec Specifies the device to be formatted. diskspec takes the form: /dev/dasd/xxxx/device where xxxx is the four-character hexadecimal device address of the DASD. -n devno Specifies the four-character hexadecimal device address of the disk to format, for example -n 01a3. The following parameters are necessary, however if you do not specify their values you are prompted for them. You can use the default values by pressing the <enter> key: -b block_size or --blocksize=block_size Specifies the blocksize. The minimum blocksize is 512 bytes and increases in powers of 2 (512, 1024, 2048, 4096 and so on). The default blocksize is 4096. The following parameters are optional: -d disklayout or --disk_layout=disklayout Formats the device with compatible disk layout (cdl) or Linux disk layout (ldl). Prints out an overview of the syntax. Any other parameters will be ignored. -h -l volid or --label=volid Specifies the volume identifier (see 2 on page 6) to be written to the disk. -m hashstep or --hashmarks=hashstep prints a hash mark (#) after every hashstep cylinders are formatted. hashstep must be in the range 1 to 1000. The default is 10. This may be used if the progress bar cannot be displayed, for example on a 3270 console -p or --progressbar prints a progress bar. Do not use this option if you are using a 3270 console. -t or --test (test mode) Analyses parameters and prints out what would happen, but does not modify the disk. -v Prints out extra information messages. -y Starts formatting immediately without prompting for confirmation. -F Formats the device without checking if it is mounted or in use as swap space. -L or --no_label Valid for -d ldl only, where it suppresses the default LNX1 label. Prints the version number of dasdfmt and exits. -V Restrictions During the format process the DASD is placed in a temporary ’accepted’ state. If it is left in this state (for example if DASDFMT is interrupted) the DASD cannot be accessed. You can check the state of a DASD by entering: # cat /proc/dasd/devices Chapter 13. Useful Linux commands 111 If you see ″accepted″ in the output the corresponding DASD is disabled and not available for usage. You can re-enable the DASD with the command: # echo ’set <devno> on’ > /proc/dasd/devices where <devno> is the device number of the DASD you want to enable. Example: # cat /proc/dasd/devices 0700(ECKD) at ( 94: 0) is 0800(ECKD) at ( 94: 4) is 0900(ECKD) at ( 94: 8) is dasda:active at blocksize: 4096, 601020 blocks, 2347 MB dasdb:active at blocksize: 4096, 601020 blocks, 2347 MB dasdc:accepted Disk 900 is in accepted state and it is not possible to format it with the dasdfmt command. # echo ’set 900 on’ > /proc/dasd/devices enables the disk and changes its state to ″active, not formatted″. # cat /proc/dasd/devices 0700(ECKD) at ( 94: 0) is 0800(ECKD) at ( 94: 4) is 0900(ECKD) at ( 94: 8) is # dasda:active at blocksize: 4096, 601020 blocks, 2347 MB dasdb:active at blocksize: 4096, 601020 blocks, 2347 MB dasdc:active n/f Now you are able to format the DASD. Examples Example 1 To format a 100 cylinder VM minidisk with the standard linux disk layout and a 4kB blocksize at address 0193: [root@host /root]# dasdfmt -b 4096 -d ldl -n 193 Drive Geometry: 100 Cylinders * 15 Heads = 1500 Tracks I am going to format the device 193 in the following way: Device number of device : 0x193 Major number of device : 94 Minor number of device : 12 Labeling device : yes Disk label : LNX1 Disk identifier : 0X0193 Extent start (trk no) : 0 Extent end (trk no) : 1499 Compatible Disk Layout : no Blocksize : 4096 --->> ATTENTION! <<--All data in the specified range of that device will be lost. Type "yes" to continue, no will leave the disk untouched: yes Formatting the device. This may take a while (get yourself a coffee). Finished formatting the device. Rereading the partition table... done. [root@host /root]# Example 2 To format the same disk with the compatible disk layout (using the default value of the -d option). The device is specified by device node. 112 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) [root@host /root]# dasdfmt -b 4096 -f /dev/dasd/0193/device Drive Geometry: 100 Cylinders * 15 Heads = 1500 Tracks I am going to format the device /dev/dasd/0193/device in the following way: Device number of device : 0x193 Major number of device : 94 Minor number of device : 12 labeling device : yes Disk label : VOL1 Disk identifier : 0X0193 Extent start (trk no) : 0 Extent end (trk no) : 1499 Compatible Disk Layout : yes Blocksize : 4096 --->> ATTENTION! <<--All data in the specified range of that device will be lost. Type "yes" to continue, no will leave the disk untouched: yes Formatting the device. This may take a while (get yourself a coffee). Finished formatting the device. Rereading the partition table... done. [root@host /root]# Chapter 13. Useful Linux commands 113 dasdview - Display DASD Structure Purpose This tool is used to send DASD and VTOC information to the system console. Such information might be the volume label, VTOC entries, or disk geometry details. If you specify a start point and size, you can also display the contents of a disk dump. Usage Prerequisites: (See Chapter 2, “Partitioning DASD” on page 5 for terminology and further information.) You must have: v Installed the library libvtoc.so in the Linux /lib directory. v Root permissions. dasdview displays this DASD information: v The volume label. v VTOC details (general information, and FMT1, FMT4, FMT5 and FMT7 labels). v The content of the DASD, by specifying: – Starting point – Size You can display these values in hexadecimal, EBCDIC, and ASCII format. Format dasdview syntax (1) WW dasdview 114 -h -? -v Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY dasdview syntax (2) WW dasdview W W 0 128 -b begin -i -x -l -t spec -1 -s size -2 WY -n -f devno node The parameters are: -h or --help Display short usage text on console, to see manpage enter man dasdview. -? or --help Display short usage text on console, to see manpage enter man dasdview. -v or --version Display version number on console, and exit. -b begin or --begin=begin Display disk content on the console, starting from begin. The content of the disk are displayed as hexadecimal numbers, ASCII text and EBCDIC text. If size is not specified (see below), dasdview will take the default size (128 bytes). You can specify the variable begin as: begin[k|m|b|t|c] The default for begin is 0. dasdview displays a disk dump on the console using the DASD driver. The DASD driver might suppress parts of the disk, or add information that is not relevant. This might occur, for example, when displaying the first two tracks of a disk that has been formatted as cdl. In this situation, the DASD driver will pad shorter blocks with zeros, in order to maintain a constant blocksize. All Linux applications (including dasdview) will process according to this rule. Here are some examples of how this option can be used: -b -b -b -b -b -b 32 32k 32m 32b 32t 32c (start (start (start (start (start (start printing printing printing printing printing printing at at at at at at Byte 32) kByte 32) MByte 32) block 32) track 32) cylinder 32) -s size or --size=size Display a disk dump on the console, starting at begin, and continuing for size = size). The content of the dump are displayed as hexadecimal numbers, ASCII text, and EBCDIC text. If a start value (begin) is not specified, dasdview will take the default. You can specify the variable size as: Chapter 13. Useful Linux commands 115 size[k|m|b|t|c] The default for size is 128 bytes. Here are some examples of how this option can be used: -s -s -s -s -s -s -1 16 16k 16m 16b 16t 16c (use (use (use (use (use (use a a a a a a 16 16 16 16 16 16 Byte size) kByte size) MByte size) block size) track size) cylinder size) Display the disk dump using format 1 (as 16 Bytes per line in hexadecimal, ASCII and EBCDIC). A line number is not displayed. You can only use option -1 together with -b or -s. Option -1 is the default. -2 Display the disk dump using format 2 (as 8 Bytes per line in hexadecimal, ASCII and EBCDIC). A decimal and hexadecimal byte count are also displayed. You can only use option -2 together with -b or -s. -i or --info Display basic information such as device node, device number, device type, or geometry data. -x or --extended Display the information obtained by using -i option, but also open count, subchannel identifier, and so on. -l or --label Display the volume label. -t spec or --vtoc=spec Display the VTOC’s table-of-contents, or a single VTOC entry, on the console. The variable spec can take these values: info Display overview information about the VTOC, such as a list of the dataset names and their sizes. f1 Display the contents of all format 1 data set control blocks (DSCBs). f4 Display the contents of all format 4 DSCBs. f5 Display the contents of all format 5 DSCBs. f7 Display the contents of all format 7 DSCBs. all Display the contents of all DSCBs. -n devno or --devno=devno Specify the device using the device number devno. You can only use this option if your system is using the device file system. Here is an example of the use of this option: dasdview -i -n 193 -f node or --devnode=node Specify the device using the device node devnode. If your system is not using the device file system you must use this option to specify a device.. An example of the use of this option might be as follows. Assume you wish to display the information about a DASD that has a device node /dev/dasda or /dev/dasd/0193/device. You could then issue these commands: dasdview -i -f /dev/dasda or 116 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) dasdview -i -f /dev/dasd/0193/device Examples To display basic information about a DASD: bash-2.04# dasdview -i -n 193 This displays: --- general DASD information -------------------------------------------------device node : /dev/dasd/0193/device device number : hex 193 dec 403 type : ECKD device type : hex 3390 dec 13200 --- DASD geometry ------------------------------------------------------------number of cylinders : hex 64 dec 100 tracks per cylinder : hex f dec 15 blocks per track : hex c dec 12 blocksize : hex 1000 dec 4096 bash-2.04# To include extended information: bash-2.04# dasdview -x -n 193 This displays: --- general DASD information -------------------------------------------------device node : /dev/dasd/0193/device device number : hex 193 dec 403 type : ECKD device type : hex 3390 dec 13200 --- DASD geometry ------------------------------------------------------------number of cylinders : hex 64 dec 100 tracks per cylinder : hex f dec 15 blocks per track : hex c dec 12 blocksize : hex 1000 dec 4096 --- extended DASD information ------------------------------------------------real device number : hex 452bc08 dec 72530952 subchannel identifier : hex e dec 14 CU type (SenseID) : hex 3990 dec 14736 CU model (SenseID) : hex e9 dec 233 device type (SenseID) : hex 3390 dec 13200 device model (SenseID) : hex a dec 10 open count : hex 1 dec 1 req_queue_len : hex 0 dec 0 chanq_len : hex 0 dec 0 status : hex 5 dec 5 label_block : hex 2 dec 2 FBA_layout : hex 0 dec 0 characteristics_size : hex 40 dec 64 confdata_size : hex 100 dec 256 characteristics : 3990e933 e000e5a2 00000000 0677080f 900a5f80 dff72024 0064000f 05940222 13090674 00000000 00000000 24241502 dfee0001 007f4a00 1b350000 00000000 configuration_data : dc010100 f1f3f0f0 dc000000 f1f3f0f0 d4020000 f1f3f0f0 4040f2f1 f0f0f0f0 4040f2f1 f0f0f0f0 4040f2f1 f0f0f0f0 f0f54040 f0c6c3f1 f0f54040 f0c6c3f1 f0f5c5f2 f0c6c3f1 40c9c2d4 f1f30509 40c9c2d4 f1f30500 f0c9c2d4 f1f3050a Chapter 13. Useful Linux commands 117 bash-2.04# f0000001 f1f3f0f0 00000000 00000000 00000000 00000000 00000000 00000000 800000a1 0140c009 4040f2f1 f0f0f0f0 00000000 00000000 00000000 00000000 00000000 00000000 00001e00 7cb7efb7 f0f54040 f0c6c3f1 00000000 00000000 00000000 00000000 00000000 00000000 51400009 00000000 40c9c2d4 f1f30500 00000000 00000000 00000000 00000000 00000000 00000000 0909a188 00000800 To display volume label information: bash-2.04# dasdview -l -n 193 This will display: --- volume label -------------------------------------------------------------volume label key : ascii ’åÖÖñ’ : ebcdic ’VOL1’ : hex e5d6d3f1 volume label identifier : ascii ’åÖÖñ’ : ebcdic ’VOL1’ : hex e5d6d3f1 volume identifier : ascii ’ðçðñùó’ : ebcdic ’0X0193’ : hex f0e7f0f1f9f3 security byte : hex 40 VTOC pointer : hex 0000000101 (cyl 0, trk 1, blk 1) reserved : ascii ’@@@@@’ : ebcdic ’ ’ : hex 4040404040 CI size for FBA : ascii ’@@@@’ : ebcdic ’ ’ : hex 40404040 blocks per CI (FBA) : ascii ’@@@@’ : ebcdic ’ ’ : hex 40404040 labels per CI (FBA) : ascii ’@@@@’ : ebcdic ’ ’ : hex 40404040 reserved : ascii ’@@@@’ : ebcdic ’ ’ : hex 40404040 owner code for VTOC : ascii ’@@@@@@@@@@@@@@’ ebcdic ’ ’ hex 40404040 40404040 reserved bash-2.04# 118 40404040 4040 : ascii ’@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@’ ebcdic ’ ’ hex 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) To display partition information: bash-2.04# dasdview -t info -n 193 This will display: --- VTOC info ----------------------------------------------------------------The VTOC contains: 3 format 1 label(s) 1 format 4 label(s) 1 format 5 label(s) 0 format 7 label(s) Other S/390 and zSeries operating systems would see the following data sets: +----------------------------------------------+--------------+--------------+ | data set | start | end | +----------------------------------------------+--------------+--------------+ | LINUX.V0X0193.PART0001.NATIVE | trk | trk | | data set serial number : ’0X0193’ | 2 | 500 | | system code : ’IBM LINUX ’ | cyl/trk | cyl/trk | | creation date : year 2001, day 317 | 0/ 2 | 33/ 5 | +----------------------------------------------+--------------+--------------+ | LINUX.V0X0193.PART0002.NATIVE | trk | trk | | data set serial number : ’0X0193’ | 501 | 900 | | system code : ’IBM LINUX ’ | cyl/trk | cyl/trk | | creation date : year 2001, day 317 | 33/ 6 | 60/ 0 | +----------------------------------------------+--------------+--------------+ | LINUX.V0X0193.PART0003.NATIVE | trk | trk | | data set serial number : ’0X0193’ | 901 | 1499 | | system code : ’IBM LINUX ’ | cyl/trk | cyl/trk | | creation date : year 2001, day 317 | 60/ 1 | 99/ 14 | +----------------------------------------------+--------------+--------------+ bash-2.04# To display VTOC information: bash-2.04# dasdview -t f4 -n 193 This will display: --- VTOC format 4 label ------------------------------------------------------DS4KEYCD : 040404040404040404040404040404040404040404040404040404040404040404... DS4IDFMT : dec 244, hex f4 DS4HPCHR : 0000000105 (cyl 0, trk 1, blk 5) DS4DSREC : dec 7, hex 0007 DS4HCCHH : 00000000 (cyl 0, trk 0) DS4NOATK : dec 0, hex 0000 DS4VTOCI : dec 0, hex 00 DS4NOEXT : dec 1, hex 01 DS4SMSFG : dec 0, hex 00 DS4DEVAC : dec 0, hex 00 DS4DSCYL : dec 100, hex 0064 DS4DSTRK : dec 15, hex 000f DS4DEVTK : dec 58786, hex e5a2 DS4DEVI : dec 0, hex 00 DS4DEVL : dec 0, hex 00 DS4DEVK : dec 0, hex 00 DS4DEVFG : dec 48, hex 30 DS4DEVTL : dec 0, hex 0000 DS4DEVDT : dec 12, hex 0c DS4DEVDB : dec 0, hex 00 DS4AMTIM : hex 0000000000000000 DS4AMCAT : hex 000000 DS4R2TIM : hex 0000000000000000 res1 : hex 0000000000 DS4F6PTR : hex 0000000000 DS4VTOCE : hex 01000000000100000001 typeind : dec 1, hex 01 seqno : dec 0, hex 00 Chapter 13. Useful Linux commands 119 res2 DS4EFLVL DS4EFPTR res3 bash-2.04# 120 : : : : llimit : hex 00000001 (cyl 0, trk 1) ulimit : hex 00000001 (cyl 0, trk 1) hex 00000000000000000000 dec 0, hex 00 hex 0000000000 (cyl 0, trk 0, blk 0) hex 000000000000000000 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) To print the content of a disk to the console starting at block 2 (volume label): bash-2.04# dasdview -b 2b -s 128 -n 193 This will display: +----------------------------------------+------------------+------------------+ | HEXADECIMAL | EBCDIC | ASCII | | 01....04 05....08 09....12 13....16 | 1.............16 | 1.............16 | +----------------------------------------+------------------+------------------+ | E5D6D3F1 E5D6D3F1 F0E7F0F1 F9F34000 | VOL1VOL10X0193?. | ??????????????@. | | 00000101 40404040 40404040 40404040 | ................ | ................ | | 40404040 40404040 40404040 40404040 | ???????????????? | @@@@@@@@@@@@@@@@ | | 40404040 40404040 40404040 40404040 | ???????????????? | @@@@@@@@@@@@@@@@ | | 40404040 40404040 40404040 40404040 | ???????????????? | @@@@@@@@@@@@@@@@ | | 40404040 88001000 10000000 00808000 | ????h........... | @@@@?........... | | 00000000 00000000 00010000 00000200 | ................ | ................ | | 21000500 00000000 00000000 00000000 | ?............... | !............... | +----------------------------------------+------------------+------------------+ bash-2.04# To display the content of a disk on the console starting at block 14 (first FMT1 DSCB) using format 2: bash-2.04# dasdview -b 14b -s 128 -2 -n 193 This will display: +---------------+---------------+----------------------+----------+----------+ | BYTE | BYTE | HEXADECIMAL | EBCDIC | ASCII | | DECIMAL | HEXADECIMAL | 1 2 3 4 5 6 7 8 | 12345678 | 12345678 | +---------------+---------------+----------------------+----------+----------+ | 57344 | E000 | D3C9D5E4 E74BE5F0 | LINUX.V0 | ?????K?? | | 57352 | E008 | E7F0F1F9 F34BD7C1 | X0193.PA | ?????K?? | | 57360 | E010 | D9E3F0F0 F0F14BD5 | RT0001.N | ??????K? | | 57368 | E018 | C1E3C9E5 C5404040 | ATIVE??? | ?????@@@ | | 57376 | E020 | 40404040 40404040 | ???????? | @@@@@@@@ | | 57384 | E028 | 40404040 F1F0E7F0 | ????10X0 | @@@@???? | | 57392 | E030 | F1F9F300 0165013D | 193.???? | ???.?e?= | | 57400 | E038 | 63016D01 0000C9C2 | ??_?..IB | c?m?..?? | | 57408 | E040 | D440D3C9 D5E4E740 | M?LINUX? | ?@?????@ | | 57416 | E048 | 40404065 013D0000 | ??????.. | @@@e?=.. | | 57424 | E050 | 00000000 88001000 | ....h.?. | ....?.?. | | 57432 | E058 | 10000000 00808000 | ?....??. | ?....??. | | 57440 | E060 | 00000000 00000000 | ........ | ........ | | 57448 | E068 | 00010000 00000200 | .?....?. | .?....?. | | 57456 | E070 | 21000500 00000000 | ?.?..... | !.?..... | | 57464 | E078 | 00000000 00000000 | ........ | ........ | +---------------+---------------+----------------------+----------+----------+ bash-2.04# To see what is at block 1234 (in this example there is nothing there): bash-2.04# dasdview -b 1234 -s 128 -n 193 This will display: +----------------------------------------+------------------+------------------+ | HEXADECIMAL | EBCDIC | ASCII | | 01....04 05....08 09....12 13....16 | 1.............16 | 1.............16 | +----------------------------------------+------------------+------------------+ | 00000000 00000000 00000000 00000000 | ................ | ................ | | 00000000 00000000 00000000 00000000 | ................ | ................ | | 00000000 00000000 00000000 00000000 | ................ | ................ | | 00000000 00000000 00000000 00000000 | ................ | ................ | | 00000000 00000000 00000000 00000000 | ................ | ................ | | 00000000 00000000 00000000 00000000 | ................ | ................ | Chapter 13. Useful Linux commands 121 | 00000000 00000000 00000000 00000000 | ................ | ................ | | 00000000 00000000 00000000 00000000 | ................ | ................ | +----------------------------------------+------------------+------------------+ bash-2.04# To try byte 0 instead: bash-2.04# dasdview -b 0 -s 64 -n 193 This will display: +----------------------------------------+------------------+------------------+ | HEXADECIMAL | EBCDIC | ASCII | | 01....04 05....08 09....12 13....16 | 1.............16 | 1.............16 | +----------------------------------------+------------------+------------------+ | C9D7D3F1 000A0000 0000000F 03000000 | IPL1............ | ????............ | | 00000001 00000000 00000000 40404040 | ................ | ................ | | 40404040 40404040 40404040 40404040 | ???????????????? | @@@@@@@@@@@@@@@@ | | 40404040 40404040 40404040 40404040 | ???????????????? | @@@@@@@@@@@@@@@@ | +----------------------------------------+------------------+------------------+ bash-2.04# 122 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) fdasd – DASD partitioning tool Purpose The new disk layout (OS/390 compatible disk layout, or ’cdl’) now allows you to split DASD into several partitions. Use fdasd to manage partitions on a DASD. You can use this to create, change and delete partitions, and also to change the volume identifier label. Usage Prerequisites: (see Chapter 2, “Partitioning DASD” on page 5 for terminology and further information) v You must have installed the library libvtoc.so in the Linux /lib directory, v You must have root permissions, and v The disk must be formatted with dasdfmt with the (default) -d cdl option. Attention: Incautious use of fdasd can result in loss of data. fdasd is a menu-driven tool that you call with the command fdasd followed by the device node of the DASD you want to partition. Overview of functionality: 1. fdasd checks that the volume has a valid volume label and VTOC. If either is missing or incorrect, fdasd will recreate it. 2. You are given a menu through which you can display DASD information, add or remove partitions, or change the volume identifier. 3. Your changes will not be written to disk until you type the ’write’ option on the menu. You may quit without altering the disk at any time prior to this. The items written to the disk will be the volume label, the ’format 4’ DSCB , a ’format 5’ DSCB and one to three ’format 1’ DSCBs. Format Command line syntax fdasd command WW fdasd -l -a -c -h -? -v volid dasd WY conf_file Where: -a or - -auto Auto-create one partition using the whole disk in non-interactive mode. Chapter 13. Useful Linux commands 123 -l volid Is the volume label (see 2 on page 6). -c conf_file or - - config conf_file This option enables you to create several partitions, controlled by the plain text configuration file conf_file. Using this option, fdasd automatically switches to non-interactive mode and creates all the partitions specified in conf_file. The configuration file conf_file contains the following line for each partition you want to create: [x,y] where x is the keyword first, for the first possible track on disk, or a track number. y is either the keyword last, for the last possible track on disk, or a track number. The example configuration file below would allow you to create three partitions: [first,1000] [1001,2000] [2001,last] dasd Is the device node of the DASD you want to partition. If the device file system is used this has the form /dev/dasd/xxxx/device, where xxxx is the device number (devno) of the DASD. If the device file system is not used it has the form /dev/dasdxxx where xxx is one to three letters. See “DASD overview” on page 11 for more information. -h or -? Displays help on command line arguments. Displays the version of fdasd. -v Processing fdasd menu When you have called fdasd using the syntax described in “Command line syntax” on page 123, the following menu will appear: Command action m print this menu p print the partition table n add a new partition d delete a partition v change volume serial t change partition type r re-create VTOC and delete all partitions s show mapping (partition number - data set name) q quit without saving changes w write table to disk and exit Command (m for help): Menu commands: m Re-displays the fdasd command menu. p Displays the following information about the DASD: v Number of cylinders v Number of tracks per cylinder v Number of blocks per track v Blocksize 124 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) v Volume label v Volume identifier v Number of partitions defined and the following information about each partition (including the free space area): v v v v v v Linux node Start track End track Number of tracks Partition id Partition type (1 = filesystem, 2 = swap) n Adds a new partition to the DASD. You will be asked to give the start track and the length or end track of the new partition. d Deletes a partition from the DASD. You will be asked which partition to delete. v Changes the volume identifier. You will be asked to enter a new volume identifier. See page 123 for the format. t Changes the partition type. You will be asked to identify the partition to be changed. You will then be asked for the new partition type (Linux native or swap). Note that this type is a guideline; the actual use Linux makes of the partition depends on how it is defined with the mkswap or mkxxfs tools. The main function of the partition type is to describe the partition to other operating systems so that, for example, swap partitions can be skipped by backup programs. r Re-creates the VTOC and thereby deletes all partitions. s Displays the mapping of partition numbers to data set names. For example: Command (m for help): s disk : /dev/dasd/0193/device volume label : VOL1 volume identifier: 0X0193 WARNING: This mapping may be NOT up-to-date, if you have NOT saved your last changes! /dev/dasd/0193/part1 /dev/dasd/0193/part2 /dev/dasd/0193/part3 - LINUX.V0X0193.PART0001.NATIVE LINUX.V0X0193.PART0002.NATIVE LINUX.V0X0193.PART0003.NATIVE q Quits fdasd without updating the disk. Any changes you have made (in this session) will be discarded. w Writes your changes to disk and exits. After the data is written Linux will re-read the partition table. Examples Example using the menu This section gives an example of how to use fdasd to create two partitions on a VM minidisk, change the type of one of the partitions, save the changes and check the results. Chapter 13. Useful Linux commands 125 In this example we will format a VM minidisk with the compatible disk layout (cdl) using the device file system. The minidisk has device number 193. 1. Call fdasd, specifying the minidisk: [root@host /root]# fdasd /dev/dasd/0193/device fdasd reads the existing data and displays the menu: reading volume label: VOL1 reading vtoc : ok Command action m print this menu p print the partition table n add a new partition d delete a partition v change volume serial t change partition type r re-create VTOC and delete all partitions u re-create VTOC re-using existing partition sizes s show mapping (partition number - data set name) q quit without saving changes w write table to disk and exit Command (m for help): 2. Use the p option to verify that no partitions have yet been created on this DASD: Command (m for help): p Disk /dev/dasd/0193/device: 100 cylinders, 15 tracks per cylinder, 12 blocks per track 4096 bytes per block volume label: VOL1, volume identifier: 0X0193 maximum partition number: 3 -----------tracks---------Device start end length 2 1499 1498 Id System unused 3. Define two partitions, one by specifying an end track and the other by specifying a length. (In both cases the default start tracks are used): Command (m for help): n First track (1 track = 48 KByte) ([2]-1499): Using default value 2 Last track or +size[c|k|M] (2-[1499]): 700 You have selected track 700 Command (m for help): n First track (1 track = 48 KByte) ([701]-1499): Using default value 701 Last track or +size[c|k|M] (701-[1499]): +400 You have selected track 1100 4. Check the results using the p option: 126 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Command (m for help): p Disk /dev/dasd/0193/device: 100 cylinders, 15 tracks per cylinder, 12 blocks per track 4096 bytes per block volume label: VOL1, volume identifier: 0X0193 maximum partition number: 3 -----------tracks---------Device start end length /dev/dasd/0193/part1 2 700 699 /dev/dasd/0193/part2 701 1100 400 1101 1499 399 Id 1 2 System Linux native Linux native unused 5. Change the type of a partition: Command (m for help): t Disk /dev/dasd/0193/device: 100 cylinders, 15 tracks per cylinder, 12 blocks per track 4096 bytes per block volume label: VOL1, volume identifier: 0X0193 maximum partition number: 3 -----------tracks---------Device start end length /dev/dasd/0193/part1 2 700 699 /dev/dasd/0193/part2 701 1100 400 1101 1499 399 Id 1 2 System Linux native Linux native unused change partition type partition id (use 0 to exit): Enter the ID of the partition you want to change; in this example partition 2: partition id (use 0 to exit): 2 6. Enter the new partition type; in this example type 2 for swap: current partition type is: Linux native 1 Linux native 2 Linux swap new partition type: 2 7. Check the result: Chapter 13. Useful Linux commands 127 Command (m for help): p Disk /dev/dasd/0193/device: 100 cylinders, 15 tracks per cylinder, 12 blocks per track 4096 bytes per block volume label: VOL1, volume identifier: 0X0193 maximum partition number: 3 -----------tracks---------Device start end length /dev/dasd/0193/part1 2 700 699 /dev/dasd/0193/part2 701 1100 400 1101 1499 399 Id 1 2 System Linux native Linux swap unused 8. Write the results to disk using the w option: Command (m for help): w writing VTOC... rereading partition table... [root@host /root]# Results: You can check this in Linux by listing the directory /dev/dasd/0193/ (in this case). After all changes have been written to disk the new device nodes should appear in the device file system. The first entry represents the whole disk, and the following entries represent one partition each. [root@host /root]# ls -l /dev/dasd/0193/ total 0 brw------- 1 root root 94, 12 May 2 2001 brw------- 1 root root 94, 12 May 2 2001 brw------- 1 root root 94, 13 May 2 2001 brw------- 1 root root 94, 14 May 2 2001 [root@host /root]# device disc part1 part2 Example using options You can partition using the -a or -c option without entering the menu mode. This is useful for partitioning using scripts, for examlpe if you need to partition several hundred DASDs. With the -a parameter you can create one large partition on a DASD: bash-2.04# fdasd -a /dev/dasd/0193/device auto-creating one partition for the whole disk... writing volume label... writing VTOC... rereading partition table... bash-2.04# This will create a partition as follows: Device /dev/dasd/0193/part1 start 2 end 1499 length 1498 Id System 1 Linux native Using a configuration file you can create several partitions. For example, the configuration file config below will create three partitions: [first,500] [501,1100] [1101,last] 128 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Submitting the command with the -c option creates the partitions: bash-2.04# fdasd -c config /dev/dasd/0193/device parsing config file ’config’... writing volume label... writing VTOC... rereading partition table... bash-2.04# This will create partitions as follows: Device /dev/dasd/0193/part1 /dev/dasd/0193/part2 /dev/dasd/0193/part3 start 2 501 1101 end 500 1100 1499 length 499 600 399 Id System 1 Linux native 2 Linux native 3 Linux native Chapter 13. Useful Linux commands 129 | | snIPL – Remote control of Support Element (SE) functions Purpose | | | | | | snIPL (simple network IPL) is an interactive tool used for remotely controlling Support Element (SE) functions. It allows you to: v Boot Linux for S/390 in LPAR mode. v Send and retrieve operating system messages. v Deactivate an LPAR for I/O fencing purposes. | | | Using snIPL, you overcome the limitations of the SE graphical interface when snIPL is used for I/O fencing from within a clustered environment of Linux systems that run in LPAR mode. | | | | snIPL uses the network management application programming interface (API) which: 1. establishes an SNMP network connection. 2. uses the SNMP protocol to send and retrieve data. | | | | For details, refer to S/390 Application Programming Interfaces, SC28-8141, which you can obtain from this Web site: http://www.ibm.com/server/resourcelink/ Note! snIPL currently supports a direct connection to the SE, and does not yet support direct communication with the Hardware Management Console (HMC). | | | | | | Usage | | Prerequisites: | | You must configure the SE to allow the initiating host system to access the SE API. For details of how to do so, refer to the Application Programming Interfaces book. | Attention: Careless use of snIPL can result in loss of data. | | | | | Overview of functionality: To communicate with the SE, snIPL uses the application programming interface provided by the HMC to: 1. establish an SNMP network connection. 2. use the SNMP protocol to send and retrieve data. | | | | | | Connection Errors and Exit Codes: If a connection error occurs (such as a timeout or communication failure): 1. snIPL sends to stderr: v the error code of the management API v a message 2. The shell exit code is set to 99. | | If no error occurs, a shell exit code of 0 is returned after snIPL has completed its processing. 130 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) | | | Format Command line syntax snIPL command | WW snipl | ipaddr -u -c public -c -n community LPARname -t 10000 -t -p timeout 5000 -p interval -i -d WY |OS Msgs dialog| || | | Parameters: | -u | | | | | -c community Specify the community (which is the HMC term for password) of the initiating host system. The default for community is public. The value entered here must match the entry contained in the SNMP configuration settings on the SE. | | | | | -n LPARname Specify the name of the target LPAR (also referred to as a CPC image). If you do not specify the –n option, snIPL displays the LPAR dialog in which the LPARs it can find are listed. If you again do not enter a value for LPARname but instead press Ctrl-D, the Command dialog is displayed. | | | | | | | -i Display the usage and exit. Start an Operating System Messages dialog, which you can then use to enter your own commands (this option is used together with -n). These commands are read from stdin and then sent to the target LPAR by the management API. snIPL also initiates a background thread (using pthreads) which continously retrieves operating system messages as they are generated. The output of the polling thread is sent to stdout. To terminate the Operating System Messages dialog, press Ctrl-D. snIPL will then exit. Note: The Operating System Messages dialog is line-oriented and therefore use of a screen-based editor is not recommended. | | Instruct snIPL to issue a deactivate command for the target LPAR, and then to exit (this option is used together with -n). | | -d | | | -t timeout Specify the timeout in milliseconds, for management API calls. The default is 10000. Chapter 13. Useful Linux commands 131 | | | -p interval Specify the interval in milliseconds, for management API calls that retrieve operating system messages. The default is 5000. | | | | | ipaddr Specify the IP-address of the target Support Element (SE). In order to successfully establish a connection (using a valid community), you must configure in the SE’s SNMP configuration task, the: v IP-address of the initiating system v community. | In addition, you must activate SNMP support in the SE’s Settings task. | | | | If snIPL repeatedly returns the error code 19 (timeout), the target SE is probably v not reachable, or v incorrectly configured. Processing | snIPL menu | | | | | | | | | | | You call snIPL using the syntax described in “Command line syntax” on page 131. 1. If you specify –n together with a valid value for LPARname, snIPL displays the Command dialog (shown below). 2. If you specify –n together with an invalid value for LPARname, snIPL re-displays the LPAR dialog. 3. If you do not specify the –n option and a value for LPARname, snIPL displays the LPAR dialog. a. If you then press Ctrl-D, snIPL displays the Command dialog. b. Otherwise, you can select an LPAR, and press Enter. snIPL then proceeds to the Command dialog. n i l d m x | | | | | | || | select LPAR image operating system messages interaction perform a load perform a deactivate print this menu exit 4. Now you can select an option from the Command dialog. | Option Result | | n The LPAR dialog is re-displayed, and you can select another LPAR. | | | | | | i The Operating System Messages dialog is displayed. To abort the Operating System Messages dialog, you again press Ctrl-D. The polling thread then terminates after the last management API call that was issued has returned. This means that, in the worst case, the polling thread quits after waiting for the number of milliseconds contained in interval. | | | | | | | l A Linux for S/390 system is started in the target LPAR. You are then prompted to enter: v load address v load parameters v clear indicator v timeout value v store status indicator 132 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) | | | These arguments are similar to those which you enter directly at the SE. If you press Ctrl-D, a previously entered default value will be re-used. | | You are prompted to confirm that the parameters you specified are correct. Then the respective load command is issued. | d Causes a deactivate command to be issued on the target LPAR. | m The Command dialog is printed to the screen. | x snIPL exits. | Restrictions when using snIPL: | | | v snIPL does not recover from: – connection failures – errors in API call execution. | | | | | | | | | In both of these situations, you should simply restart snIPL. However, if the problem persists, a networking failure has probably occurred. In this situation you should try to increase the timeout values. v snIPL does acknowledge that a load command has been accepted by the management API on the SE. However you must also check whether or not the load command has completed successfully. For example, snIPL cannot determine if an incorrect load address has been used as input. v Currently, snIPL only supports direct communication with the SE. Examples | | This section provides a typical sequence of commands for using snIPL, where entering Ctrl-D, a previously-entered default is used. | | | | | | | | | | | | | | | | | | | | | 1. The user selects option l to perform a load. 2. These parameters are specified: Load address (as XXXX in HEX): 5119 Load parameter: CTRL-D Clear indicator (0/1): 1 Timeout: 60 Store status indicator (0/1): CTRL-D 3. The parameters that were selected are now confirmed: Load address: 5119 Load parameter: <default> Clear indicator: 1 Timeout: 60s Store status indicator: <default> 4. The user is then prompted to confirm that a LOAD command should be performed: Perform a LOAD command on partition MYLPAR with these parameters? (y/n) y 5. The LOAD command is processed, and an acknowledgement sent when completed: processing.... acknowledged. Command (m for help): | Chapter 13. Useful Linux commands 133 zIPL – zSeries initial program loader Purpose Because of changes in the DASD disk layout for kernel 2.4, the boot utility SILO is replaced by the new initial program loader (zIPL) for Linux for S/390. zIPL can be used to prepare a device for two purposes: v For booting Linux (as a Linux program loader) v For dumping. Usage Prerequisites: v The Linux kernel version must be equal to or later than 2.4.3. v You should have the parsecfg package from your Linux distributor. For more details see the Readme.zipl document in the kernel source tree at ...linux/Documentation/s390. zIPL supports devices as shown in Table 4. Table 4. Supported devices As a boot loader As a dump tool ECKD¹ DASDs with fixed block AIX-compliant layout ECKD DASDs with fixed block AIX-compliant layout ECKD DASDs with z/OS-compliant layout ECKD DASDs with z/OS-compliant layout Fixed Block Access (FBA) DASDs Magnetic tape subsystems compatible with IBM3480 or IBM3490 . VM minidisks using DIAG250 on ECKD hardware VM minidisks using DIAG250 on FBA hardware ¹Enhanced Count Key Data zIPL uses configuration data that it retrieves from: 1. The command line. Settings at the command line override settings in the configuration file. Exception: Parameter settings in the configuration file override parmfile settings on the command line. 2. The configuration file if it is accessible. The default configuration file is /etc/zipl.conf. You can also use an environment variable, ZIPLCONF, to specify the configuration file. For every operation a target directory must be specified, either on the command line or in the configuration file. This directory must contain all zIPL boot-loader files and must be accessible as read-write. zIPL reads the boot loaders from the target directory, and might create the boot-map file and temporary device nodes there. 134 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) You use the image parameter to tell zIPL to install a boot loader. You use the -d (or --dumpto) parameter to tell zIPL to create a dump device. If none or both of these options are set (on either the command line or in the configuration file), zIPL will issue an error message and exit. Creating a boot loader Prerequisite: If the boot loader is to be installed on an AIX-compliant ECKD, FBA, or VM minidisk, the corresponding stage 2 boot loaders eckd2, fba2, or diag2 must reside on the same device as the target directory. This is normally the case if the target directory does not contain symbolic links to other devices. To use zIPL as a boot loader, you must specify the following either on the command line or in the configuration file: 1. The image parameter. If you specify an optional address on the image parameter, the kernel image will be loaded to that address. The default address 0x10000 is used otherwise. The image, and if specified, the ramdisk and the parmfile, must reside on the same device, otherwise an error is reported. 2. The target parameter. This specifies the target directory in which the boot loader will be installed. This means that you do not need to specify the device on which the boot loader should be installed. The device on which the target directory resides will be automatically detected and used. 3. The location of the boot parameters or the parmfile. You can do this in several ways: v You can set parameters under the ipl section in the configuration file by using parameters=. A parmfile will be created in the target directory, and will be loaded at IPL to the default address 0x1000. Note: This overrides any parmfile setting both on the command line and in the configuration file. v You can specify the name of a parmfile by using parmfile= in the configuration file, or by using -p or --parmfile= on the command line. If a parmfile is specified and no parameter setting is present, the parmfile will be loaded to either the default address 0x1000 or the address specified. Creating a dump device Prerequisite: A partition must be available to zIPL. Any existing data on the partition will be lost. To create a dump device with zIPL, you must specify the following parameters either on the command line or in the configuration file: 1. The partition on which the dump device should be created with the dumpto parameter. The partition is used to automatically define the device. zIPL will delete all data on this partition and install the zIPL boot loader here. Notes: a. If the dump device is a ECKD disk with fixed-block layout (AIX-compliant), the corresponding stage 2 dump utility must be located on the same device as the one selected using the dumpto parameter. The dump utility will be overwritten by the dump, and you must re-install it in order to take another dump. b. If the dump device is a disk with z/OS-compliant layout, the corresponding stage 2 dump utility can reside in a (possibly very small) partition, and the Chapter 13. Useful Linux commands 135 dump can go into another, larger partition. Here you do not need to re-install the dump utility after every dump. 2. The target directory that contains the boot loader, for example eckd2dump, with the target parameter. Format Command line syntax zIPL boot command WW zipl -i IMAGE W -r ,ADDR 0x80000 RAMDISK W 0x10000 -p ,ADDR PARMFILE -c /etc/zipl.conf W -t DIRECTORY -c CONFIG FILE 0x1000 W ,ADDR [default] (1) CONFIGURATION WY Notes: 1 If no configuration name is given, zIPL will use the configuration specified in the defaultboot section of the configuration file. zIPL dump command WW zipl W -d PARTITION -c /etc/zipl.conf -c CONFIG FILE -t DIRECTORY [default] (1) CONFIGURATION Notes: 1 If no configuration name is given zIPL will use the configuration specified in the defaultboot section of the configuration file. Where: 136 W Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY -c CONFIG FILE or --config=CONFIG FILE Specifies the name of the configuration file. This overrides the default /etc/zipl.conf as well as the environment variable ZIPLCONF. CONFIGURATION Selects a section from the configuration file to be read. -i IMAGE[,ADDRESS] or --image=IMAGE[,ADDRESS] Specifies the location of the Linux system kernel on the file system as well as in memory after IPL. The default address is 0x10000. -r RAMDISK[,ADDRESS] or --ramdisk=RAMDISK[,ADDRESS] Specifies the location of the initial ramdisk image (initrd) on the file system as well as in memory after IPL. The default address is 0x80000. -p PARMFILE[,ADDRESS] or --parmfile=PARMFILE[,ADDRESS] Specifies the location of the parameter file on the file system as well as in memory after IPL. The default address is 0x1000. -d PARTITION or --dumpto=PARTITION Specifies the partition on which the dump will be located after IPL. -t DIRECTORY or --target=DIRECTORY Specifies the target directory where zIPL finds boot loaders, for example, eckd2dump, as well as various other temporary and permanent files. For example the parmfile will be created in this directory. -h or --help Displays help on command line arguments. Configuration file syntax Location: By default zIPL retrieves the configuration file from /etc/zipl.conf. You can set an environment variable, ZIPLCONF, which overrides the default setting. If the name of the configuration file is given on the command line, this setting overrides both the default setting and the environment variable. Configuration file sections: defaultboot The configuration file can contain a default boot section. If no configuration is specified on the command line, the defaultboot section is accessed and the default configuration section is activated. Example: [defaultboot] default=myconfig configuration A section describing a configuration always has the same name as the configuration name which is specified in the defaultboot section or on the command line. Example: [myconfig] A section describing a configuration can contain one or more of the following options: target=DIRECTORY Specifies the directory where zIPL finds boot loaders, for example eckd2dump, as well as various other temporary and permanent files. Chapter 13. Useful Linux commands 137 image=IMAGE[,ADDRESS] Specifies the location of the Linux system kernel on the file system as well as in memory after IPL. The default address is 0x10000 ramdisk=RAMDISK[,ADDRESS] Specifies the location of the initial ramdisk image (initrd) on file system as well as in memory after IPL. The default address is 0x80000. parmfile=PARMFILE[,ADDRESS] Specifies the location of the parameter file on the file system as well as in memory after IPL. The default address is 0x1000. parameters=’PARAMETERS’ Specifies the parameters for the kernel. Surround the parameter list with either quotation marks or apostrophes. For example, if you need to use quotation marks within the parameter list, you can surround the parameter list with apostrophes. Setting this parameter causes a file called ″parmfile″ containing the given parameters to be created in the target directory. At IPL that file will be loaded to the default address 0x1000. Note: This setting overrides parmfile settings both on the command line and in the configuration section. Any existing parmfile will be overwritten if zIPL creates a new parmfile from the parameter settings. dumpto=PARTITION Specifies the partition on which the dump will be located after IPL. See “Examples” for an example configuration file. Examples Example zIPL command: This section shows how to use zIPL from the command line, equivalently to SILO. The following example shows how to install a boot loader with an image and a parmfile. zipl --target=/mnt/boot --image=/mnt/boot/image --parmfile=/mnt/boot/parmfile The parmfile could look like this: root=/dasda1 ro dasd=fd00 Results: 1. zIPL will issue a warning ″No configuration file found″. This can be ignored. 2. zIPL will install the boot loader on the device of the target directory. Example configuration file: This example configuration file has two configurations. The first one (the default) is called ipl and installs a boot loader. The second is called dumptape and prepares a tape device, /dev/rtibm0, for dumping. [defaultboot] default=ipl [ipl] target=/boot image=/boot/image ramdisk=/boot/initrd parameters=’root=/dev/ram0 ro’ [dumptape] target=/boot dumpto=/dev/rtibm0 138 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Example zIPL commands with configuration file: This section shows the effects some commands would have assuming that the configuration file above is used. v Calling zIPL to use the default configuration file settings: zipl Result: zIPL reads the default option from the defaultboot section and selects section ipl. Then it installs a boot loader that will load /boot/image, /boot/initrd and /boot/parmfile. A parmfile will be created with the following contents: ’root=/dev/ram0 ro’ v Calling zIPL to create a dump tape: zipl dumptape Result: zIPL selects section dumptape and prepares a dump tape on /dev/rtibm0. v Calling zIPL to create a boot loader with another image rather than the one in the configuration file: zipl --image=/boot/otherimage Result: zIPL reads the default option from defaultboot and selects section ipl. Then it installs a boot loader that will load /boot/otherimage, /boot/initrd and /boot/parmfile. A parmfile will be created with the following contents: ’root=/dev/ram0 ro’ Chapter 13. Useful Linux commands 139 ifconfig - Configure a network interface Usage ifconfig is used to configure the kernel-resident network interfaces. It is used at startup time to set up interfaces as necessary. After that, it is usually only needed when debugging or when system tuning is needed. v If no arguments are given, ifconfig displays the status of the currently active interfaces. v If a single interface argument is given, it displays the status of the given interface only v Otherwise, it configures an interface. The configurable interfaces for S/390 are: – iucv – ctci (i = 0 to 255) – esconj (j = 0 to 255) Note: Since kernel release 2.2 there are no explicit interface statistics for alias interfaces anymore. The statistics printed for the original address are shared with all alias addresses on the same device. If you want per-address statistics you should add explicit accounting rules for the address using the ipchains command. Format Display active interface status WW ifconfig WY Display status of given interface WW ifconfig interface 140 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY Activate or shut down an interface WW ifconfig address_family OPTIONS address WY OPTIONS: interface ?? down metric N ?? W multicast (1) up (2) ?? (1) mtu N netmask address W (1) txqueuelen length Notes: 1 Distribution dependent 2 This should not normally be needed as the drivers set the flag correctly themselves. address_family If the first argument after the interface name is recognized as the name of a supported address family, that address family is used for decoding and displaying all protocol addresses. On S/390, supported address families include: v inet interface The name of the interface. This is usually a driver name followed by a unit number, for example eth0 for the first Ethernet interface. On S/390 the supported interfaces include: v escon0 - escon255 v ctc0 - ctc255 v iucv0 v lo0 (loopback device) v eth0 v tr0 up This flag causes the interface to be activated. It is implicitly specified if an address is assigned to the interface. down This flag causes the driver for this interface to be shut down. Chapter 13. Useful Linux commands 141 metric N This parameter sets the interface metric.8 mtu N This parameter sets the maximum transfer unit (MTU) of an interface. netmask addr Set the IP network mask for this interface. This value defaults to the usual class A, B or C network mask (as derived from the interface IP address), but it can be set to any value. multicast Set the multicast flag on the interface. This should not normally be needed as the drivers set the flag correctly themselves. address The IP address to be assigned to this interface. txqueuelen length Set the length of the transmit queue of the device. It is useful to set this to small values for slower devices with a high latency (modem links, ISDN) to prevent fast bulk transfers from disturbing interactive traffic like Telnet too much. Files: /proc/net/socket /proc/net/dev 8. Metric: Cost of an OSPF interface. The cost is a routing metric that is used in the OSPF link-state calculation. To set the cost of routes exported into OSPF, configure the appropriate routing policy. v Range: 1 through 65,535 v Default: 1 All OSPF interfaces have a cost, which is a routing metric that is used in the OSPF link-state calculation. Routes with lower total path metrics are preferred over those with higher path metrics. When several equal-cost routes to a destination exist, traffic is distributed equally among them. The cost of a route is described by a single dimensionless metric that is determined using the following formula: cost = ref-bandwidth / bandwidth Where ref-bandwidth is the reference bandwidth. Its default value is 100 Mbps (which you specify as 100000000), which gives a metric of 1 for any bandwidth that is 100 Mbps or greater. 142 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Examples To start or modify an ESCON interface in Linux: ifconfig escon0 x.x.x.x pointopoint y.y.y.y netmask 255.255.255.255 mtu mmmmm where: x.x.x.x is the IP address of the Linux side y.y.y.y is the IP address of the remote partner OS/390 mmmmm is the MTU size which could be up to 32760 - make sure the other side of the channel uses the same MTU size The ESCON CTC device addresses are defined in the kernel parameter file, or when loading the module: ...... ctc=0,0xddd,0xyyy,escon0 Another example, showing how to set up an ethernet connection: ifconfig eth0 192.168.100.11 netmask 255.255.255.0 broadcast 192.168.100.255 mtu 1492 up or, simply: ifconfig eth0 192.168.100.11 Chapter 13. Useful Linux commands 143 insmod - Load a module into the Linux kernel Usage insmod installs a loadable module in the running kernel. It tries to link a module into the kernel by resolving global symbols in the module with values from the kernel’s symbol table. If the object file name is given without extension, insmod will search for the module in common default directories. The environment variable MODPATH can be used to override this default. Format Load a module into the kernel WW insmod W Z symbol OPTIONS = ’ ″ module_name (1) value ″ object_file W (1) WY ’ OPTIONS: -f -k -m -p -s -x -X -v Notes: 1 Both quotes are needed to prevent the shell from stripping the quote characters from the parameter. This can also be accomplished using the escape character ’\’. object_file Name of module source file. (Name by which module is invoked.) module_name Explicit name of module if not derived from the name of the source file. symbol Name of parameter specific to module. 144 value Value of parameter to be passed to module. -f Attempt to load the module even if the version of the running kernel and the version of the kernel for which the module was compiled do not match. -k Set the auto-clean flag on the module. This flag will be used to remove modules that have not been used in some period of time (usually one minute). -m Output a load map, making it easier to debug the module in the event of a kernel panic. Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) -p Probe the module to see if it could be successfully loaded. This includes locating the object file in the module path, checking version numbers, and resolving symbols. -s Output everything to syslog instead of the terminal. -X Export the external symbols of the module. -x Do not export the external symbols of the module. -v Verbose mode. Examples DASD module insmod dasd_mod dasd=192-194,5a10 XPRAM module insmod xpram devs=4 sizes=2097152,8388608,4194304,2097152 CTC module insmod ctc setup=\"ctc=0,0x0600,0x0601,ctc0\" LCS module insmod lcs additional_model_info=0x70,3,0x71,5 devno_portno_pairs=0x1c00,0,0x1c02,1,0x1d00,-1 QDIO module insmod qdio OSA Express module insmod qeth qeth_options=noauto,0x400,0x401,0x402,0x200,0x201,0x202,secondary_router Chapter 13. Useful Linux commands 145 modprobe - Load a module with dependencies into the Linux kernel Usage modprobe installs a loadable module and all its dependencies in the running kernel. The dependency information is created by depmod (see “depmod - Create dependency descriptions for loadable kernel modules” on page 150). It tries to link a module into the kernel by resolving global symbols in the module with values from the kernel’s symbol table. If there are still unresolved symbols it will try to satisfy these by loading further modules. If the object file name is given without extension, modprobe will search for the module in common default directories. The environment variable MODPATH can be used to override this default. Format Load a module with dependencies into the kernel WW modprobe W Z symbol OPTIONS = ’ ″ (1) -C /etc/modules.conf -C configfile value ″ module_name (1) W WY ’ OPTIONS: -a -d -k -n -q -s -v Notes: 1 Both quotes are needed to prevent the shell from stripping the quote characters from the parameter. This can also be accomplished using the escape character ’\’. List matching modules WW modprobe 146 -l -C /etc/modules.conf -C configfile Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) -t type pattern WY Show configuration WW modprobe -c -C /etc/modules.conf -C configfile WY Remove module (stacks) or do autoclean WW modprobe -r OPTIONS -C /etc/modules.conf -C configfile W Z module_name W WY OPTIONS: -d -n -v The parameters for the modprobe command are: module_name Explicit name of module. (Name by which module is invoked.) symbol Name of parameter specific to module. value Value of parameter to be passed to module. pattern Module name pattern, which may include wildcard characters. -a Load all matching modules (default is to stop after first success). -d Show debugging information. -k Set the auto-clean flag on the module. This flag will be used to remove modules that have not been used in some period of time (usually one minute). -n Probe the module to see if it (and its dependencies) could be successfully loaded, but do not load the module. -q Suppress error messages. -s Send the report to syslog instead of stderr. -t Only consider modules of type <type>. -v Verbose mode. Chapter 13. Useful Linux commands 147 Comments Note that this list is not comprehensive. See man modprobe for information on the full set of parameters. Examples OSA Express module modprobe qeth This will attempt to load the qeth network driver. It will find a dependency on qdio, load the qdio base support automatically, and then load qeth. 148 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) lsmod - List loaded modules Usage lsmod lists all loaded modules in the running kernel. Format list modules WW lsmod WY Examples # lsmod Module qeth qdio # Size Used by 135680 1 (autoclean) 22992 1 (autoclean) [qeth] Chapter 13. Useful Linux commands 149 depmod - Create dependency descriptions for loadable kernel modules Usage depmod creates a dependency file based on the symbols found in a set of modules. This information is used by modprobe (qv). Format Create dependencies for all files in a directory WW depmod W OPTIONS -C /etc/modules.conf -C configfile -F /System.map -b /lib/modules -F kernelsyms -b directory W WY forced-version OPTIONS: -a -e -n -q -r -s -v -A -V Create dependencies for files WW depmod OPTIONS -F /System.map -F kernelsyms , Z module_name WY OPTIONS: -e -n -q -s -v module_name Explicit name of module 150 -a Search for modules in all directories specified in /etc/modules.conf or <configfile>. -b Use /lib/modules or <directory> as the starting point for the subtree containing the modules. -e Show all the unresolved symbols for each module. -n Write the dependency file on stdout instead of in the /lib/modules tree. Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) -q (quiet) Suppress error messages about missing symbols. -s Write all error messages via the syslog daemon instead of stderr. -v Show the name of each module as it is analyzed. -A Like depmod -a, but compare file timestamps and only update the dependency file if anything has changed. -C Use the file <configfile> instead of /etc/modules.conf. -F Use the symbol information found in <kernelsyms>. -V Show the release version of depmod. Examples depmod -e -n mymodule displays the unresolved references in mymodule on stdout. Chapter 13. Useful Linux commands 151 mke2fs - Create a file system on DASD Usage This utility creates an ext2 file system on a DASD hard disk. The device must already have a low-level format. Format mke2fs syntax WW mke2fs -b 4096 -b blocksize device WY -b blocksize Specifies the blocksize. Default is 4096. The blocksize needs to be a multiple of the blocksize specified on the dasdfmt command. This allows you to use block sizes up to the hardware maximum of 4096. device Specifies the device node. Examples mke2fs -b 4096 /dev/dasd/<devno>/part<x> 152 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 14. VIPA – minimize outage due to adapter failure This chapter describes how you use VIPA (Virtual IP Address) to assign IP addresses to a system, instead of to individual adapters. Using VIPA, you can minimize outage caused by adapter failure. Note: The VIPA functionality requires a kernel built with the CONFIG_DUMMY option. | | Standard VIPA Purpose VIPA is a facility for assigning an IP address to a system, instead of to individual adapters. It is supported by the Linux kernel. Usage These are the main steps you must follow to set up VIPA in Linux : 1. Create a dummy device using the Linux insmod command. 2. Assign a virtual IP address to the dummy device. 3. Ensure that your service (for example, the Apache Web server) listens to the virtual IP address assigned above. 4. Set up routes to the virtual IP address, on clients or gateways. To do so, you can use either: v Static routing (shown in the example of Figure 7 on page 154). v Dynamic routing. For details of how to configure routes, you must refer to the documentation delivered with your routing daemon (for example, zebra or gated). If outage of an adapter occurs, you must switch adapters. v To do so under static routing, you should: 1. Delete the route that was set previously. 2. Create an alternative route to the virtual IP address. v To do so under dynamic routing, you should refer to the documentation delivered with your routing daemon for details. Example This example assumes static routing is being used, and shows you how to: 1. Configure VIPA under static routing. 2. Switch adapters when an adapter outage occurs. Figure 7 on page 154 shows the network adapter configuration used in the example. © Copyright IBM Corp. 2000, 2002 153 Figure 7. Example of using Virtual IP Address (VIPA) 1. Create a dummy device. insmod dummy 2. Assign a virtual IP address (9.164.100.100) to the dummy device. ifconfig dummy0 9.164.100.100 3. Ensure that the service listens to the virtual IP address. 4. Set up a route to the virtual IP address (static routing), so that VIPA can be reached via the gateway with address 10.1.0.2. | | | route add -host 9.164.100.100 gw 10.1.0.2 Now we assume an adapter outage occurs. We must therefore: 1. Delete the previously-created route. | route delete -host 9.164.100.100 2. Create the alternative route to the virtual IP address. route add -host 9.164.100.100 gw 10.2.0.2 154 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Chapter 15. Kernel parameters There are two different ways of passing parameters to Linux : v Passing parameters to your kernel at startup time. (The parameter line) v Configuring your boot loader to always pass those parameters. The kernel can only handle a parameter line file that is no larger than 896 bytes. The parameters which affect Linux for S/390 in particular are: v ipldelay v maxcpus v v v v v v v mem noinitrd ramdisk_size ro root vmhalt cio_msg © Copyright IBM Corp. 2000, 2002 155 ipldelay Usage When you do a power on reset (POR), some activation and loading is done. This can cause Linux not to find the OSA-2 card. If you have problems with your OSA-2 card after booting, you might want to insert a delay to allow the POR, microcode load and initialization to take place in the OSA-2 card. The recommended delay time is two minutes. For example, 30s means a delay of thirty seconds between the boot and the initialization of the OSA-2 card, 2m means a delay of two minutes. The value xy must be a number followed by either s or m. Format ipldelay syntax WW ipldelay = xy m xy s Examples This example delays the initialization of the card by 2 minutes: ipldelay=2m This example delays the initialization of the card by 30 seconds: ipldelay=30s 156 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY maxcpus Usage Specifies the maximum number of CPUs that Linux can use. Format maxcpus syntax WW maxcpus = number WY Examples maxcpus=2 Chapter 15. Kernel parameters 157 mem Usage Restricts memory usage to the size specified. This must be used to overcome initialization problems on a P/390. Format mem syntax WW mem = xx M yyyyyy K Examples mem=64M Restricts the memory Linux can use to 64MB. mem=123456K Restricts the memory Linux can use to 123456KB. 158 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY noinitrd Usage The noinitrd statement is required when the kernel was compiled with initial RAM disk support enabled. This command bypasses using the initial ramdisk. This can be useful if the kernel was used with a RAM disk for the initial startup, but the RAM disk is not required when booted from a DASD Format noinitrd syntax WW noinitrd WY Chapter 15. Kernel parameters 159 ramdisk_size Usage Specifies the size of the ramdisk in kilobytes. Format ramdisk_size syntax WW ramdisk_size = size Examples ramdisk_size=32000 160 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY ro Usage Mounts the root file system read-only. Format ro syntax WW ro WY Chapter 15. Kernel parameters 161 root Usage Tells Linux what to use as the root when mounting the root file system. Format root syntax WW root = rootdevice Examples Without devfs this makes Linux use /dev/dasda1 when mounting the root file system: root=/dev/dasda1 With devfs this could be: root=/dev/dasd/0182/part1 162 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY vmhalt Usage Specifies a command to be issued after a shutdown on VM. Format vmhalt syntax WW vmhalt = command WY Examples This example specifies that an initial program load of CMS should follow a shutdown on VM: vmhalt="i cms" Chapter 15. Kernel parameters 163 cio_msg Usage Specifies whether I/O messages are to be sent to the console on boot-up. These messages are usually suppressed (cio_msg=no) because on large machines with many attached devices the I/O layer generates a large number of these messages which can flood the console for a significant period of time. If you do need those messages (for example for debugging) you can switch them on manually using cio_msg=yes. Format cio_msg syntax WW cio_msg = no yes Examples This example switches I/O messages to the console on boot: cio_msg=yes 164 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) WY Chapter 16. Overview of the parameter line file The parameter line file contains kernel parameters which are read by Linux during the boot process. This chapter describes the format of the parameters in this file. © Copyright IBM Corp. 2000, 2002 165 Parameters Comments The parameters allowed in the parameter line are described in Chapter 15, “Kernel parameters” on page 155 and/or together with the description of the device drivers. Usage The parameter line file contains data to be passed to the kernel for evaluation at startup time. The location from which the kernel reads this file varies with the IPL method as shown below: IPL method Location of parameter line file DASD Installed into the boot sector using zipl (option –p) Tape Second file on tape VM reader Second file in reader CD-ROM Third entry in the .ins file (with load address 0x00010480) Format The kernel parameter file consists of a single line containing at most 896 bytes. The line may either be encoded in ASCII or in EBCDIC. It contains a list of kernel options (see kernel parameters, device driver parameters) separated by blanks. For IPL from a VM reader the kernel parameter file must be broken into fixed length records of 80 bytes. Note that a record end does not separate two options. Therefore if an option ends at the end of a record the next record should begin with a blank character. Examples Here is an example of a parameter line file: dasd=E0C0-E0C2 root=/dev/ram0 ro ipldelay=2m This defines three DASD, a read-only root file system, and a two-minute delay to allow network connection. Note that when loading from tape using an ASCII encoded parameter file (such as one generated on a UNIX or PC system) you must make sure that your parameter file does not span more than one line, is not larger than 896 bytes, and contains no special characters (for example tabs or new lines). 166 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Appendix A. Reference information LCS parameter syntax . . . . . . . . LCS module parameter syntax (without the channel device layer) . . . . . . . . . OSA-Express parameter syntax . . . . . . . 167 . . . 167 . 168 OSA-Express driver command syntax (without the channel device layer) . . . . . . . . . . . 168 Linux for S/390 Major/Minor numbers. . . . . 169 LCS parameter syntax The LCS channel device layer boot parameters are as follows: chandev= lcs lcsnum lcs_read_devno lcs_write_devno memory_usage_in_k relative_adapter_no checksum_received_ip_pkts use_hw_stats Device number. Read channel address. Write channel address. Total buffer size to allocate. Relative adapter number. Perform checksum on inbound packets. Get network statistics from the LANSTAT LCS primitive. LCS module parameter syntax (without the channel device layer) The following are the LCS device driver module parameters: use_hw_stats do_sw_ip_checksumming ignore_sense additional_model_info devno_portno_pairs noauto Get network statistics from the LANSTAT LCS primitive. Perform checksum on inbound packets. Boot devices which do not report a valid sense_id Model/maximum relative adapter number pairs. Matching pairs of device numbers and port numbers. noauto=1 disables auto-detection. For a description of the parameters see “Device identification (CTC/ESCON and LCS)” on page 53. © Copyright IBM Corp. 2000, 2002 167 OSA-Express parameter syntax This driver is subject to license conditions as reflected in: “International License Agreement for Non-Warranted Programs” on page 205. The OSA-Express channel device layer boot parameters are as follows: chandev= qeth osanum osa_read_devno osa_write_devno osa_data_devno memory_usage_in_k port_no checksum_received_ip_pkts Device number. Read channel address. Write channel address. Data channel address. Total buffer size to allocate. Relative port number. Perform checksum on inbound packets. OSA-Express driver command syntax (without the channel device layer) This driver is subject to license conditions as reflected in: “International License Agreement for Non-Warranted Programs” on page 205. There is a single keyword parameter for the OSA-Express driver: qeth_options This parameter is used as follows: (Note that all characters must be in the case shown, except for hexadecimal numbers where case is irrelevant.) qeth_options=[<driver options>,][<card options>,[<card options>,...]] <driver options> is a comma separated list that sets the driver defaults. It can contain the following keywords: auto noauto no_router primary_router secondary_router sw_checksumming hw_checksumming no_checksumming prio_queueing_tos prio_queueing_prec no_prio_queueing no_prio_queueing: <number> 168 turns on auto-detection turns off auto-detection does not prepare the device as a router (default) makes the device a primary router makes the device a secondary router checksumming is to be performed by the software checksumming is to be performed by the hardware checksumming is not to be used priority queueing based on the IP type of service field priority queueing based on the IP precedence field switch off priority queueing switch off priority queueing and set the default queue to <number> Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) <card options> are used to override the global options for a particular device. These are also comma-separated lists and each list consists of three device numbers (decimal, or hex starting with 0x), an optional device name, and any of the driver options keywords except auto or noauto. For a description of the parameters see “OSA-Express feature in QDIO mode QETH parameter syntax” on page 101. Linux for S/390 Major/Minor numbers The major and minor numbers currently allocated to S/390 devices are: Device Major number Minor numbers DASD 94 + dynamic 0,4,8..252. – Volume, Other numbers (1...255) – Partitions XPRAM 35 0–31 Appendix A. Reference information 169 170 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Appendix B. Kernel building Building the kernel . . . . . . . . Preliminary steps . . . . . . . . Configuring the parameters . . . . Checking the configuration . . . . . Checking the dependencies . . . . . Compiling the kernel . . . . . . . Installing the modules . . . . . . Finishing off. . . . . . . . . . Using ’config’ or ’oldconfig’ . . . . . Sample output listing. . . . . . . Cross-reference to configuration options Using ’menuconfig’ . . . . . . . . File handling . . . . . . . . . Main menu . . . . . . . . . . Code maturity level options . . . . Loadable module support . . . . . Processor type and features. . . . . General setup . . . . . . . . . Block device drivers . . . . . . . Multi-device support (RAID and LVM) . Character device drivers. . . . . . Network device drivers . . . . . . Networking options . . . . . . . Filesystems . . . . . . . . . . Native Language Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 172 173 173 174 174 175 175 175 175 179 180 180 181 182 182 182 182 183 183 184 184 185 187 189 Kernel hacking . . . . . . . . . . . Load an alternative configuration file . . . Save configuration to an alternative file . . Exit ’menuconfig’ . . . . . . . . . . Kernel parameter options . . . . . . . . IEEE FPU emulation . . . . . . . . . Built-in IPL record support . . . . . . . IPL method generated into head.S . . . . Enable /proc/deviceinfo entries . . . . . Channel device layer support . . . . . . Support for DASD devices . . . . . . . Support for ECKD disks. . . . . . . . Support for FBA disks . . . . . . . . XPRAM device support . . . . . . . . CTC/ESCON device support . . . . . . IUCV device support . . . . . . . . . OSA-Express device support . . . . . . Support for 3215 line mode terminal . . . Support for console output on 3215 line mode terminal . . . . . . . . . . . . . Support for 3270 console . . . . . . . Support for hardware console . . . . . . Console output on hardware console . . . Tape device support . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 190 190 190 192 192 193 193 193 193 194 194 194 195 195 195 196 196 . . . . . 196 197 197 197 198 Building the kernel Before deciding to change the details in the kernel source code, consider whether installing one of the Linux images provided in the Linux for S/390 kernel patches will be a more appropriate solution to your requirements. Your build system must have the following software installed (as a minimum): v kernel source 2.2.16 with the Linux for S/390 patch v gcc version 2.95.2 or later supporting Linux for S/390 v binutils version 2.9.1 or later supporting Linux for S/390 v glibc 2.1.2 or later supporting Linux for S/390 v sed v bash v make version 3.77 or later. The following assumptions are made: v You are confident in your ability to modify the kernel parameters without severely damaging the system © Copyright IBM Corp. 2000, 2002 171 v You cannot locate a pre-compiled kernel image that meets your requirements (that is, a suitable kernel does not already exist) v You are able to make an emergency IPL tape available (or preferably a complete backup on tape). If you decide to modify your Linux for S/390 kernel, you should use the instructions outlined in the following sections. In this way you will be sure of completing all of the tasks necessary to ensure the system runs properly when you have finished. For example, you might have to install and link additional modules after you have compiled and installed the kernel. 1. “Preliminary steps” 2. “Configuring the parameters” on page 173 3. “Checking the configuration” on page 173 4. “Checking the dependencies” on page 174 5. “Compiling the kernel” on page 174 6. “Installing the modules” on page 175 7. “Finishing off” on page 175 Note: The OCO device drivers supplied by IBM have been compiled with chandev, multicast, token ring and ethernet support. If you recompile the kernel without these options some or all of the IBM drivers will not work. If you switch on Loadable module support -> Set version information on all module symbols you may also encounter problems, as these OCO modules are compiled without version information. Preliminary steps Before working with the kernel, there are a number of precautions that you should take: v Make a backup copy of the current kernel and all modules corresponding to this kernel. It is important to make a backup even if you are replacing your kernel with a new version. This is because the new system might not run properly and you can use the backup to reload the old system v Decide whether you want to modify the complete kernel, or only change some modules. If you only change some modules, you might not have to build the kernel. If you are upgrading or replacing the kernel, obtain the new kernel or patch and load it into the directory /usr/src. This will probably create a new directory usr/src/linux, which will overwrite your last version of the kernel source. You will need to check the symbolic links to the /usr/include directory to ensure the following two links are valid: v ln -sf /usr/src/linux/include/linux /usr/include/linux v ln -sf /usr/src/linux/include/asm /usr/include/asm Your first step in modifying the kernel, is to change to the /usr/src/linux directory and enter the command make distclean. This cleans up the Linux for S/390 distribution, resetting all options to their default values and removing all object files from the system. If you enter make clean instead of make distclean, you will only delete the object files. 172 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Configuring the parameters To configure the parameters, make sure you are in the /usr/src/linux directory and enter the command make config. In make config, you select what you want to include in the resident kernel and what features you want to have available as dynamically loadable modules. See “Using ’config’ or ’oldconfig’” on page 175 for an example of a make config listing. You will generally select the minimal resident set that is needed to boot: v The type of file system used for your root partition (for example, ext2) v Normal hard disk drive support (for example, DASD) v Network support v TCP/IP support. The set of modules is constantly increasing, and you will be able to select the option (M) when responding to the prompts shown in make config for those features that the current kernel can offer as loadable modules. You can completely enable or disable the use of your set of modules by using the CONFIG_MODVERSIONS option during make config. make config requires bash to allow it work. Bash will be searched for in $BASH, /bin/bash and /bin/sh (in that order), so it must be located in one of these directories for it to work. make config must be performed even if you are only upgrading to the next patch. New configuration options are added in each release, and odd problems will turn up if the configuration files are not set up as expected. If you want to upgrade your existing configuration with minimal work, use make oldconfig, which will keep your old kernel and only ask you questions about new or modified options. Alternative configuration commands are: v make menuconfig — Text based menus, radiolists and windows, see “Using ’menuconfig’” on page 180 v make oldconfig — Same as make config except all questions based on the contents of your existing ./.config file v make xconfig — This X windows based configuration tool is currently not available with Linux for S/390. Notes on make config: v Keeping unnecessary drivers in the Linux for S/390 kernel will make it bigger, and can cause problems: for example, unnecessary networking options might confuse some drivers. v Selecting the kernel hacking option and changing the source code directly usually result in a bigger or slower Linux for S/390 kernel (or both). Thus you should probably answer (N) to the questions for development, experimental, or debugging features. Checking the configuration There are a pair of scripts that check the source tree for problems. These scripts do not have to be run each time you build the kernel, but it is a good idea to check for these types of errors and discrepancies at regular intervals. make checkconfig checks the source tree for missing instances of #include <linux>. This needs to be done occasionally, because the C preprocessor will silently give bad results if these symbols haven’t been included (it treats undefined symbols in Appendix B. Kernel building 173 preprocessor directives as defined to 0). Superfluous uses of #include <linux> are also reported, but you can ignore these, because smart CONFIG_* dependencies make them harmless. You can run make checkconfig without configuring the kernel. Also, make checkconfig does not modify any files. make checkhelp checks the source tree for options that are in Config.in files but are not documented in scripts/Configure.help. Again, this needs to be done occasionally. If you have hacked the kernel and changed configuration options or are adding new ones, it is a good idea to make checkhelp (and add help as necessary) before you publish your patch. Also, make checkhelp does not modify any files. Checking the dependencies All of the source dependencies must be set each time you configure a new Linux for S/390 kernel. Enter make dep to set up all the dependencies correctly. make dep is a synonym for the long form, make depend. This command performs two tasks: v It computes dependency information about which .o files depend on which .h files. It records this information in a top-level file named .hdepend and in one file per source directory named .depend. v If you have CONFIG_MODVERSIONS enabled, make dep computes symbol version information for all of the files that export symbols (note that both resident and modular files can export symbols). If you do not enable CONFIG_MODVERSIONS, you only have to run make dep once, right after the first time you configure the kernel. The .hdepend files and the .depend file are independent of your configuration. If you do enable CONFIG_MODVERSIONS, you must run make dep because the symbol version information depends on the configuration. Compiling the kernel Enter make image to create a Linux for S/390 kernel image. This compiles the source code and leaves the kernel image in the current directory (usually /usr/src/linux/arch/s390/boot). Note that make zImage and make bzImage are not supported by the Linux for S/390 kernel. Compiling for IPL from tape If you want to make a boot tape, you must transfer a set of files to the IPL tape. The files, image.tape.bin (renamed as image.txt), parm.line, and initrd.bin (renamed as initrd.txt) are the ones used during the installation process. If you want to IPL from tape, ensure that the following configuration settings are used: v CONFIG_IPL is set v CONFIG_IPL_TAPE is set v CONFIG_BLK_DEV_RAM is set v CONFIG_BLK_DEV_INITRD is set. Additionally you should keep the default configuration settings to make sure that all requirements to get a running Linux for S/390 kernel are met. 174 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Installing the modules If you configured any of the parts of the Linux for S/390 kernel as modules by selecting (M) in the kernel parameter option, you will have to create the modules and then link them to the kernel. You create the modules by entering the command make modules. This will compile all of the modules and update the linux/modules directory. This directory will now contain a set of symbolic links, pointing to the various object files in the kernel tree. After you have created all your modules, you must enter make modules_install. This will copy all of the newly made modules into subdirectories under /lib/modules/kernel_release/, where kernel_release is 2.4 (the current kernel version). As soon as you have rebooted the newly made kernel, you can use the utilities insmod and rmmod to install and remove modules without recompiling the kernel. Read the man-pages for insmod and rmmod to find out how to configure and remove a module. Finishing off You should always keep a backup Linux for S/390 kernel available in case something goes wrong. This backup must also include the modules corresponding to that kernel. If you are installing a new kernel with the same version number as your working kernel, make a backup of your modules’ directory before you do a make modules_install. In order to boot your new kernel, you’ll need to copy the kernel image (found in /usr/src/linux/arch/s390/boot/image after compilation) to the place where your regular bootable kernel is located. This will be on your IPL tape. To see how to create a tape from which you can perform an IPL, refer to the installation manual for your Linux for S/390 distribution. Using ’config’ or ’oldconfig’ Use make config to configure all of the Linux for S/390 kernel options, or use make oldconfig to keep your current kernel options and change only those options that are new or have been modified in the latest kernel release. Use make config or make oldconfig when you only have access to a line based console. If you can use a screen based console, you might find make menuconfig gives you a better interface (see “Using ’menuconfig’” on page 180). The following output listing shows an example of the complete configuration script that results from a make config. See “Kernel parameter options” on page 192 for more information about individual options. Sample output listing Note: Appendix B. Kernel building 175 This is for illustration only. The prompts and responses on your system may not match these. The responses typed are shown in bold type. (The default responses are shown; the same results would occur if just the ENTER key was pressed each time.) [root@host /usr/src/linux# make config rm -f include/asm ( cd include ; ln -sf asm-s390 asm) /bin/sh scripts/Configure arch/s390/config.in # # Using defaults found in .config # * * Code maturity level options * Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?] Y * * Loadable module support * Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y Set version information on all module symbols (CONFIG_MODVERSIONS) [Y/n/?] Y Kernel module loader (CONFIG_KMOD) [Y/n/?] Y * * Processor type and features * Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] Y IEEE FPU emulation (CONFIG_MATHEMU) [Y/n/?] Y * * General setup * Fast IRQ handling (CONFIG_FAST_IRQ) [Y/n/?] Y Builtin IPL record support (CONFIG_IPL) [Y/n/?] Y IPL method generated into head.S (tape, vm_reader) [vm_reader] vm_reader defined CONFIG_IPL_VM Networking support (CONFIG_NET) [Y/n/?] Y System V IPC (CONFIG_SYSVIPC) [Y/n/?] Y BSD Process Accounting (CONFIG_BSD_PROCESS_ACCT) [Y/n/?] Y Sysctl support (CONFIG_SYSCTL) [Y/n/?] Y Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [M/n/y/?] M Kernel support for MISC binaries (CONFIG_BINFMT_MISC) [M/n/y/?] M Show crashed user process info (CONFIG_PROCESS_DEBUG) [Y/n/?] Y * * Block device drivers * Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?] M Network block device support (CONFIG_BLK_DEV_NBD) [M/n/y/?] M RAM disk support (CONFIG_BLK_DEV_RAM) [M/n/y/?] M Default RAM disk size (CONFIG_BLK_DEV_RAM_SIZE) [24576] 24576 XPRAM disk support (CONFIG_BLK_DEV_XPRAM) [M/n/y/?] M * * S/390 block device drivers * Support for DASD devices (CONFIG_DASD) [M/n/y/?] M Support for ECKD Disks (CONFIG_DASD_ECKD) [M/n/?] M Automatic activation of ECKD module (CONFIG_DASD_AUTO_ECKD) [Y/n/?] Y Support for FBA Disks (CONFIG_DASD_FBA) [M/n/?] M Automatic activation of FBA module (CONFIG_DASD_AUTO_FBA) [Y/n/?] Y Support for DIAG access to CMS reserved Disks (CONFIG_DASD_DIAG) [M/n/?] M Automatic activation of DIAG module (CONFIG_DASD_AUTO_DIAG) [Y/n/?] Y * * Multi-device support (RAID and LVM) * Multiple devices driver support (RAID and LVM) (CONFIG_MD) [Y/n/?] Y RAID support (CONFIG_BLK_DEV_MD) [M/n/y/?] M Linear (append) mode (CONFIG_MD_LINEAR) [M/n/?] M RAID-0 (striping) mode (CONFIG_MD_RAID0) [M/n/?] M RAID-1 (mirroring) mode (CONFIG_MD_RAID1) [M/n/?] M RAID-4/RAID-5 mode (CONFIG_MD_RAID5) [M/n/?] M Logical volume manager (LVM) support (CONFIG_BLK_DEV_LVM) [M/n/y/?] M * * Character device drivers * Unix98 PTY support (CONFIG_UNIX98_PTYS) [Y/n/?] Y Maximum number of Unix98 PTYs in use (0-2048) (CONFIG_UNIX98_PTY_COUNT) [256] 256 * * S/390 character device drivers * Support for locally attached 3270 tubes (CONFIG_TN3270) [M/n/y/?] M Support for 3215 line mode terminal (CONFIG_TN3215) [Y/n/?] Y Support for console on 3215 line mode terminal (CONFIG_TN3215_CONSOLE) [Y/n/?] Y Support for HWC line mode terminal (CONFIG_HWC) [Y/n/?] Y console on HWC line mode terminal (CONFIG_HWC_CONSOLE) [Y/n/?] Y S/390 tape device support (CONFIG_S390_TAPE) [M/n/y/?] M * * S/390 tape interface support * Support for tape character devices (CONFIG_S390_TAPE_CHAR) [Y/n/?] Y Support for tape block devices (CONFIG_S390_TAPE_BLOCK) [Y/n/?] Y * * S/390 tape hardware support * Support for 3490 tape hardware (CONFIG_S390_TAPE_3490) [Y/n/?] Y Support for 3480 tape hardware (CONFIG_S390_TAPE_3480) [Y/n/?] Y * * Network device drivers * Network device support (CONFIG_NETDEVICES) [Y/n/?] Y 176 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Dummy net driver support (CONFIG_DUMMY) [M/n/y/?] M Bonding driver support (CONFIG_BONDING) [M/n/y/?] M EQL (serial line load balancing) support (CONFIG_EQUALIZER) [M/n/y/?] M Universal TUN/TAP device driver support (CONFIG_TUN) [M/n/y/?] M Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?] Y Token Ring driver support (CONFIG_TR) [Y/n/?] Y FDDI driver support (CONFIG_FDDI) [Y/n/?] Y * * S/390 network device drivers * Channel Device Configuration (CONFIG_CHANDEV) [Y/n/?] Y CTC device support (CONFIG_CTC) [M/n/y/?] M IUCV device support (VM only) (CONFIG_IUCV) [M/n/y/?] M * * Networking options * Packet socket (CONFIG_PACKET) [M/n/y/?] M Packet socket: mmapped IO (CONFIG_PACKET_MMAP) [Y/n/?] Y Kernel/User netlink socket (CONFIG_NETLINK) [Y/n/?] Y Routing messages (CONFIG_RTNETLINK) [Y/n/?] Y Netlink device emulation (CONFIG_NETLINK_DEV) [M/n/y/?] M Network packet filtering (replaces ipchains) (CONFIG_NETFILTER) [Y/n/?] Y Network packet filtering debugging (CONFIG_NETFILTER_DEBUG) [Y/n/?] Y Socket Filtering (CONFIG_FILTER) [Y/n/?] Y Unix domain sockets (CONFIG_UNIX) [M/n/y/?] M TCP/IP networking (CONFIG_INET) [Y/n/?] Y IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?] Y IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?] Y IP: policy routing (CONFIG_IP_MULTIPLE_TABLES) [Y/n/?] Y IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK) [Y/n/?] Y IP: fast network address translation (CONFIG_IP_ROUTE_NAT) [Y/n/?] Y IP: equal cost multipath (CONFIG_IP_ROUTE_MULTIPATH) [Y/n/?] Y IP: use TOS value as routing key (CONFIG_IP_ROUTE_TOS) [Y/n/?] Y IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE) [Y/n/?] Y IP: large routing tables (CONFIG_IP_ROUTE_LARGE_TABLES) [Y/n/?] Y IP: kernel level autoconfiguration (CONFIG_IP_PNP) [Y/n/?] Y IP: BOOTP support (CONFIG_IP_PNP_BOOTP) [Y/n/?] Y IP: RARP support (CONFIG_IP_PNP_RARP) [Y/n/?] Y IP: tunneling (CONFIG_NET_IPIP) [M/n/y/?] M IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [M/n/y/?] M IP: broadcast GRE over IP (CONFIG_NET_IPGRE_BROADCAST) [Y/n/?] Y IP: multicast routing (CONFIG_IP_MROUTE) [Y/n/?] Y IP: PIM-SM version 1 support (CONFIG_IP_PIMSM_V1) [Y/n/?] Y IP: PIM-SM version 2 support (CONFIG_IP_PIMSM_V2) [Y/n/?] Y IP: ARP daemon support (EXPERIMENTAL) (CONFIG_ARPD) [Y/n/?] Y IP: TCP Explicit Congestion Notification support (CONFIG_INET_ECN) [Y/n/?] Y IP: TCP syncookie support (disabled per default) (CONFIG_SYN_COOKIES) [Y/n/?] Y * * IP: Netfilter Configuration * Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) [M/n/y/?] M FTP protocol support (CONFIG_IP_NF_FTP) [M/n/?] M Userspace queueing via NETLINK (EXPERIMENTAL) (CONFIG_IP_NF_QUEUE) [M/n/y/?] M IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) [M/n/y/?] M limit match support (CONFIG_IP_NF_MATCH_LIMIT) [M/n/?] M MAC address match support (CONFIG_IP_NF_MATCH_MAC) [M/n/?] M netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [M/n/?] M Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT) [M/n/?] M TOS match support (CONFIG_IP_NF_MATCH_TOS) [M/n/?] M tcpmss match support (CONFIG_IP_NF_MATCH_TCPMSS) [M/n/?] M Connection state match support (CONFIG_IP_NF_MATCH_STATE) [M/n/?] M Unclean match support (EXPERIMENTAL) (CONFIG_IP_NF_MATCH_UNCLEAN) [M/n/?] M Owner match support (EXPERIMENTAL) (CONFIG_IP_NF_MATCH_OWNER) [M/n/?] M Packet filtering (CONFIG_IP_NF_FILTER) [M/n/?] M REJECT target support (CONFIG_IP_NF_TARGET_REJECT) [M/n/?] M MIRROR target support (EXPERIMENTAL) (CONFIG_IP_NF_TARGET_MIRROR) [M/n/?] M Full NAT (CONFIG_IP_NF_NAT) [M/n/?] M MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) [M/n/?] M REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) [M/n/?] M Packet mangling (CONFIG_IP_NF_MANGLE) [M/n/?] M TOS target support (CONFIG_IP_NF_TARGET_TOS) [M/n/?] M MARK target support (CONFIG_IP_NF_TARGET_MARK) [M/n/?] M LOG target support (CONFIG_IP_NF_TARGET_LOG) [M/n/?] M TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) [M/n/?] M ipchains (2.2-style) support (CONFIG_IP_NF_COMPAT_IPCHAINS) [M/n/y/?] M ipfwadm (2.0-style) support (CONFIG_IP_NF_COMPAT_IPFWADM) [M/n/y/?] M The IPv6 protocol (EXPERIMENTAL) (CONFIG_IPV6) [M/n/y/?] M IPv6: enable EUI-64 token format (CONFIG_IPV6_EUI64) [Y/n/?] Y IPv6: disable provider based addresses (CONFIG_IPV6_NO_PB) [Y/n/?] Y * * IPv6: Netfilter Configuration * IP6 tables support (required for filtering/masq/NAT) (CONFIG_IP6_NF_IPTABLES) [M/n/y/?] M limit match support (CONFIG_IP6_NF_MATCH_LIMIT) [M/n/?] M netfilter MARK match support (CONFIG_IP6_NF_MATCH_MARK) [M/n/?] M Packet filtering (CONFIG_IP6_NF_FILTER) [M/n/?] M Packet mangling (CONFIG_IP6_NF_MANGLE) [M/n/?] M MARK target support (CONFIG_IP6_NF_TARGET_MARK) [M/n/?] M Kernel httpd acceleration (EXPERIMENTAL) (CONFIG_KHTTPD) [M/n/y/?] M Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) (CONFIG_ATM) [Y/n/?] Y Classical IP over ATM (CONFIG_ATM_CLIP) [Y/n/?] Y Do NOT send ICMP if no neighbour (CONFIG_ATM_CLIP_NO_ICMP) [Y/n/?] Y LAN Emulation (LANE) support (CONFIG_ATM_LANE) [M/n/y/?] M Multi-Protocol Over ATM (MPOA) support (CONFIG_ATM_MPOA) [M/n/y/?] M * * * The IPX protocol (CONFIG_IPX) [M/n/y/?] M Appendix B. Kernel building 177 IPX: Full internal IPX network (CONFIG_IPX_INTERN) [Y/n/?] Y Appletalk protocol support (CONFIG_ATALK) [M/n/y/?] M DECnet Support (CONFIG_DECNET) [M/n/y/?] M DECnet: SIOCGIFCONF support (CONFIG_DECNET_SIOCGIFCONF) [Y/n/?] Y DECnet: router support (EXPERIMENTAL) (CONFIG_DECNET_ROUTER) [Y/n/?] Y DECnet: use FWMARK value as routing key (EXPERIMENTAL) (CONFIG_DECNET_ROUTE_FWMARK) [Y/n/?] Y 802.1d Ethernet Bridging (CONFIG_BRIDGE) [M/n/y/?] M CCITT X.25 Packet Layer (EXPERIMENTAL) (CONFIG_X25) [M/n/y/?] M LAPB Data Link Driver (EXPERIMENTAL) (CONFIG_LAPB) [M/n/y/?] M 802.2 LLC (EXPERIMENTAL) (CONFIG_LLC) [Y/n/?] Y Frame Diverter (EXPERIMENTAL) (CONFIG_NET_DIVERT) [Y/n/?] Y Acorn Econet/AUN protocols (EXPERIMENTAL) (CONFIG_ECONET) [M/n/y/?] M AUN over UDP (CONFIG_ECONET_AUNUDP) [Y/n/?] Y Native Econet (CONFIG_ECONET_NATIVE) [Y/n/?] Y WAN router (CONFIG_WAN_ROUTER) [M/n/y/?] M Fast switching (read help!) (CONFIG_NET_FASTROUTE) [Y/n/?] Y Forwarding between high speed interfaces (CONFIG_NET_HW_FLOWCONTROL) [Y/n/?] Y * * QoS and/or fair queueing * QoS and/or fair queueing (CONFIG_NET_SCHED) [Y/n/?] Y CBQ packet scheduler (CONFIG_NET_SCH_CBQ) [M/n/y/?] M CSZ packet scheduler (CONFIG_NET_SCH_CSZ) [M/n/y/?] M ATM pseudo-scheduler (CONFIG_NET_SCH_ATM) [Y/n/?] Y The simplest PRIO pseudoscheduler (CONFIG_NET_SCH_PRIO) [M/n/y/?] M RED queue (CONFIG_NET_SCH_RED) [M/n/y/?] M SFQ queue (CONFIG_NET_SCH_SFQ) [M/n/y/?] M TEQL queue (CONFIG_NET_SCH_TEQL) [M/n/y/?] M TBF queue (CONFIG_NET_SCH_TBF) [M/n/y/?] M GRED queue (CONFIG_NET_SCH_GRED) [M/n/y/?] M Diffserv field marker (CONFIG_NET_SCH_DSMARK) [M/n/y/?] M Ingress Qdisc (CONFIG_NET_SCH_INGRESS) [M/n/y/?] M QoS support (CONFIG_NET_QOS) [Y/n/?] Y Rate estimator (CONFIG_NET_ESTIMATOR) [Y/n/?] Y Packet classifier API (CONFIG_NET_CLS) [Y/n/?] Y TC index classifier (CONFIG_NET_CLS_TCINDEX) [M/n/y/?] M Routing table based classifier (CONFIG_NET_CLS_ROUTE4) [M/n/y/?] M Firewall based classifier (CONFIG_NET_CLS_FW) [M/n/y/?] M U32 classifier (CONFIG_NET_CLS_U32) [M/n/y/?] M Special RSVP classifier (CONFIG_NET_CLS_RSVP) [M/n/y/?] M Special RSVP classifier for IPv6 (CONFIG_NET_CLS_RSVP6) [M/n/y/?] M Traffic policing (needed for in/egress) (CONFIG_NET_CLS_POLICE) [Y/n/?] Y * * File systems * Quota support (CONFIG_QUOTA) [Y/n/?] Y Kernel automounter support (CONFIG_AUTOFS_FS) [M/n/y/?] M Kernel automounter version 4 support (also supports v3) (CONFIG_AUTOFS4_FS) [M/n/y/?] M Reiserfs support (CONFIG_REISERFS_FS) [M/n/y/?] M Have reiserfs do extra internal checking (CONFIG_REISERFS_CHECK) [Y/n/?] Y ADFS file system support (CONFIG_ADFS_FS) [M/n/y/?] M ADFS write support (DANGEROUS) (CONFIG_ADFS_FS_RW) [Y/n/?] Y Amiga FFS file system support (EXPERIMENTAL) (CONFIG_AFFS_FS) [M/n/y/?] M Apple Macintosh file system support (EXPERIMENTAL) (CONFIG_HFS_FS) [M/n/y/?] M BFS file system support (EXPERIMENTAL) (CONFIG_BFS_FS) [M/n/y/?] M DOS FAT fs support (CONFIG_FAT_FS) [M/n/y/?] M MSDOS fs support (CONFIG_MSDOS_FS) [M/n/?] M UMSDOS: Unix-like file system on top of standard MSDOS fs (CONFIG_UMSDOS_FS) [M/n/?] M VFAT (Windows-95) fs support (CONFIG_VFAT_FS) [M/n/?] M EFS file system support (read only) (EXPERIMENTAL) (CONFIG_EFS_FS) [M/n/y/?] M Journalling Flash File System (JFFS) support (EXPERIMENTAL) (CONFIG_JFFS_FS) [M/n/y/?] M JFFS debugging verbosity (0 = quiet, 3 = noisy) (CONFIG_JFFS_FS_VERBOSE) [0] 0 Compressed ROM file system support (CONFIG_CRAMFS) [M/n/y/?] M Virtual memory file system support (former shm fs) (CONFIG_TMPFS) [Y/n/?] Y Simple RAM-based file system support (CONFIG_RAMFS) [M/n/y/?] M ISO 9660 CDROM file system support (CONFIG_ISO9660_FS) [M/n/y/?] M Microsoft Joliet CDROM extensions (CONFIG_JOLIET) [Y/n/?] Y Minix fs support (CONFIG_MINIX_FS) [M/n/y/?] M NTFS file system support (read only) (CONFIG_NTFS_FS) [M/n/y/?] M NTFS write support (DANGEROUS) (CONFIG_NTFS_RW) [Y/n/?] Y OS/2 HPFS file system support (CONFIG_HPFS_FS) [M/n/y/?] M /proc file system support (CONFIG_PROC_FS) [Y/n/?] Y /dev file system support (EXPERIMENTAL) (CONFIG_DEVFS_FS) [Y/n/?] Y Automatically mount at boot (CONFIG_DEVFS_MOUNT) [Y/n/?] Y Debug devfs (CONFIG_DEVFS_DEBUG) [Y/n/?] Y /dev/pts file system for Unix98 PTYs (CONFIG_DEVPTS_FS) [Y/n/?] Y QNX4 file system support (read only) (EXPERIMENTAL) (CONFIG_QNX4FS_FS) [M/n/y/?] M QNX4FS write support (DANGEROUS) (CONFIG_QNX4FS_RW) [Y/n/?] Y ROM file system support (CONFIG_ROMFS_FS) [M/n/y/?] M Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] Y System V and Coherent file system support (read only) (CONFIG_SYSV_FS) [M/n/y/?] M SYSV file system write support (DANGEROUS) (CONFIG_SYSV_FS_WRITE) [Y/n/?] Y UDF file system support (read only) (CONFIG_UDF_FS) [M/n/y/?] M UDF write support (DANGEROUS) (CONFIG_UDF_RW) [Y/n/?] Y UFS file system support (read only) (CONFIG_UFS_FS) [M/n/y/?] M UFS file system write support (DANGEROUS) (CONFIG_UFS_FS_WRITE) [Y/n/?] Y * * Network File Systems * Coda file system support (advanced network fs) (CONFIG_CODA_FS) [M/n/y/?] M NFS file system support (CONFIG_NFS_FS) [Y/m/n/?] Y Provide NFSv3 client support (CONFIG_NFS_V3) [Y/n/?] Y Root file system on NFS (CONFIG_ROOT_NFS) [Y/n/?] Y NFS server support (CONFIG_NFSD) [Y/m/n/?] Y Provide NFSv3 server support (CONFIG_NFSD_V3) [Y/n/?] Y SMB file system support (to mount Windows shares etc.) (CONFIG_SMB_FS) [M/n/y/?] M Use a default NLS (CONFIG_SMB_NLS_DEFAULT) [Y/n/?] Y Default Remote NLS Option (CONFIG_SMB_NLS_REMOTE) [cp437] cp437 NCP file system support (to mount NetWare volumes) (CONFIG_NCP_FS) [M/n/y/?] M 178 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Packet signatures (CONFIG_NCPFS_PACKET_SIGNING) [Y/n/?] Y Proprietary file locking (CONFIG_NCPFS_IOCTL_LOCKING) [Y/n/?] Y Clear remove/delete inhibit when needed (CONFIG_NCPFS_STRONG) [Y/n/?] Y Use NFS namespace if available (CONFIG_NCPFS_NFS_NS) [Y/n/?] Y Use LONG (OS/2) namespace if available (CONFIG_NCPFS_OS2_NS) [Y/n/?] Y Lowercase DOS filenames (CONFIG_NCPFS_SMALLDOS) [Y/n/?] Y Use Native Language Support (CONFIG_NCPFS_NLS) [Y/n/?] Y Enable symbolic links and execute flags (CONFIG_NCPFS_EXTRAS) [Y/n/?] Y * * Partition Types * Advanced partition selection (CONFIG_PARTITION_ADVANCED) [Y/n/?] Y Acorn partition support (CONFIG_ACORN_PARTITION) [Y/n/?] Y ICS partition support (CONFIG_ACORN_PARTITION_ICS) [Y/n/?] Y Native filecore partition support (CONFIG_ACORN_PARTITION_ADFS) [Y/n/?] Y PowerTec partition support (CONFIG_ACORN_PARTITION_POWERTEC) [Y/n/?] Y RISCiX partition support (CONFIG_ACORN_PARTITION_RISCIX) [Y/n/?] Y Alpha OSF partition support (CONFIG_OSF_PARTITION) [Y/n/?] Y Amiga partition table support (CONFIG_AMIGA_PARTITION) [Y/n/?] Y Atari partition table support (CONFIG_ATARI_PARTITION) [Y/n/?] Y IBM disk label and partition support (CONFIG_IBM_PARTITION) [Y/n/?] Y Macintosh partition map support (CONFIG_MAC_PARTITION) [Y/n/?] Y PC BIOS (MSDOS partition tables) support (CONFIG_MSDOS_PARTITION) [Y/n/?] Y BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [Y/n/?] Y Minix subpartition support (CONFIG_MINIX_SUBPARTITION) [Y/n/?] Y Solaris (x86) partition table support (CONFIG_SOLARIS_X86_PARTITION) [Y/n/?] Y Unixware slices support (CONFIG_UNIXWARE_DISKLABEL) [Y/n/?] Y SGI partition support (CONFIG_SGI_PARTITION) [Y/n/?] Y Ultrix partition table support (CONFIG_ULTRIX_PARTITION) [Y/n/?] Y Sun partition tables support (CONFIG_SUN_PARTITION) [Y/n/?] Y * * Native Language Support * Default NLS Option (CONFIG_NLS_DEFAULT) [iso8859-1] iso8859-1 Codepage 437 (United States, Canada) (CONFIG_NLS_CODEPAGE_437) [M/n/y/?] M Codepage 737 (Greek) (CONFIG_NLS_CODEPAGE_737) [M/n/y/?] M Codepage 775 (Baltic Rim) (CONFIG_NLS_CODEPAGE_775) [M/n/y/?] M Codepage 850 (Europe) (CONFIG_NLS_CODEPAGE_850) [M/n/y/?] M Codepage 852 (Central/Eastern Europe) (CONFIG_NLS_CODEPAGE_852) [M/n/y/?] M Codepage 855 (Cyrillic) (CONFIG_NLS_CODEPAGE_855) [M/n/y/?] M Codepage 857 (Turkish) (CONFIG_NLS_CODEPAGE_857) [M/n/y/?] M Codepage 860 (Portugese) (CONFIG_NLS_CODEPAGE_860) [M/n/y/?] M Codepage 861 (Icelandic) (CONFIG_NLS_CODEPAGE_861) [M/n/y/?] M Codepage 862 (Hebrew) (CONFIG_NLS_CODEPAGE_862) [M/n/y/?] M Codepage 863 (Canadian French) (CONFIG_NLS_CODEPAGE_863) [M/n/y/?] M Codepage 864 (Arabic) (CONFIG_NLS_CODEPAGE_864) [M/n/y/?] M Codepage 865 (Norwegian, Danish) (CONFIG_NLS_CODEPAGE_865) [M/n/y/?] M Codepage 866 (Cyrillic/Russian) (CONFIG_NLS_CODEPAGE_866) [M/n/y/?] M Codepage 869 (Greek) (CONFIG_NLS_CODEPAGE_869) [M/n/y/?] M Simplified Chinese charset (CP936, GB2312) (CONFIG_NLS_CODEPAGE_936) [M/n/y/?] M Traditional Chinese charset (Big5) (CONFIG_NLS_CODEPAGE_950) [M/n/y/?] M Japanese charsets (Shift-JIS, EUC-JP) (CONFIG_NLS_CODEPAGE_932) [M/n/y/?] M Korean charset (CP949, EUC-KR) (CONFIG_NLS_CODEPAGE_949) [M/n/y/?] M Thai charset (CP874, TIS-620) (CONFIG_NLS_CODEPAGE_874) [M/n/y/?] M Hebrew charsets (ISO-8859-8, CP1255) (CONFIG_NLS_ISO8859_8) [M/n/y/?] M Windows CP1251 (Bulgarian, Belarussian) (CONFIG_NLS_CODEPAGE_1251) [M/n/y/?] M NLS ISO 8859-1 (Latin 1; Western European Languages) (CONFIG_NLS_ISO8859_1) [M/n/y/?] M NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages) (CONFIG_NLS_ISO8859_2) [M/n/y/?] M NLS ISO 8859-3 (Latin 3; Esperanto, Galician, Maltese, Turkish) (CONFIG_NLS_ISO8859_3) [M/n/y/?] M NLS ISO 8859-4 (Latin 4; old Baltic charset) (CONFIG_NLS_ISO8859_4) [M/n/y/?] M NLS ISO 8859-5 (Cyrillic) (CONFIG_NLS_ISO8859_5) [M/n/y/?] M NLS ISO 8859-6 (Arabic) (CONFIG_NLS_ISO8859_6) [M/n/y/?] M NLS ISO 8859-7 (Modern Greek) (CONFIG_NLS_ISO8859_7) [M/n/y/?] M NLS ISO 8859-9 (Latin 5; Turkish) (CONFIG_NLS_ISO8859_9) [M/n/y/?] M NLS ISO 8859-13 (Latin 7; Baltic) (CONFIG_NLS_ISO8859_13) [M/n/y/?] M NLS ISO 8859-14 (Latin 8; Celtic) (CONFIG_NLS_ISO8859_14) [M/n/y/?] M NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) (CONFIG_NLS_ISO8859_15) [M/n/y/?] M NLS KOI8-R (Russian) (CONFIG_NLS_KOI8_R) [M/n/y/?] M NLS KOI8-U (Ukrainian) (CONFIG_NLS_KOI8_U) [M/n/y/?] M NLS UTF8 (CONFIG_NLS_UTF8) [Y/m/n/?] Y * * Kernel hacking * Magic SysRq key (CONFIG_MAGIC_SYSRQ) [Y/n/?] Y *** End of Linux kernel configuration. *** Check the top-level Makefile for additional configuration. *** Next, you must run ’make dep’. Cross-reference to configuration options The Linux for S/390 specific configuration options shown in the sample output listing are described in the following sections: v “IEEE FPU emulation” on page 192 v “Built-in IPL record support” on page 193 v “IPL method generated into head.S” on page 193 v “Channel device layer support” on page 193 v “Support for DASD devices” on page 194 v “Support for ECKD disks” on page 194 Appendix B. Kernel building 179 v v v v v “Support for FBA disks” on page 194 “XPRAM device support” on page 195 “CTC/ESCON device support” on page 195 “IUCV device support” on page 195 “OSA-Express device support” on page 196 v v v v v v “Support for 3215 line mode terminal” on page 196 “Support for console output on 3215 line mode terminal” on page 196 “Support for 3270 console” on page 197 “Support for hardware console” on page 197 “Console output on hardware console” on page 197 “Tape device support” on page 198 Using ’menuconfig’ You can use make menuconfig to edit individual Linux for S/390 kernel options out of sequence and you can discard your settings at any time. You need a screen based console device to use make menuconfig. If you only have access to a line based console, you must use make config, see “Using ’config’ or ’oldconfig’” on page 175 for more details. Some options can be built directly into the kernel. Other options can be made into dynamically loadable modules. Some options can be completely removed altogether. There are also certain kernel parameters which are not really selectable options (Y) or (N), but instead values must be entered for them or selected from a list (decimal or hexadecimal numbers or possibly text). The menu items begin with various types of bracket to indicate that the features: v [*] are configured to be built in to the kernel. v [ ] are configured to be removed from the kernel. v <M> are configured to be modularized. v < > are module capable features. v <*> could have been modules, but have been built into the kernel. Modules are linked to the kernel after booting. Some menu items contain subordinate options that are displayed only when the menu item has been selected. File handling You can revise your settings up until you save the configuration. You will be given a last chance to confirm them prior to exiting menuconfig – see “Exit ’menuconfig’” on page 190. If menuconfig quits with an error while saving your configuration, you can look in the file /usr/src/linux/.menuconfig.log for information which can help you determine the failure cause. You can also save the current configuration to a file of your choice, or load a previously saved configuration – see “Save configuration to an alternative file” on page 190 and “Load an alternative configuration file” on page 190. 180 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) menuconfig supports the use of alternative configuration files for those who, for various reasons, find it necessary to switch between different kernel configurations. At the end of the main menu you will find two options. One is for saving the current configuration to a file of your choosing. The other option is for loading a previously saved alternative configuration. Even if you don’t use alternative configuration files, but during a session you decide to restore your previously saved settings from .config, you can use the Load Alternative... to do so without restarting menuconfig. Note: These examples are for illustration only. The prompts and responses on your system may not match these. The headers and footers have been removed from all screens except the first for clarity. Main menu The following example shows the different sets of configuration options: Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌─────────────────────────────── Main Menu ───────────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │ │ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help. │ │ Legend: [*] built-in [ ] excluded <M> module < > module capable │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ Code maturity level options ---> │ │ │ │ Loadable module support ---> │ │ │ │ Processor type and features ---> │ │ │ │ General setup ---> │ │ │ │ Block device drivers ---> │ │ │ │ Multi-device support (RAID and LVM) ---> │ │ │ │ Character device drivers ---> │ │ │ │ Network device drivers ---> │ │ │ │ Networking options ---> │ │ │ │ File systems ---> │ │ │ │ Kernel hacking ---> │ │ │ │ --│ │ │ │ Load an Alternate Configuration File │ │ │ │ Save Configuration to an Alternate File │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────────┘ The options on this menu are described in detail in the following sections: v “Code maturity level options” on page 182 v “Loadable module support” on page 182 v “Processor type and features” on page 182 v “General setup” on page 182 v “Block device drivers” on page 183 v “Multi-device support (RAID and LVM)” on page 183 v “Character device drivers” on page 184 v v v v v “Network device drivers” on page 184 “Networking options” on page 185 “Filesystems” on page 187 “Native Language Support” on page 189 “Kernel hacking” on page 189 Appendix B. Kernel building 181 v “Load an alternative configuration file” on page 190 v “Save configuration to an alternative file” on page 190 Code maturity level options The Code Maturity Level options are intended to reduce the number of options that are displayed. This can help by not showing the code/drivers that are either incomplete or still under development: Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌────────────────────── Code maturity level options ──────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Prompt for development and/or incomplete code/drivers │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Loadable module support The Loadable Module Support option lets you use dynamically loaded modules that are linked to your basic kernel. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌──────────────────────── Loadable module support ────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Enable loadable module support │ │ │ │ [*] Set version information on all module symbols │ │ │ │ [*] Kernel module loader │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Processor type and features The Processor Type and Features options allow you to configure the kernel to match your S/390 hardware installation. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌────────────────────── Processor type and features ──────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Symmetric multi-processing support │ │ │ │ [*] IEEE FPU emulation │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ The Linux for S/390 Processor Type and Features menu option is described in the following section: v “IEEE FPU emulation” on page 192. General setup The General Setup options configure your kernel’s interaction with certain external programs, this includes: v kernel networking support v the synchronization and exchange of information between kernel and program v instructing the kernel to write process accounting information to a file v dynamically changing certain kernel parameters and variables on the fly. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌───────────────────────────── General setup ─────────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Fast IRQ handling │ │ │ │ [*] Builtin IPL record support │ │ │ │ (vm_reader) IPL method generated into head.S │ │ │ │ [*] Networking support │ │ │ │ [*] System V IPC │ │ 182 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) │ │ [*] BSD Process Accounting │ │ │ │ [*] Sysctl support │ │ │ │ <M> Kernel support for ELF binaries │ │ │ │ <M> Kernel support for MISC binaries │ │ │ │ [*] Show crashed user process info │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ The Linux for S/390 General Setup menu options are described in the following sections: v “Built-in IPL record support” on page 193 v “IPL method generated into head.S” on page 193. Block device drivers The Block Device Drivers options allow the kernel to be set up to use the various block devices available with your S/390 system. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌───────────────────────── Block device drivers ──────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ <M> Loopback device support │ │ │ │ <M> Network block device support │ │ │ │ <M> RAM disk support │ │ │ │ (24576) Default RAM disk size │ │ │ │ <M> XPRAM disk support │ │ │ │ --- S/390 block device drivers │ │ │ │ <M> Support for DASD devices │ │ │ │ <M> Support for ECKD Disks │ │ │ │ [*] Automatic activation of ECKD module │ │ │ │ <M> Support for FBA Disks │ │ │ │ [*] Automatic activation of FBA module │ │ │ │ <M> Support for DIAG access to CMS reserved Disks │ │ │ │ [*] Automatic activation of DIAG module │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Note that the Support for DIAG access to CMS reserved minidisk option is available only in the 31–bit architecture and when the Support for VM minidisk option is not selected. The S/390 Block Device Drivers menu options unique to Linux for S/390 are described in the following sections: v v v v “Support for DASD devices” on page 194 “Support for ECKD disks” on page 194 “Support for FBA disks” on page 194 “XPRAM device support” on page 195. Multi-device support (RAID and LVM) The Multi-device support options allow the kernel to be set up to use RAID devices and Linux Logical volume manager with your S/390 system. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌────────────────── Multi-device support (RAID and LVM) ──────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Multiple devices driver support (RAID and LVM) │ │ │ │ <M> RAID support │ │ │ │ <M> Linear (append) mode │ │ │ │ <M> RAID-0 (striping) mode │ │ │ │ <M> RAID-1 (mirroring) mode │ │ │ │ <M> RAID-4/RAID-5 mode │ │ Appendix B. Kernel building 183 │ │ <M> Logical volume manager (LVM) support │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Character device drivers The Character device drivers options allow the kernel to be set up to use the various line mode terminals (or emulators) available with your S/390 system. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌─────────────────────── Character device drivers ────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Unix98 PTY support │ │ │ │ (256) Maximum number of Unix98 PTYs in use (0-2048) │ │ │ │ --- S/390 character device drivers │ │ │ │ <M> Support for locally attached 3270 tubes │ │ │ │ [*] Support for 3215 line mode terminal │ │ │ │ [*] Support for console on 3215 line mode terminal │ │ │ │ [*] Support for HWC line mode terminal │ │ │ │ [*] console on HWC line mode terminal │ │ │ │ <M> S/390 tape device support │ │ │ │ --- S/390 tape interface support │ │ │ │ [*] Support for tape character devices │ │ │ │ [*] Support for tape block devices │ │ │ │ --- S/390 tape hardware support │ │ │ │ [*] Support for 3490 tape hardware │ │ │ │ [*] Support for 3480 tape hardware │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ The S/390 character device driver options unique to Linux for S/390 are described in the following sections: v “Support for 3215 line mode terminal” on page 196 v “Support for console output on 3215 line mode terminal” on page 196 v “Support for hardware console” on page 197 v “Console output on hardware console” on page 197. Network device drivers The Network device drivers options allow the kernel to be set up to use the various network devices available with your S/390 system. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌──────────────────────── Network device drivers ─────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Network device support │ │ │ │ <M> Dummy net driver support │ │ │ │ <M> Bonding driver support │ │ │ │ <M> EQL (serial line load balancing) support │ │ │ │ <M> Universal TUN/TAP device driver support │ │ │ │ [*] Ethernet (10 or 100Mbit) │ │ │ │ [*] Token Ring driver support │ │ │ │ [*] FDDI driver support │ │ │ │ --- S/390 network device drivers │ │ │ │ [*] Channel Device Configuration │ │ │ │ <M> CTC device support │ │ │ │ <M> IUCV device support (VM only) │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ The S/390 network device support menu options unique to Linux for S/390 are described in the following sections: v “CTC/ESCON device support” on page 195 184 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) v “OSA-Express device support” on page 196 v “IUCV device support” on page 195 Networking options The Networking options allow the kernel to interact with the network devices attached to your S/390 and also allow you to optimize the performance of communications within your system and with the outside world. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌────────────────────────── Networking options ───────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ <M> Packet socket │ │ │ │ [*] Packet socket: mmapped IO │ │ │ │ [*] Kernel/User netlink socket │ │ │ │ [*] Routing messages │ │ │ │ <M> Netlink device emulation │ │ │ │ [*] Network packet filtering (replaces ipchains) │ │ │ │ [*] Network packet filtering debugging │ │ │ │ [*] Socket Filtering │ │ │ │ <M> Unix domain sockets │ │ │ │ [*] TCP/IP networking │ │ │ │ [*] IP: multicasting │ │ │ │ [*] IP: advanced router │ │ │ │ [*] IP: policy routing │ │ │ │ [*] IP: use netfilter MARK value as routing key │ │ │ │ [*] IP: fast network address translation │ │ │ │ [*] IP: equal cost multipath │ │ │ │ [*] IP: use TOS value as routing key │ │ │ │ [*] IP: verbose route monitoring │ │ │ │ [*] IP: large routing tables │ │ │ │ [*] IP: kernel level autoconfiguration │ │ │ │ [*] IP: BOOTP support │ │ │ │ [*] IP: RARP support │ │ │ │ <M> IP: tunneling │ │ │ │ <M> IP: GRE tunnels over IP │ │ │ │ [*] IP: broadcast GRE over IP │ │ │ │ [*] IP: multicast routing │ │ │ │ [*] IP: PIM-SM version 1 support │ │ │ │ [*] IP: PIM-SM version 2 support │ │ │ │ [*] IP: ARP daemon support (EXPERIMENTAL) │ │ │ │ [*] IP: TCP Explicit Congestion Notification support │ │ │ │ [*] IP: TCP syncookie support (disabled per default) │ │ │ │ IP: Netfilter Configuration ---> │ │ │ │ <M> The IPv6 protocol (EXPERIMENTAL) │ │ │ │ [*] IPv6: enable EUI-64 token format │ │ │ │ [*] IPv6: disable provider based addresses │ │ │ │ IPv6: Netfilter Configuration ---> │ │ │ │ <M> Kernel httpd acceleration (EXPERIMENTAL) │ │ │ │ [*] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL) │ │ │ │ [*] Classical IP over ATM │ │ │ │ [*] Do NOT send ICMP if no neighbour │ │ │ │ <M> LAN Emulation (LANE) support │ │ │ │ <M> Multi-Protocol Over ATM (MPOA) support │ │ │ │ --│ │ │ │ <M> The IPX protocol │ │ │ │ [*] IPX: Full internal IPX network │ │ │ │ <M> Appletalk protocol support │ │ │ │ <M> DECnet Support │ │ │ │ [*] DECnet: SIOCGIFCONF support │ │ │ │ [*] DECnet: router support (EXPERIMENTAL) │ │ │ │ [*] DECnet: use FWMARK value as routing key (EXPERIMENTAL) │ │ │ │ <M> 802.1d Ethernet Bridging │ │ │ │ <M> CCITT X.25 Packet Layer (EXPERIMENTAL) │ │ │ │ <M> LAPB Data Link Driver (EXPERIMENTAL) │ │ │ │ [*] 802.2 LLC (EXPERIMENTAL) │ │ │ │ [*] Frame Diverter (EXPERIMENTAL) │ │ Appendix B. Kernel building 185 │ │ <M> Acorn Econet/AUN protocols (EXPERIMENTAL) │ │ │ │ [*] AUN over UDP │ │ │ │ [*] Native Econet │ │ │ │ <M> WAN router │ │ │ │ [*] Fast switching (read help!) │ │ │ │ [*] Forwarding between high speed interfaces │ │ │ │ QoS and/or fair queueing ---> │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ The options on this menu are described in detail in the following sections: v “IP: Netfilter Configuration” v “IPv6: Netfilter Configuration” v “QoS and/or Fair queueing” on page 187 IP: Netfilter Configuration The IP: Netfilter Configuration menu will enable network filters to be set up. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌───────────────────── IP: Netfilter Configuration ─────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ <M> Connection tracking (required for masq/NAT) │ │ │ │ <M> FTP protocol support │ │ │ │ <M> Userspace queueing via NETLINK (EXPERIMENTAL) │ │ │ │ <M> IP tables support (required for filtering/masq/NAT) │ │ │ │ <M> limit match support │ │ │ │ <M> MAC address match support │ │ │ │ <M> netfilter MARK match support │ │ │ │ <M> Multiple port match support │ │ │ │ <M> TOS match support │ │ │ │ <M> tcpmss match support │ │ │ │ <M> Connection state match support │ │ │ │ <M> Unclean match support (EXPERIMENTAL) │ │ │ │ <M> Owner match support (EXPERIMENTAL) │ │ │ │ <M> Packet filtering │ │ │ │ <M> REJECT target support │ │ │ │ <M> MIRROR target support (EXPERIMENTAL) │ │ │ │ <M> Full NAT │ │ │ │ <M> MASQUERADE target support │ │ │ │ <M> REDIRECT target support │ │ │ │ <M> Packet mangling │ │ │ │ <M> TOS target support │ │ │ │ <M> MARK target support │ │ │ │ <M> LOG target support │ │ │ │ <M> TCPMSS target support │ │ │ │ <M> ipchains (2.2-style) support │ │ │ │ <M> ipfwadm (2.0-style) support │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ IPv6: Netfilter Configuration The IPv6: Netfilter Configuration menu will enable will enable network filters for IP version 6 to be set up. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌──────────────────── IPv6: Netfilter Configuration ────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ <M> IP6 tables support (required for filtering/masq/NAT) │ │ │ │ <M> limit match support │ │ │ │ <M> netfilter MARK match support │ │ │ │ <M> Packet filtering │ │ │ │ <M> Packet mangling │ │ │ │ <M> MARK target support │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ 186 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) QoS and/or Fair queueing The QoS and/or Fair Queueing menu will enable fine tuning of the network device packet handling algorithms. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌─────────────────────── QoS and/or fair queueing ────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] QoS and/or fair queueing │ │ │ │ <M> CBQ packet scheduler │ │ │ │ <M> CSZ packet scheduler │ │ │ │ [*] ATM pseudo-scheduler │ │ │ │ <M> The simplest PRIO pseudoscheduler │ │ │ │ <M> RED queue │ │ │ │ <M> SFQ queue │ │ │ │ <M> TEQL queue │ │ │ │ <M> TBF queue │ │ │ │ <M> GRED queue │ │ │ │ <M> Diffserv field marker │ │ │ │ <M> Ingress Qdisc │ │ │ │ [*] QoS support │ │ │ │ [*] Rate estimator │ │ │ │ [*] Packet classifier API │ │ │ │ <M> TC index classifier │ │ │ │ <M> Routing table based classifier │ │ │ │ <M> Firewall based classifier │ │ │ │ <M> U32 classifier │ │ │ │ <M> Special RSVP classifier │ │ │ │ <M> Special RSVP classifier for IPv6 │ │ │ │ [*] Traffic policing (needed for in/egress) │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Filesystems The Filesystems options allow you to define the filesystems used to access your storage devices (hard disk, CDROM etc.). Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌───────────────────────────── File systems ──────────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Quota support │ │ │ │ <M> Kernel automounter support │ │ │ │ <M> Kernel automounter version 4 support (also supports v3) │ │ │ │ <M> Reiserfs support │ │ │ │ [*] Have reiserfs do extra internal checking │ │ │ │ <M> ADFS file system support │ │ │ │ [*] ADFS write support (DANGEROUS) │ │ │ │ <M> Amiga FFS file system support (EXPERIMENTAL) │ │ │ │ <M> Apple Macintosh file system support (EXPERIMENTAL) │ │ │ │ <M> BFS file system support (EXPERIMENTAL) │ │ │ │ <M> DOS FAT fs support │ │ │ │ <M> MSDOS fs support │ │ │ │ <M> UMSDOS: Unix-like file system on top of standard MSDOS fs │ │ │ │ <M> VFAT (Windows-95) fs support │ │ │ │ <M> EFS file system support (read only) (EXPERIMENTAL) │ │ │ │ <M> Journalling Flash File System (JFFS) support (EXPERIMENTAL) │ │ │ │ (0) JFFS debugging verbosity (0 = quiet, 3 = noisy) │ │ │ │ <M> Compressed ROM file system support │ │ │ │ [*] Virtual memory file system support (former shm fs) │ │ │ │ <M> Simple RAM-based file system support │ │ │ │ <M> ISO 9660 CDROM file system support │ │ │ │ [*] Microsoft Joliet CDROM extensions │ │ │ │ <M> Minix fs support │ │ │ │ <M> NTFS file system support (read only) │ │ │ │ [*] NTFS write support (DANGEROUS) │ │ │ │ <M> OS/2 HPFS file system support │ │ │ │ [*] /proc file system support │ │ Appendix B. Kernel building 187 │ │ [*] /dev file system support (EXPERIMENTAL) │ │ │ │ [*] Automatically mount at boot │ │ │ │ [*] Debug devfs │ │ │ │ [*] /dev/pts file system for Unix98 PTYs │ │ │ │ <M> QNX4 file system support (read only) (EXPERIMENTAL) │ │ │ │ [*] QNX4FS write support (DANGEROUS) │ │ │ │ <M> ROM file system support │ │ │ │ <*> Second extended fs support │ │ │ │ <M> System V and Coherent file system support (read only) │ │ │ │ [*] SYSV file system write support (DANGEROUS) │ │ │ │ <M> UDF file system support (read only) │ │ │ │ [*] UDF write support (DANGEROUS) │ │ │ │ <M> UFS file system support (read only) │ │ │ │ [*] UFS file system write support (DANGEROUS) │ │ │ │ Network File Systems ---> │ │ │ │ Partition Types ---> │ │ │ │ Native Language Support ---> │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ The options on this menu are described in detail in the following sections: v “Network file systems” v “Partition types” Network file systems The Network File Systems options let you decide which file systems is the most appropriate for your network. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌───────────────────────── Network File Systems ──────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ <M> Coda file system support (advanced network fs) │ │ │ │ <*> NFS file system support │ │ │ │ [*] Provide NFSv3 client support │ │ │ │ [*] Root file system on NFS │ │ │ │ <*> NFS server support │ │ │ │ [*] Provide NFSv3 server support │ │ │ │ <M> SMB file system support (to mount Windows shares etc.) │ │ │ │ [*] Use a default NLS │ │ │ │ Default Remote NLS Option: "cp437" │ │ │ │ <M> NCP file system support (to mount NetWare volumes) │ │ │ │ [*] Packet signatures │ │ │ │ [*] Proprietary file locking │ │ │ │ [*] Clear remove/delete inhibit when needed │ │ │ │ [*] Use NFS namespace if available │ │ │ │ [*] Use LONG (OS/2) namespace if available │ │ │ │ [*] Lowercase DOS filenames │ │ │ │ [*] Use Native Language Support │ │ │ │ [*] Enable symbolic links and execute flags │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Partition types The Partition Types options let you access the hard disk partitions of other device types. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌──────────────────────────── Partition Types ────────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Advanced partition selection │ │ │ │ [*] Acorn partition support │ │ │ │ [*] ICS partition support │ │ │ │ [*] Native filecore partition support │ │ │ │ [*] PowerTec partition support │ │ │ │ [*] RISCiX partition support │ │ │ │ [*] Alpha OSF partition support │ │ 188 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) │ │ [*] Amiga partition table support │ │ │ │ [*] Atari partition table support │ │ │ │ [*] IBM disk label and partition support │ │ │ │ [*] Macintosh partition map support │ │ │ │ [*] PC BIOS (MSDOS partition tables) support │ │ │ │ [*] BSD disklabel (FreeBSD partition tables) support │ │ │ │ [*] Minix subpartition support │ │ │ │ [*] Solaris (x86) partition table support │ │ │ │ [*] Unixware slices support │ │ │ │ [*] SGI partition support │ │ │ │ [*] Ultrix partition table support │ │ │ │ [*] Sun partition tables support │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Native Language Support The Native Language Support options allow you to select the code pages available on the system. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌──────────────────────── Native Language Support ────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ Default NLS Option: "iso8859-1" │ │ │ │<M> Codepage 437 (United States, Canada) │ │ │ │<M> Codepage 737 (Greek) │ │ │ │<M> Codepage 775 (Baltic Rim) │ │ │ │<M> Codepage 850 (Europe) │ │ │ │<M> Codepage 852 (Central/Eastern Europe) │ │ │ │<M> Codepage 855 (Cyrillic) │ │ │ │<M> Codepage 857 (Turkish) │ │ │ │<M> Codepage 860 (Portugese) │ │ │ │<M> Codepage 861 (Icelandic) │ │ │ │<M> Codepage 862 (Hebrew) │ │ │ │<M> Codepage 863 (Canadian French) │ │ │ │<M> Codepage 864 (Arabic) │ │ │ │<M> Codepage 865 (Norwegian, Danish) │ │ │ │<M> Codepage 866 (Cyrillic/Russian) │ │ │ │<M> Codepage 869 (Greek) │ │ │ │<M> Simplified Chinese charset (CP936, GB2312) │ │ │ │<M> Traditional Chinese charset (Big5) │ │ │ │<M> Japanese charsets (Shift-JIS, EUC-JP) │ │ │ │<M> Korean charset (CP949, EUC-KR) │ │ │ │<M> Thai charset (CP874, TIS-620) │ │ │ │<M> Hebrew charsets (ISO-8859-8, CP1255) │ │ │ │<M> Windows CP1251 (Bulgarian, Belarussian) │ │ │ │<M> NLS ISO 8859-1 (Latin 1; Western European Languages) │ │ │ │<M> NLS ISO 8859-2 (Latin 2; Slavic/Central European Languages) │ │ │ │<M> NLS ISO 8859-3 (Latin 3; Esperanto, Galician, Maltese, Turkish) │ │ │ │<M> NLS ISO 8859-4 (Latin 4; old Baltic charset) │ │ │ │<M> NLS ISO 8859-5 (Cyrillic) │ │ │ │<M> NLS ISO 8859-6 (Arabic) │ │ │ │<M> NLS ISO 8859-7 (Modern Greek) │ │ │ │<M> NLS ISO 8859-9 (Latin 5; Turkish) │ │ │ │<M> NLS ISO 8859-13 (Latin 7; Baltic) │ │ │ │<M> NLS ISO 8859-14 (Latin 8; Celtic) │ │ │ │<M> NLS ISO 8859-15 (Latin 9; Western European Languages with Euro) │ │ │ │<M> NLS KOI8-R (Russian) │ │ │ │<M> NLS KOI8-U (Ukrainian) │ │ │ │<*> NLS UTF8 │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Kernel hacking The Kernel Hacking options allow you access and control over the kernel in certain situations. These options should be used with care! Appendix B. Kernel building 189 Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌──────────────────────────── Kernel hacking ─────────────────────────────┐ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ [*] Magic SysRq key │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ Load an alternative configuration file For various reasons, you might want to keep different kernel configurations available on a single S/390 system. Entering a file name here will allow you to later retrieve, modify and use the current configuration as an alternative to whatever configuration options you have selected at that time. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌─────────────────────────────────────────────────────┐ │ Enter the name of the configuration file you wish │ │ to load. Accept the name shown to restore the │ │ configuration you last retrieved. Leave blank to │ │ abort. │ │ ┌─────────────────────────────────────────────────┐ │ │ │.config │ │ │ └─────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────┤ │ < Ok > < Help > │ └─────────────────────────────────────────────────────┘ Save configuration to an alternative file For various reasons, you might want to keep several different kernel configurations available on a single S/390 system. If you have saved a previous configuration in a file other than the default, entering the name of the file here will allow you to modify that configuration. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌─────────────────────────────────────────────────────┐ │ Enter a filename to which this configuration │ │ should be saved as an alternate. Leave blank to │ │ abort. │ │ ┌─────────────────────────────────────────────────┐ │ │ │ │ │ │ └─────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────┤ │ < Ok > < Help > │ └─────────────────────────────────────────────────────┘ Exit ’menuconfig’ When you have completed your modifications to the kernel, you are asked whether you want to save the new kernel configuration. Normally, you would respond by selecting the Yes option, but you might have made modifications that you do not want to keep. In that case you can exit the configuration process without saving the changes by selecting the No option. Linux Kernel v2.4.4 Configuration ────────────────────────────────────────── ┌──────────────────────────────────────────────────────────┐ │ Do you wish to save your new kernel configuration? │ ├──────────────────────────────────────────────────────────┤ │ < Yes > < No > │ └──────────────────────────────────────────────────────────┘ If you have elected to save your configuration this will be confirmed with the messages: 190 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Saving your kernel configuration... *** End of Linux kernel configuration. *** Check the top-level Makefile for additional configuration. *** Next, you must run ’make dep’. Appendix B. Kernel building 191 Kernel parameter options The Linux for S/390 specific kernel parameter options are described in the following sections: v “IEEE FPU emulation” v “Built-in IPL record support” on page 193 v “IPL method generated into head.S” on page 193 v “Enable /proc/deviceinfo entries” on page 193 v “Channel device layer support” on page 193 v v v v v v v v “Support for DASD devices” on page 194 “Support for ECKD disks” on page 194 “Support for FBA disks” on page 194 “XPRAM device support” on page 195 “CTC/ESCON device support” on page 195 “IUCV device support” on page 195 “OSA-Express device support” on page 196 “Support for 3215 line mode terminal” on page 196 v “Support for console output on 3215 line mode terminal” on page 196 v v v v “Support for 3270 console” on page 197 “Support for hardware console” on page 197 “Console output on hardware console” on page 197 “Tape device support” on page 198 IEEE FPU emulation Configuration option CONFIG_MATHEMU Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 Dependent on S/390 version, see Description Description From S/390 versions G5 and G6 (or later), the S/390 systems are capable of calculating floating point numbers in IEEE-format. Linux for S/390 provides an IEEE floating point emulation. This can be configured on (enter Y) or off (enter N) during kernel compilation time. If you have IEEE-emulation configured on, floating point arithmetic can be performed on any S/390 system, however it will be slow on those systems using the emulation. On S/390 versions G3, G4 (or older ones) you must run with IEEE-emulation configured on (Y). On S/390 versions G5, G6 (or later) you can make use of the hardware IEEE-arithmetic. VM/ESA has to be enabled to allow it to use and provide the hardware IEEE-arithmetic. This occurs automatically when you are running VM 2.4 or VM 2.3 with a PTF applied that enables the IEEE-arithmetic. If you do not have VM 2.4 or did not apply the PTF to VM 2.3, then you still can (and have to) rely on the IEEE-emulation as on the older S/390 systems. 192 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Built-in IPL record support Configuration option CONFIG_IPL Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 Yes Description With this option turned on an IPL loader is generated at the start of the kernel image. That makes it possible to ’boot’ from the kernel image directly without the need of a separate loader. This makes sense for a medium that is sequentially read from the start at IPL time like a (VM) reader or a tape. The type of the loader generated to the head of the kernel image is chosen by the ’IPL method generated into head.S’ selection. IPL method generated into head.S Configuration option CONFIG_IPL_VM Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 See Description Description There are two loaders available for the generation into the kernel. ’tape’ selects the loader for an IPL from a tape device, ’vm_reader’ selects the loader for an IPL from a VM virtual reader. Enable /proc/deviceinfo entries Configuration option CIO_PROC_DEVINFO Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 No Description With many devices attached the proc filesystem runs out of inodes. Creating of the /proc/deviceinfo/ entries is now disabled by default. If it is required it can be switched on again by setting this parameter to ’yes’. Channel device layer support Configuration option CONFIG_CHANDEV Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 No Appendix B. Kernel building 193 Description This option enables the new Channel Device Layer support. Currently the devices supported are: 1. 2. 3. 4. LCS CTC/ESCON QETH OSAD See ’Channel Device Layer’ on page 51 for more information. Support for DASD devices Configuration option CONFIG_DASD Capable of being a module? -- (Module Name) dasd_mod.o Value Required by Linux for S/390 See Description Description This is used mainly in native installations. Enable this option (Y) to support access to S/390 disks. These are known as DASD (Direct Access Storage Devices). You must enable this option to have disk access on a native or LPAR system. When enabled (Y), this option lets you specify additional options for DASD access, see “Support for ECKD disks”. Support for ECKD disks Configuration option CONFIG_DASD_ECKD Capable of being a module? -- (Module Name) dasd_eckd_mod.o Value Required by Linux for S/390 See Description Description This is used mainly in native installations. Enable this option (Y) if you have ECKD-type DASDs such as an IBM 3380 or 3390. ECKD devices are the most commonly used devices in S/390, so you should enable this option unless you are very sure you do not have any ECKD devices. This option is subordinate to CONFIG_DASD, see “Support for DASD devices”. Support for FBA disks Configuration option CONFIG_DASD_FBA Capable of being a module? -- (Module Name) dasd_fba_mod.o 194 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Value Required by Linux for S/390 See Description Description This is used mainly under VM/ESA for the virtual disk in storage VFB-512. Enable this option (Y) if you want to access your FBA devices. This option is subordinate to CONFIG_DASD, see “Support for DASD devices” on page 194. XPRAM device support Configuration option CONFIG_BLK_DEV_XPRAM Capable of being a module? -- (Module Name) xpram.o Value Required by Linux for S/390 See Description Description This is used to allow more than 2 GB of main storage to be accessed by Linux for S/390. Enable this option (Y) to support access to expanded storage of up to 16 TB (although current hardware currently supports only 64 GB). The expanded storage can be subdivided into partitions. See “XPRAM kernel parameter syntax” on page 24 for more information. CTC/ESCON device support Configuration option CONFIG_CTC Capable of being a module? -- (Module Name) ctc.o Value Required by Linux for S/390 No Description If you want to use channel connections under Linux , enter (Y) here. This gives you the opportunity to make TCP/IP connections via virtual, parallel or ESCON channels between Linux for S/390 and other S/390 operating systems (Linux for S/390, OS/390, VM/ESA and VSE/ESA). Read the CTC/ESCON device driver description on page63 for more information. IUCV device support Configuration option CONFIG_IUCV Capable of being a module? -- (Module Name) netiucv.o Value Required by Linux for S/390 No Description This is a VM/ESA only device driver. Enter (Y) to enable a fast communication link between VM guests. At boot time the user ID of the Appendix B. Kernel building 195 guest needs to be passed to the kernel. Using ifconfig a point-to-point connection can be established to the Linux for S/390 system running on the other VM guest. Note that both kernels need to be compiled with this option and both need to be booted with the user ID of the other VM guest. OSA-Express device support Configuration option CONFIG_NET_ETHERNET Capable of being a module? -- (Module Name) qdio.o, qeth.o Value Required by Linux for S/390 No Description If you want to use OSA-Express connections under Linux , enter (Y) here. Read OSA-Express device driver on page 97 for more information. Configuration option CONFIG_DUMMY Value Required by Linux for S/390 Required in order to use the VIPA functionality. | | Description To use OSA-Express dummy connections under Linux , enter (Y) here. Support for 3215 line mode terminal Configuration option CONFIG_TN3215 Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 No Description The 3215 console driver is used to read and write to a 3215 line mode console. Real 3215 devices are no longer available in an S/390 environment, so the 3215 driver can only be used under VM/ESA. On a native S/390 system the initialization function of the 3215 driver returns without registering the driver to the system. Entering (Y) to this option switches on the compilation of parts 1 and 2 of the 3215 terminal driver. The option makes it possible to use “Support for console output on 3215 line mode terminal”. Support for console output on 3215 line mode terminal Configuration option CONFIG_TN3215_CONSOLE Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 No 196 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Description This option is subordinate to “Support for 3215 line mode terminal” on page 196. This option enables console output on the first 3215 console in the system. It prints kernel errors and kernel warnings to the 3215 terminal in addition to the normal output on the TTY device. Support for 3270 console Configuration option CONFIG_TN3270 Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 No Description The 3270 console driver is used to read and write to a 3270 console. Entering (Y) to this option switches on the compilation of the 3270 terminal driver. Support for hardware console Configuration option CONFIG_HWC Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 See Description Description The hardware console is an alternative terminal, usually required for a native Linux for S/390 installation although it is also run under VM/ESA. You would normally enter (Y) for this option in a native installation if your hardware configuration includes a hardware console. In a VM/ESA installation, without a hardware console, you would normally enter (N). Read the Device driver description Chapter 5, “Linux for S/390 Console device drivers” on page 27 for more information. Console output on hardware console Configuration option CONFIG_HWC_CONSOLE Capable of being a module? -- (Module Name) No Value Required by Linux for S/390 No Description This option is subordinate to “Support for hardware console”. Appendix B. Kernel building 197 This option enables console output on the first hardware console in the system. It prints kernel errors and kernel warnings to the hardware console in addition to the normal output on the TTY device. Tape device support Configuration option CONFIG_S390_TAPE Capable of being a module? -- (Module Name) tape390.o Value Required by Linux for S/390 No Description If you want to use the tape device driver with Linux enter (m) here. 198 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Glossary A This glossary includes IBM product terminology as well as selected other terms and definitions. Additional information can be obtained in: v The American National Standard Dictionary for Information Systems , ANSI X3.172-1990, copyright 1990 by the American National Standards Institute (ANSI). Copies may be purchased from the American National Standards Institute, 11 West 42nd Street, New York, New York 10036. v The ANSI/EIA Standard–440-A, Fiber Optic Terminology. Copies may be purchased from the Electronic Industries Association, 2001 Pennsylvania Avenue, N.W., Washington, DC 20006. auto-detection. Listing the addresses of devices attached to a card by issuing a query command to the card. C cdl. compatible disk layout. A disk structure for Linux for S/390 which allows access from other S/390 operating systems. This replaces the older ldl. | CEC. (Central Electronics Complex). A synonym for | CPC. chandev. channel device layer. A unified programming interface to devices attached to the S/390 via the channel subsystem. v The Information Technology Vocabulary developed by Subcommittee 1, Joint Technical Committee 1, of the International Organization for Standardization and the International Electrotechnical Commission (ISO/IEC JTC1/SC1). v The IBM Dictionary of Computing , New York: McGraw-Hill, 1994. v Internet Request for Comments: 1208, Glossary of Networking Terms v Internet Request for Comments: 1392, Internet Users’ Glossary v The Object-Oriented Interface Design: IBM Common User Access Guidelines , Carmel, Indiana: Que, 1992. channel subsystem. The programmable input/output processors of the S/390, which operate in parallel with the cpu. checksum. An error detection method using a check byte appended to message data CHPID. channel path identifier. In a channel subsystem, a value assigned to each installed channel path of the system that uniquely identifies that path to the system. | | | | CPC. (Central Processor Complex). A physical collection of hardware that includes main storage, one or more central processors, timers, and channels. Also referred to as a CEC. CRC. cyclic redundancy check. A system of error checking performed at both the sending and receiving station after a block-check character has been accumulated. CSMA/CD. carrier sense multiple access with collision detection CTC. channel to channel. A method of connecting two computing devices. CUU. control unit and unit address. A form of addressing for S/390 devices using device numbers. D DASD. direct access storage device. A mass storage medium on which a computer stores data. © Copyright IBM Corp. 2000, 2002 199 device driver. (1) A file that contains the code needed to use an attached device. (2) A program that enables a computer to communicate with a specific peripheral device; for example, a printer, a videodisc player, or a CD-ROM drive. (3) A collection of subroutines that control the interface between I/O device adapters and the processor. HMC. hardware management console. A console used to monitor and control hardware such as the S/390 microprocessors. HFS. hierarchical file system. A system of arranging files into a tree structure of directories. I E ECKD. extended count-key-data device. A disk storage device that has a data transfer rate faster than some processors can utilize and that is connected to the processor through use of a speed matching buffer. A specialized channel program is needed to communicate with such a device. ESCON. enterprise systems connection. A set of IBM products and services that provide a dynamically connected environment within an enterprise. Ethernet. A 10-Mbps baseband local area network that allows multiple stations to access the transmission medium at will without prior coordination, avoids contention by using carrier sense and deference, and resolves contention by using collision detection and delayed retransmission. Ethernet uses CSMA/CD. F Fast Ethernet. Ethernet network with a bandwidth of 100-Mbps FBA. fixed block architecture. A type of DASD on Multiprise 3000 or P/390 or emulated by VM. FDDI. fiber distributed data interface. An American National Standards Institute (ANSI) standard for a 100-Mbps LAN using optical fiber cables. FTP. file transfer protocol. In the Internet suite of protocols, an application layer protocol that uses TCP and Telnet services to transfer bulk-data files between machines or hosts. IOCS. input / output channel subsystem. See channel subsystem. IP. internet protocol. In the Internet suite of protocols, a connectionless protocol that routes data through a network or interconnected networks and acts as an intermediary between the higher protocol layers and the physical network. IP address.. The unique 32-bit address that specifies the location of each device or workstation on the Internet. For example, 9.67.97.103 is an IP address. IPL. initial program load (or boot). (1) The initialization procedure that causes an operating system to commence operation. (2) The process by which a configuration image is loaded into storage at the beginning of a work day or after a system malfunction. (3) The process of loading system programs and preparing a system to run jobs. IPv6. IP version 6. The next generation of the Internet Protocol. IPX. Internetwork Packet Exchange. (1) The network protocol used to connect Novell servers, or any workstation or router that implements IPX, with other workstations. Although similar to the Internet Protocol (IP), IPX uses different packet formats and terminology. IPX address. The 10-byte address, consisting of a 4-byte network number and a 6-byte node address, that is used to identify nodes in the IPX network. The node address is usually identical to the medium access control (MAC) address of the associated LAN adapter. IUCV. inter-user communication vehicle. A VM facility for passing data between virtual machines and VM components. G | Gigabit Ethernet (GbE). An ethernet network with a | bandwidth of 1000-Mbps K G3, G4, G5 and G6. The generation names of the S/390 CMOS based product family. kernel. The part of an operating system that performs basic functions such as allocating hardware resources. H kernel module. A dynamically loadable part of the kernel, such as a device driver or a file system. hardware console. A service-call logical processor that is the communication feature between the main processor and the service processor. kernel image. The kernel when loaded into memory. 200 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) L OSA-2. Open Systems Adapter-2. A common S/390 network interface card. LAN. local area network. OSA Express. an S/390 network interface card used with Gigabit Ethernet and other devices. LCS. LAN channel station. A protocol used by OSA. ldl. Linux disk layout. A basic disk structure for Linux for S/390. Now replaced by cdl. LDP. Linux Documentation Project. An attempt to provide a centralized location containing the source material for all open source Linux documentation. Includes user and reference guides, HOW TOs, and FAQs. The homepage of the Linux Documentation Project is http://www.linuxdoc.org Linux . a version of UNIX which runs on a wide range of machines from wristwatches through personal and small business machines to enterprise systems. OSPF. open shortest path first. A function used in route optimization in networks. P POR. power-on reset | POSIX. Portable Operating System Interface for | Computer Environments. An IEEE operating system | standard closely related to the UNIX system. R Linux for S/390. the port of Linux to the IBM S/390 architecture. router. A device or process which allows messages to pass between different networks. LPAR. logical partition of an S/390. S M MAC. medium access control. In a LAN this is the sub-layer of the data link control layer that supports medium-dependent functions and uses the services of the physical layer to provide services to the logical link control (LLC) sub-layer. The MAC sub-layer includes the method of determining when a device has access to the transmission medium. Mbps. million bits per second. MTU. maximum transmission unit. The largest block which may be transmitted as a single unit. Multicast. A protocol for the simultaneous distribution of data to a number of recipients, for example live video transmissions. Multiprise. An enterprise server of the S/390 family. N NIC. network interface card. The physical interface between the S/390 and the network. O OS. operating system. (1) Software that controls the execution of programs. An operating system may provide services such as resource allocation, scheduling, input/output control, and data management. (2) A set of programs that control how the system works. (3) The software that deals with the most basic operations that a computer performs. S/390. System/390. The family of IBM enterprise servers that demonstrate outstanding reliability, availability, scalability, security, and capacity in today’s network computing environments. SA/SE. stand alone support element. See SE. SE. support element. (1) An internal control element of a processor that assists in many of the processor operational functions. (2) A hardware unit that provides communications, monitoring, and diagnostic functions to a central processor complex. SNA. systems network architecture. The IBM architecture that defines the logical structure, formats, protocols, and operational sequences for transmitting information units through, and controlling the configuration and operation of, networks. The layered structure of SNA allows the ultimate origins and destinations of information (the users) to be independent of and unaffected by the specific SNA network services and facilities that are used for information exchange. Sysctl. system control programming manual control (frame). A means of dynamically changing certain Linux kernel parameters during operation. T TCP. transmission control protocol. A communications protocol used in the Internet and in any network that follows the Internet Engineering Task Force (IETF) standards for internetwork protocol. TCP provides a reliable host-to-host protocol between hosts in packet-switched communications networks and in Glossary 201 interconnected systems of such networks. It uses the Internet Protocol (IP) as the underlying protocol. TCP/IP. transmission control protocol/internet protocol. (1) The Transmission Control Protocol and the Internet Protocol, which together provide reliable end-to-end connections between applications over interconnected networks of different types. (2) The suite of transport and application protocols that run over the Internet Protocol. Telnet. A member of the Internet suite of protocols which provides a remote terminal connection service. It allows users of one host to log on to a remote host and interact as if they were using a terminal directly attached to that host. Token Ring. (1) According to IEEE 802.5, network technology that controls media access by passing a token (special packet or frame) between media-attached stations. (2) A FDDI or IEEE 802.5 network with a ring topology that passes tokens from one attaching ring station (node) to another. U UNIX. An operating system developed by Bell Laboratories that features multiprogramming in a multiuser environment. The UNIX operating system was originally developed for use on minicomputers but has been adapted for mainframes and microcomputers. V volume. A data carrier that is usually mounted and demounted as a unit, for example a tape cartridge or a disk pack. If a storage unit has no demountable packs the volume is the portion available to a single read/write mechanism. Numbers 3215. IBM console printer-keyboard. 3270. IBM information display system. 3370, 3380 or 3390. IBM direct access storage device (disk). 3480 or 3490. IBM magnetic tape subsystem. 9336 or 9345. IBM direct access storage device (disk). 202 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Notices This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information about the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user’s responsibility to evaluate and verify the operation of any non-IBM product, program, or service. The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk. IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. This information contains examples of data and reports used in daily business operations. To illustrate them as completely as possible, the examples include the names of individuals, companies, brands, and products. All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental. © Copyright IBM Corp. 2000, 2002 203 Trademarks The following terms are trademarks of International Business Machines Corporation in the United States, other countries, or both: Common User Access ECKD Enterprise Storage Server ESCON IBM | | | | | | | | | | | Multiprise OS/2 OS/390 PR/SM RAMAC S/390 Seascape System/390 | | VM/ESA | | | | VSE/ESA z/OS zSeries UNIX is a registered trademark of The Open Group in the United States and other countries. Linux is a registered trademark of Linus Torvalds and others. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. Other company, product, and service names may be trademarks or service marks of others. 204 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) International License Agreement for Non-Warranted Programs Part 1 - General Terms PLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE PROGRAM. IBM WILL LICENSE THE PROGRAM TO YOU ONLY IF YOU FIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY USING THE PROGRAM YOU AGREE TO THESE TERMS. IF YOU DO NOT AGREE TO THE TERMS OF THIS AGREEMENT, PROMPTLY RETURN THE UNUSED PROGRAM TO THE PARTY (EITHER IBM OR ITS RESELLER) FROM WHOM YOU ACQUIRED IT TO RECEIVE A REFUND OF THE AMOUNT YOU PAID. The Program is owned by International Business Machines Corporation or one of its subsidiaries (IBM) or an IBM supplier, and is copyrighted and licensed, not sold. The term ″Program″ means the original program and all whole or partial copies of it. A Program consists of machine-readable instructions, its components, data, audio-visual content (such as images, text, recordings, or pictures), and related licensed materials. This Agreement includes Part 1 - General Terms and Part 2 - Country-unique Terms and is the complete agreement regarding the use of this Program, and replaces any prior oral or written communications between you and IBM. The terms of Part 2 may replace or modify those of Part 1. 1. License Use of the Program IBM grants you a nonexclusive license to use the Program. You may 1) use the Program to the extent of authorizations you have acquired and 2) make and install copies to support the level of use authorized, providing you reproduce the copyright notice and any other legends of ownership on each copy, or partial copy, of the Program. If you acquire this Program as a program upgrade, your authorization to use the Program from which you upgraded is terminated. You will ensure that anyone who uses the Program does so only in compliance with the terms of this Agreement. You may not 1) use, copy, modify, or distribute the Program except as provided in this Agreement; 2) reverse assemble, reverse compile, or otherwise translate the Program except as specifically permitted by law without the possibility of contractual waiver; or 3) sublicense, rent, or lease the Program. Transfer of Rights and Obligations You may transfer all your license rights and obligations under a Proof of Entitlement for the Program to another party by transferring the Proof of Entitlement and a copy of this Agreement and all documentation. The transfer of your license rights and obligations terminates your authorization to use the Program under the Proof of Entitlement. 2. Proof of Entitlement The Proof of Entitlement for this Program is evidence of your authorization to use this Program and of your eligibility for future upgrade program prices (if announced) and potential special or promotional opportunities. © Copyright IBM Corp. 2000, 2002 205 3. Charges and Taxes IBM defines use for the Program for charging purposes and specifies it in the Proof of Entitlement. Charges are based on extent of use authorized. If you wish to increase the extent of use, notify IBM or its reseller and pay any applicable charges. IBM does not give refunds or credits for charges already due or paid. If any authority imposes a duty, tax, levy or fee, excluding those based on IBM’s net income, upon the Program supplied by IBM under this Agreement, then you agree to pay that amount as IBM specifies or supply exemption documentation. 4. No Warranty SUBJECT TO ANY STATUTORY WARRANTIES WHICH CAN NOT BE EXCLUDED, IBM MAKES NO WARRANTIES OR CONDITIONS EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, THE WARRANTY OF NON-INFRINGEMENT AND THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE PROGRAM OR TECHNICAL SUPPORT, IF ANY. IBM MAKES NO WARRANTY REGARDING THE CAPABILITY OF THE PROGRAM TO CORRECTLY PROCESS, PROVIDE AND/OR RECEIVE DATE DATA WITHIN AND BETWEEN THE 20TH AND 21ST CENTURIES. The exclusion also applies to any of IBM’s subcontractors, suppliers, or program developers (collectively called ″Suppliers″). Manufacturers, suppliers, or publishers of non-IBM Programs may provide their own warranties. 5. Limitation of Liability NEITHER IBM NOR ITS SUPPLIERS WILL BE LIABLE FOR ANY DIRECT OR INDIRECT DAMAGES, INCLUDING WITHOUT LIMITATION, LOST PROFITS, LOST SAVINGS, OR ANY INCIDENTAL, SPECIAL, OR OTHER ECONOMIC CONSEQUENTIAL DAMAGES, EVEN IF IBM IS INFORMED OF THEIR POSSIBILITY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE EXCLUSION OR LIMITATION MAY NOT APPLY TO YOU. 6. General Nothing in this Agreement affects any statutory rights of consumers that cannot be waived or limited by contract. IBM may terminate your license if you fail to comply with the terms of this Agreement. If IBM does so, you must immediately destroy the Program and all copies you made of it. You agree to comply with applicable export laws and regulations. Neither you nor IBM will bring a legal action under this Agreement more than two years after the cause of action arose unless otherwise provided by local law without the possibility of contractual waiver or limitation. Neither you nor IBM is responsible for failure to fulfill any obligations due to causes beyond its control. IBM does not provide program services or technical support, unless IBM specifies otherwise. The laws of the country in which you acquire the Program govern this Agreement, except 1) in Australia, the laws of the State or Territory in which the transaction is performed govern this Agreement; 2) in Albania, Armenia, Belarus, Bosnia/Herzegovina, Bulgaria, Croatia, Czech Republic, Georgia, Hungary, Kazakhstan, Kirghizia, Former Yugoslav Republic of Macedonia 206 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) (FYROM), Moldova, Poland, Romania, Russia, Slovak Republic, Slovenia, Ukraine, and Federal Republic of Yugoslavia, the laws of Austria govern this Agreement; 3) in the United Kingdom, all disputes relating to this Agreement will be governed by English Law and will be submitted to the exclusive jurisdiction of the English courts; 4) in Canada, the laws in the Province of Ontario govern this Agreement; and 5) in the United States and Puerto Rico, and People’s Republic of China, the laws of the State of New York govern this Agreement. Part 2 - Country-unique Terms AUSTRALIA: No Warranty (Section 4): The following paragraph is added to this Section: Although IBM specifies that there are no warranties, you may have certain rights under the Trade Practices Act 1974 or other legislation and are only limited to the extent permitted by the applicable legislation. Limitation of Liability (Section 3): The following paragraph is added to this Section: Where IBM is in breach of a condition or warranty implied by the Trade Practices Act 1974, IBM’s liability is limited to the repair or replacement of the goods, or the supply of equivalent goods. Where that condition or warranty relates to right to sell, quiet possession or clear title, or the goods are of a kind ordinarily acquired for personal, domestic or household use or consumption, then none of the limitations in this paragraph apply. GERMANY: No Warranty (Section 4): The following paragraphs are added to this Section: The minimum warranty period for Programs is six months. In case a Program is delivered without Specifications, we will only warrant that the Program information correctly describes the Program and that the Program can be used according to the Program information. You have to check the usability according to the Program information within the ″money-back guaranty″ period. Limitation of Liability (Section 5): The following paragraph is added to this Section: The limitations and exclusions specified in the Agreement will not apply to damages caused by IBM with fraud or gross negligence, and for express warranty. INDIA: General (Section 6): International License Agreement for Non-Warranted Programs 207 The following replaces the fourth paragraph of this Section: If no suit or other legal action is brought, within two years after the cause of action arose, in respect of any claim that either party may have against the other, the rights of the concerned party in respect of such claim will be forfeited and the other party will stand released from its obligations in respect of such claim. IRELAND: No Warranty (Section 4): The following paragraph is added to this Section: Except as expressly provided in these terms and conditions, all statutory conditions, including all warranties implied, but without prejudice to the generality of the foregoing, all warranties implied by the Sale of Goods Act 1893 or the Sale of Goods and Supply of Services Act 1980 are hereby excluded. ITALY: Limitation of Liability (Section 5): This Section is replaced by the following: Unless otherwise provided by mandatory law, IBM is not liable for any damages which might arise. NEW ZEALAND: No Warranty (Section 4): The following paragraph is added to this Section: Although IBM specifies that there are no warranties, you may have certain rights under the Consumer Guarantees Act 1993 or other legislation which cannot be excluded or limited. The Consumer Guarantees Act 1993 will not apply in respect of any goods or services which IBM provides, if you require the goods and services for the purposes of a business as defined in that Act. Limitation of Liability (Section 5): The following paragraph is added to this Section: Where Programs are not acquired for the purposes of a business as defined in the Consumer Guarantees Act 1993, the limitations in this Section are subject to the limitations in that Act. PEOPLE’S REPUBLIC OF CHINA: Charges (Section 3): The following paragraph is added to the Section: All banking charges incurred in the People’s Republic of China will be borne by you and those incurred outside the People’s Republic of China will be borne by IBM. 208 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) UNITED KINGDOM: Limitation of Liability (Section 5): The following paragraph is added to this Section at the end of the first paragraph: The limitation of liability will not apply to any breach of IBM’s obligations implied by Section 12 of the Sales of Goods Act 1979 or Section 2 of the Supply of Goods and Services Act 1982. International License Agreement for Non-Warranted Programs 209 210 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Index Numerics 3215 3270 3380 3390 9345 line mode terminal 27 14 14 14 27 A ATM feature 100 auto-detection 51, 52, 56, 58, 59, 93, 95, 98, 99 B basic mode 95 block device tape 34 boot utility 134 C chandev See channel device layer channel device layer 51 CTC 53 ESCON 53 LCS 53 qeth 99 character device tape 34 checksum 93, 102 cio_msg 164 codepage 29 commands, Linux dasdfmt 110 dasdview 114 fdasd 123 mke2fs 152 snIPL 130 zIPL 134 configuration CTC 195 ESCON 195 GbE 196 Gigabit Ethernet 196 OSA-Express 196 tape 198 connections CTC 66 ESCON 66 console 27 control characters 28 CRC 93 CTC 93 chandev example 63 channel device layer 53 configuration 195 connection 66 © Copyright IBM Corp. 2000, 2002 CTC (continued) device driver 63 device support 195 features 63 kernel example 65 kernel parameter 64 module example 66 module options 65 recovery 69 syntax 63, 64, 65 cua 93 D DASD partitioning 5 DASD device driver 11 dasdfmt, Linux command 110 dasdview, Linux command 114 device driver 97 CTC 63 DASD 11 ESCON 63 OSA-Express 97 tape 33 XPRAM 23 device major number 33 device support CTC 195 ESCON 195 GbE 196 Gigabit Ethernet 196 OSA-Express 196 tape 198 dynamic routing, and VIPA 153 E ECKD 14 edit characters VM console 29 Enterprise Storage Server 14 ESCON chandev example 63 channel device layer 53 configuration 195 connection 66 device driver 63 device support 195 features 63 kernel example 65 module example 66 recovery 69 syntax 63, 64, 65 ethernet 93 examples CTC chandev 63 CTC kernel 65 CTC module 66 ESCON chandev 63 examples (continued) ESCON kernel 65 ESCON module 66 snIPL 133 tape driver 37 VIPA (Virtual IP address) use 153 F fast ethernet 93 FBA 14 fdasd, Linux command 123 features CTC 63 ESCON 63 filesystem tape 34 G GbE configuration 196 device support 196 Gigabit Ethernet configuration 196 device support 196 H Hardware console 27 I i/o message suppression 164 insmod 65 IP address virtual 105 ipldelay 156 ISO9660 filesystem 34 IUCV 71 K kernel 94 kernel parameter CTC 64 tape device driver 35 kernel source tree ix, 134 L LCS channel device layer 53 device driver 93 line edit characters VM console 29 211 M S maxcpus 157 maximum tape devices 33 mem 158 mke2fs, Linux command 152 modprobe 65 module options CTC 65 module parameter tape device driver 36 multicast 95 Multiprise 14 Seascape 14 SILO 134 snIPL description 130 example 133 processing 132 restrictions 133 syntax 131 snIPL, Linux command 130 special characters VM console 29 static routing, and VIPA 153 syntax CTC 63, 64, 65 ESCON 63, 64, 65 snIPL 131 N noinitrd 159 notices 203 T O options 65 OSA 95 OSA-2 93 OSA-Express 93, 97 configuration 196 device support 196 OSA-Express ATM feature 100 P P/390 27, 158 parameter file 65 parameter line 166 partitioning DASD 5 PCI Cryptographic Accelerator (PCICA) 39 PCI Crytographic Coprocessor (PCICC) 39 PCICA (PCI Cryptographic Accelerator) 39 PCICC (PCI Cryptographic Coprocessor) 39 Q qdio 97 qeth channel device layer 99 queueing 98 V VInput 30 VIPA 105 example 153 static routing 153 usage 153 VIPA (virtual IP address) 153 virtual IP address 105 VM console line edit characters 29 vmhalt 163 X R RAMAC 14 recovery CTC 69 ESCON 69 ro 161 root 162 routing 98, 101 RVA 14 212 tape configuration 198 device support 198 tape block device 34 tape character device 34 tape control operations 34 tape device driver 33 kernel parameter 35 module parameter 36 tape driver examples 37 tape filesystem 34 tape restrictions 38 TCP/IP 63, 71 token ring 93 trademarks 204 x3270 30 XPRAM device driver 23 Z z90crypt driver 39 zIPL 134 zIPL, Linux command 134 Linux for S/390: Device Drivers and Installation Commands (March 4, 2002) Readers’ Comments — We’d Like to Hear from You Linux for S/390 Device Drivers and Installation Commands (March 4, 2002) Linux Kernel 2.4 Publication No. LNUX-1203-07 Overall, how satisfied are you with the information in this book? Overall satisfaction Very Satisfied Satisfied Neutral Dissatisfied h h h h Very Dissatisfied h How satisfied are you that the information in this book is: Accurate Complete Easy to find Easy to understand Well organized Applicable to your tasks Very Satisfied Satisfied Neutral Dissatisfied h h h h h h h h h h h h h h h h h h h h h h h h Very Dissatisfied h h h h h h Please tell us how we can improve this book: Thank you for your responses. May we contact you? h Yes h No When you send comments to IBM, you grant IBM a nonexclusive right to use or distribute your comments in any way it believes appropriate without incurring any obligation to you. Name Company or Organization Phone No. Address LNUX-1203-07 ___________________________________________________________________________________________________ Readers’ Comments — We’d Like to Hear from You Cut or Fold Along Line _ _ _ _ _ _ _Fold _ _ _and _ _ _Tape _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Please _ _ _ _ do _ _ not _ _ _staple _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Fold _ _ _and _ _ Tape ______ PLACE POSTAGE STAMP HERE IBM Deutschland Entwicklung GmbH Information Development Department 3248 Schoenaicher Strasse 220 71032 Boeblingen Germany ________________________________________________________________________________________ Fold and Tape Please do not staple Fold and Tape LNUX-1203-07 Cut or Fold Along Line LNUX-1203-07