summaryrefslogtreecommitdiffstats
path: root/loader2/linuxrc.s390
diff options
context:
space:
mode:
Diffstat (limited to 'loader2/linuxrc.s390')
-rw-r--r--loader2/linuxrc.s390424
1 files changed, 424 insertions, 0 deletions
diff --git a/loader2/linuxrc.s390 b/loader2/linuxrc.s390
new file mode 100644
index 000000000..99ce5fd26
--- /dev/null
+++ b/loader2/linuxrc.s390
@@ -0,0 +1,424 @@
+#! /bin/sh
+#
+# Copyright (C) 2000,2001,2002 by
+# Bernhard Rosenkraenzer <bero@redhat.com>
+# Oliver Paukstadt <opaukstadt@millenux.com>
+# Karsten Hopp <karsten@redhat.de>
+# Florian La Roche <laroche@redhat.com>
+# Nils Philippsen <nils@redhat.de>
+# Helge Deller <hdeller@redhat.de>
+# David Sainty <dsainty@redhat.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+VERSION=1.01
+
+export TEXTDOMAIN=s390installer
+export TEXTDOMAINDIR=/usr/lib/locale
+
+debugshell()
+{
+ echo $"You have defined DEBUG, so here is a shell. You can use 'exit'"
+ echo $"to go on with the normal installation process."
+ /bin/sh
+}
+
+startinetd()
+{
+ echo
+ echo $"Starting telnetd and sshd to allow login over the network."
+ echo $"Welcome to the Red Hat Linux install environment $VERSION for $S390ARCH" > /etc/issue.net
+ echo $"Welcome to the Red Hat Linux install environment $VERSION for $S390ARCH" > /etc/motd
+ echo >> /etc/motd
+ echo $"Now run 'loader' to install Red Hat Linux." >> /etc/motd
+ echo >> /etc/motd
+
+ /sbin/xinetd -stayalive -reuse -pidfile /tmp/xinetd.pid
+ /sbin/sshd
+ while : ; do
+ echo
+ echo $"Please connect now to $IPADDR and start 'loader' from this shell."
+ ls -l /bin/sh | grep -q bash && /bin/sh --login || /bin/sh -l
+ done
+}
+
+S390ARCH=`uname -m`
+if [ "$S390ARCH" = "s390" ]; then
+ export S390ARCH="S/390"
+else
+ export S390ARCH="zSeries"
+fi
+
+echo $"Starting the $S390ARCH initrd to configure networking. Version is $VERSION"
+
+
+# set up env vars as we do in init.c
+if [ `uname -m` = "s390x" ]; then
+ LD_LIBRARY_PATH=/lib64:/usr/lib64:/usr/X11R6/lib64:/usr/kerberos/lib64:/lib:/usr/lib:/usr/X11R6/lib:/usr/kerberos/lib
+else
+ LD_LIBRARY_PATH=/lib:/usr/lib:/usr/X11R6/lib:/usr/kerberos/lib
+fi
+export LD_LIBRARY_PATH
+
+PATH="PATH=/usr/bin:/bin:/sbin:/usr/sbin:/mnt/sysimage/bin:/mnt/sysimage/usr/bin:/mnt/sysimage/usr/sbin:/mnt/sysimage/sbin:/mnt/sysimage/usr/X11R6/bin"
+export PATH
+HOME=/
+export HOME
+PYTHONPATH=/tmp/updates
+export PYTHONPATH
+
+# limit output on x3270 console
+mount -t proc none /proc
+mount -t devpts /dev/pts /dev/pts
+echo "1 4 1 1" > /proc/sys/kernel/printk
+
+mkdir /OCO
+mount -t ext2 /dev/ram /OCO >/dev/null 2>&1
+# if there is no second initrd, remove mountpoint because
+# anaconda checks for its existance:
+if [ "$?" != "0" ]; then
+ rm -rf /OCO 2>/dev/null
+fi
+
+ifconfig lo 127.0.0.1 netmask 255.0.0.0
+route add -host 127.0.0.1 dev lo 2>/dev/null
+
+[ -n "$DEBUG" ] && debugshell
+
+LO=""
+
+[ -L /sbin/insmod ] && LO=".o"
+
+# read in configuration as set by the parm file
+if [ -n "$HOST" ]; then
+ set -- `echo $HOST |sed 's/:/ /g'`
+ HOSTNAME=$1
+ DEVICE=$2
+ NETTYPE=`echo $DEVICE |sed -e 's/[0-9].*//'`
+ IPADDR=$3
+ if [ ":$NETTYPE" = ":iucv" ]; then
+ IUCV="iucv=$4"
+ GATEWAY=$5
+ MTU=$6
+ elif [ ":$NETTYPE" = ":ctc" -o ":$NETTYPE" = ":escon" ]; then
+ GATEWAY=$4
+ MTU=$5
+ else
+ echo $4 | grep -q "\." && MTU=$4 || echo "Invalid MTU $4, skipping"
+ fi
+fi
+if [ -n "$MTU" ]; then
+ MMTU="mtu $MTU"
+else
+ if [ "$NETTYPE" = "ctc" ]; then
+ MMTU="mtu 4096"
+ MTU="4096"
+ IMTU="1"
+ fi
+fi
+if [ -n "$NETWORK" ]; then
+ set -- `echo $NETWORK | sed 's/:/ /g'`
+ NETWORKIP=$1
+ NETMASK=$2
+ BROADCAST=$3
+ if [ ":$NETTYPE" != ":ctc" -a ":$NETTYPE" != ":iucv" -a ":$NETTYPE" != ":escon" ]; then
+ GATEWAY=$4
+ fi
+fi
+
+
+# Parse configuration
+# Check for missing parameters, prompt for them if necessary
+while [ -z "$HOSTNAME" ]; do
+ echo $"Please enter the FQDN of your new Linux guest (e.g. s390.redhat.com):"
+ read HOSTNAME
+done
+while [ -z "$NETTYPE" ]; do
+ echo $"Please enter which kind of network device do you intend to use"
+ echo " (e.g. ctc, escon, iucv, eth, hsi, tr):"
+ read NETTYPE
+done
+DEVICE=${NETTYPE}0
+if [ ":$NETTYPE" != ":iucv" ]; then # iucv is the only interface without chandev config
+ while [ -z "$CHANDEV" ]; do
+ echo $"Please enter parameters you need to pass to the channel device layer."
+ echo $"This includes the I/O ports of your ctc, escon, qeth, hsi and lcs devices."
+ echo $"Additional parameters for QETH devices such as the portname"
+ echo $"should be entered at the next prompt, not here !"
+ echo $"(e.g. \"ctc0,0x600,0x601\" will activate the ctc0 interface at I/O"
+ echo $"ports 0x600,0x601):"
+ read CHANDEV
+ done
+ echo "$CHANDEV" |grep -q "qeth"
+ if [ "$?" = "0" ]; then
+ if [ -z "$QETHPARM" ]; then
+ echo $"Each OSA-Express feature in QDIO mode must be associated with a port name"
+ echo $"Please enter additional parameters for your QETH device"
+ echo $"(e.g. \"add_parms,0x10,{lo_devno,hi_devno},portname:port_name\")"
+ echo $"Press enter if you don't want to enter additional parameters"
+ read QETHPARM
+ if [ -z "$QETHPARM" ]; then
+ echo $"You have been warned, but this will not work without an associated portname"
+ fi
+ fi
+ fi
+ echo "$CHANDEV" |grep -q "hsi"
+ if [ "$?" = "0" ]; then
+ if [ -z "$QETHPARM" ]; then
+ echo $"Please enter additional parameters for your HSI device"
+ echo $"(e.g. \"add_parms,0x10,{lo_devno,hi_devno},portname:port_name\")"
+ echo $"Press enter if you don't want to enter additional parameters"
+ read QETHPARM
+ fi
+ fi
+ [ -n "$CHANDEV" ] && echo "$CHANDEV" >/proc/chandev
+ [ -n "$QETHPARM" ] && echo "$QETHPARM" >/proc/chandev
+ [ -n "$CHANDEV" ] && echo "reprobe" >/proc/chandev
+fi
+if [ ":$NETTYPE" = ":eth" ] || [ ":$NETTYPE" = ":tr" ] || [ ":$NETTYPE" = ":hsi" ]; then
+ while [ -z "$IPADDR" ]; do
+ echo $"Please enter the IP address of your new Linux guest:"
+ read IPADDR
+ done
+ while [ -z "$NETWORK" ]; do
+ echo $"Enter the network address of the new Linux guest:"
+ read NETWORK
+ done
+ while [ -z "$NETMASK" ]; do
+ echo $"Enter the netmask for the new Linux guest (e.g. 255.255.255.0):"
+ read NETMASK
+ done
+ while [ -z "$BROADCAST" ]; do
+ echo $"Enter the broadcast address for the new Linux guest:"
+ read BROADCAST
+ done
+fi
+
+if [ ":$NETTYPE" = ":eth" ] || [ ":$NETTYPE" = ":tr" ] || [ ":$NETTYPE" = ":hsi" ]; then
+ while [ -z "$GATEWAY" ]; do
+ echo $"Please enter your default gateway:"
+ read GATEWAY
+ done
+ if echo "$CHANDEV" |grep -q "lcs"; then
+ LCS="on"
+ fi
+ # qeth and nettype!= eth is hipersockets !
+ if echo "$CHANDEV" |grep -q "qeth"; then
+ if echo "$NETTYPE" |grep -q "eth"; then
+ QETH="on"
+ elif echo "$NETTYPE" |grep -q "hsi"; then
+ HSI="on"
+ elif echo "$NETTYPE" |grep -q "tr"; then
+ TR="on"
+ fi
+ fi
+else # ctc0, escon0, iucv0
+ while [ -z "$GATEWAY" ]; do
+ echo $"Enter the IP of your ctc/escon/iucv point-to-point partner:"
+ read GATEWAY
+ done
+ if [ "$NETTYPE" = "ctc" ]; then
+ MMTU="mtu 4096"
+ MTU="4096"
+ IMTU="1"
+ else
+ echo $"Enter the maximal transfer unit (MTU) for this connection or leave empty:"
+ read MTU
+ if [ -n "$MTU" ]; then
+ MMTU="mtu 4096"
+ fi
+ fi
+
+ if [ ":$NETTYPE" = ":iucv" ]; then
+ while [ -z "$IUCV" ]; do
+ echo $"Enter iucv kernel module options (usually iucv=HOST,"
+ echo $"where HOST is TCPIP for VM, \$TCPIP for VIF):"
+ read IUCV
+ done
+ fi
+fi
+
+# configure network-interface
+KERNELVERSION=`cat /proc/version | awk '{ print $3 }'`
+if [ ":$NETTYPE" = ":ctc" -o ":$NETTYPE" = ":escon" ]; then
+ insmod ctc$LO $CTC
+ ifconfig $DEVICE $IPADDR $MMTU pointopoint $GATEWAY
+ route add -host $IPADDR dev $DEVICE 2>/dev/null
+elif [ ":$NETTYPE" = ":iucv" ]; then
+ insmod netiucv$LO $IUCV
+ ifconfig $DEVICE $IPADDR $MMTU pointopoint $GATEWAY
+ route add -host $IPADDR dev $DEVICE 2>/dev/null
+else # lcs, tr, qeth, hsi or older kernel without opensource-lcs
+ if [ "$DEVICE" = "eth0" -a "$HSI" = "on" ]; then
+ DEVICE="hsi0"
+ fi
+ insmod ipv6$LO
+ if [ -n "$LCS" ]; then
+ insmod -f lcs$LO
+ if [ "$?" = "1" ]; then
+ echo $"warning: no lcs module found in the first initrd, "
+ echo $" looking for second initrd"
+ else
+ ifconfig $DEVICE $IPADDR $MMTU netmask $NETMASK broadcast $BROADCAST
+ route add -net $NETWORK netmask $NETMASK dev $DEVICE 2>/dev/null
+ fi
+ fi
+ if [ -d "/OCO" ]; then
+ if [ -n "$LCS" ]; then
+ if [ -f /OCO/$KERNELVERSION/kernel/drivers/s390/net/lcs.o ]; then
+ insmod -f /OCO/$KERNELVERSION/kernel/drivers/s390/net/lcs$LO
+ else
+ echo $"error: no lcs module found"
+ fi
+ else # qeth or hsi
+ if [ -f /OCO/$KERNELVERSION/kernel/drivers/s390/qdio.o -a -f /OCO/$KERNELVERSION/kernel/drivers/s390/net/qeth.o ]; then
+ insmod -f /OCO/$KERNELVERSION/kernel/drivers/s390/qdio$LO
+ insmod -f /OCO/$KERNELVERSION/kernel/drivers/s390/net/qeth$LO
+ else
+ echo $"error: The qdio and the qeth modules are needed for this"
+ echo $"They cannot be found in /OCO/$KERNELVERSION/kernel/drivers/s390/, skipping..."
+ fi
+ fi
+ ifconfig $DEVICE $IPADDR $MMTU netmask $NETMASK broadcast $BROADCAST
+ route add -net $NETWORK netmask $NETMASK dev $DEVICE 2>/dev/null
+ fi
+fi
+route add default gw $GATEWAY dev $DEVICE 2>/dev/null
+
+if [ -z "$DNS" ]; then
+ echo $"Please enter your DNS server(s), separated by colons (:):"
+ read DNS
+fi
+if [ -z "$DNS" ]; then
+ echo $"You might encounter problems without a nameserver, especially"
+ echo $"with FTP installs"
+fi
+
+if [ -n "$DNS" -a -z "$SEARCHDNS" ]; then
+ echo $"Please enter your DNS search domain(s) (if any), separated by colons (:):"
+ read SEARCHDNS
+fi
+
+[ -n "$HOSTNAME" ] && hostname $HOSTNAME
+
+# show interfaces and routing table
+ifconfig -a
+route -n
+
+[ -n "$DEBUG" ] && debugshell
+
+echo $"Starting portmap."
+portmap
+
+# convert to space-separated lists
+if [ -n "$SEARCHDNS" ]; then
+ SEARCHDNS=`echo $SEARCHDNS |sed -e 's/:/ /g'`
+ for i in "$SEARCHDNS"; do echo "search $i"; done >> /etc/resolv.conf
+fi
+if [ -n "$DNS" ]; then
+ DNS=`echo $DNS |sed -e 's/:/ /g'`
+ for i in "$DNS"; do echo "nameserver $i"; done >> /etc/resolv.conf
+fi
+
+grep -q ext3 /proc/filesystems
+if [ "$?" != "0" ]; then
+ insmod jbd$LO
+ insmod ext3$LO
+fi
+
+
+# Don't add MTU to the installed system's config. It was
+# set to 4096 for the installer only
+if [ "$IMTU" = "1" ]; then
+ MTU=
+fi
+
+# transfer options into install environment
+cat > /tmp/install.cfg << EOF
+LANG="$LANG"
+S390ARCH="$S390ARCH"
+TEXTDOMAIN="$TEXTDOMAIN"
+TEXTDOMAINDIR="$TEXTDOMAINDIR"
+CHANDEV="$CHANDEV"
+QETHPARM="$QETHPARM"
+HOSTNAME="$HOSTNAME"
+DEVICE="$DEVICE"
+NETTYPE="$NETTYPE"
+IPADDR="$IPADDR"
+GATEWAY="$GATEWAY"
+MTU="$MTU"
+NETWORK="$NETWORK"
+NETMASK="$NETMASK"
+BROADCAST="$BROADCAST"
+INTERACTIVE="$INTERACTIVE"
+DNS="$DNS"
+SEARCHDNS="$SEARCHDNS"
+FORCEDASDFORMAT="$FORCEDASDFORMAT"
+LCS="$LCS"
+QETH="$QETH"
+HSI="$HSI"
+TR="$TR"
+IUCV="$IUCV"
+CTC="$CTC"
+ROOTPW="$ROOTPW"
+CROOTPW="$CROOTPW"
+ONBOOT="yes"
+export LANG CHANDEV QETHPARM S390ARCH TEXTDOMAIN TEXTDOMAINDIR HSI
+export HOSTNAME DEVICE NETTYPE IPADDR GATEWAY MTU
+export NETWORK NETMASK BROADCAST DNS SEARCHDNS
+export LCS QETH IUCV ROOTPW CROOTPW ONBOOT
+export TR
+EOF
+# immediately read it in again to export these into the shell below
+. /tmp/install.cfg
+cat /tmp/install.cfg >> /etc/profile
+cat > /tmp/netinfo << EOF
+DEVICE=$DEVICE
+ONBOOT=yes
+BOOTPROTO=static
+IPADDR=$IPADDR
+NETMASK=$NETMASK
+GATEWAY=$GATEWAY
+BROADCAST=$BROADCAST
+HOSTNAME=$HOSTNAME
+DOMAIN=
+MTU=$MTU
+EOF
+
+# so that the vars get propagated into the sshd shells
+cat >> /etc/profile <<EOF
+LD_LIBRARY_PATH=$LD_LIBRARY_PATH
+PATH=$PATH
+HOME=$HOME
+PYTHONPATH=$PYTHONPATH
+export LD_LIBRARY_PATH PATH HOME PYTHONPATH
+EOF
+
+echo $DEVICE | grep ctc && echo "REMIP=$GATEWAY" >> /tmp/netinfo
+echo $DEVICE | grep ctc && echo "export REMIP=$GATEWAY" >> /etc/profile
+
+[ -n "$DEBUG" ] && debugshell
+
+startinetd
+
+umount -a
+umount /proc
+
+exit 0
+# ;;; Local Variables: ***
+# ;;; mode: sh ***
+# ;;; tab-width:3 ***
+# ;;; end: ***
+# vim:ts=3:sw=3