SDB:Hercules s390 模拟
Hercules 并非由 IBM 官方支持或认可。事实上,有许多网页详细描述了 IBM 对 Hercules 的立场。重要的是要注意,您有责任确保您没有违反 IBM 或任何其他方的软件许可条款。在本 HOWTO 中,我仅讨论在 Hercules 模拟器中安装和运行 s390 上的 SLES。
Hercules 也可以在 Windows 和 Macintosh 主机上运行,但本文档仅介绍在 Linux 上(特别是 SUSE Linux Enterprise 上)作为应用程序运行的 Hercules。重点为这个特定配置提供一套简洁的示例,以便在 SUSE 上轻松复制。
系统要求
Hercules 可以在旧的硬件和软件上运行,但对于此应用程序,获得尽可能高的性能和可靠性非常重要。如果主机硬件相当慢,请记住,客户机将运行得明显更慢;毕竟,这是一种模拟软件。另外请注意,Hercules 并非没有错误。您可能会在 Hercules 下遇到在正确的 zSeries 大型机上不会遇到的运行时困难。
在 32 位主机系统上运行 Hercules 是完全可行的,但我建议不要这样做。我鼓励使用 x86_64 操作系统,配备 AMD 或 Intel EM64T。(我甚至能够在 IA64 上构建和运行 Hercules,但我没有足够的经验在 IA64 上运行模拟器内的任何内容来断言任何体验质量。)
最近,我尝试在 XEN 客户机(双重虚拟化)上运行 Hercules。我不推荐这样做。但显然是可行的。(s390 客户机中的浮点运算似乎无法正常工作,甚至会崩溃。任何 gcc 尝试使用浮点变量进行编译都会导致编译器崩溃。非常奇怪。)
与所有应用程序一样,您为应用程序提供的 RAM 和 CPU 越多,它运行得越好。我建议主机操作系统至少有 1GB,以便为在 Hercules 中运行的客户机提供大约 800MB。并且您至少需要 2 个 CPU,以便至少可以为 Hercules 客户机分配 1 个。
为了使系统有用,您需要一个网络配置。主机将充当客户机的代理,该客户机在 Hercules 下运行。所有网络流量都通过主机 TUN 适配器通过 CTC(点对点;字面意思是“客户端到客户端”)接口进行隧道传输。
初始主机设置
在本 HOWTO 中,我将主机称为 DELTA。稍后,在 Hercules 模拟器中运行的客户机将被称为 TANGO。
虽然主机 (DELTA) 本质上可以是来自各种供应商的任何相对较新的发行版,但这些说明仅涉及在 Linux 上(特别是 SUSE Linux Enterprise 上)运行的 Hercules。重点为这个特定配置提供一套简洁的示例,以便在 SUSE 上轻松复制。
客户机 (TANGO) 的安装需要主机 (DELTA) 具有以下内容
- 主机 (DELTA) 上配置良好且可工作的网络设备。这些示例中使用 IPv4。
- 一个 ftp 服务器,无论是 pure-ftpd 还是 vsftp,或者您选择的任何其他服务器。FTP 服务必须配置并正在运行。通常,您只需允许匿名访问,以便 zLinux 客户机无需提供身份验证凭据即可安装,但您可以根据自己的意愿进行配置。
- 下载将在客户机 (TANGO) 上安装的发行版的 ISO。下载的 ISO 将通过 CTC 桥接网络访问,并通过 DELTA 通过 ftp 提供。请确保下载 s390 ISO。将 ISO 放在 /srv/ftp/iso/(或您有空间的任何其他适当目录)之类的目录中。将 ISO 环回挂载到 /srv/ftp/install/,以便 ISO 的内容可以由 DELTA 的 FTP 服务提供。
安装 hercules.rpm
可以从 Open Build Service 下载 rpm。请确保下载代表您的发行版(即:SUSE Linux Enterprise Server 11 SP1 或 openSUSE 11.4)和体系结构(即:i586、x86_64)的正确 rpm。请注意,OBS 不支持针对 ix86 和 x86_64 以外的体系结构进行构建。我提供 ia64 rpm;如果您想在 IA64 上运行 Hercules,请与我联系。
在主机 (DELTA) 上安装 hercules rpm。
DASD 创建
DASD 是 IBM 对 DISK 的呈现。为了安装 SLES for zLinux,您需要一个或多个 DASD 磁盘包。创建 DASD 磁盘包将在主机 (DELTA) Linux 系统上生成一个文件,该文件将被 zLinux 系统挂载在您的 hercules 应用程序中,从而将其呈现给您要安装的客户机 (TANGO) 作为正常的 Linux 磁盘设备。
要创建 DASD,您需要在主机 (DELTA) 上有足够的可用磁盘空间。要为您的客户机 (TANGO) 创建 500 GB 的磁盘,您需要在主机 (DELTA) 上创建 500 GB 的 DASD 文件。
DASD 磁盘包有几种不同的类型。我见过最常用的类型——也是我最常用的类型——是 3390 型号 9。它大约为 9 GB,非常适合将包含客户机操作系统运行的 TANGO 的根分区 (/)。
虽然技术上不需要为客户机系统创建交换分区,但您也可以选择创建一个用于交换分区的 DASD 磁盘包文件。
为了方便起见,为您的 DASD 文件创建一个专用目录
# mkdir /DASD/ # cd /DASD/
创建 DASD 文件
# dasdinit -linux -lfs SLES11.3390-9 3390-9 ROOT # dasdinit -linux -lfs SLES11.swap 3390-2 SWAP
第一个命令将在 /DASD/SLES11.3390-9 中创建具有适当类型(3390-9)的文件,该文件将易于被在 Hercules 模拟器中运行的 zLinux 系统识别。其大小约为 9GB。尾随的“ROOT”参数是一个简单的 1 到 6 个字符的卷序列标识符(由您选择)。第二个命令创建一个较小的文件用于可选的交换分区。其大小约为 2GB。
配置文件
这是一个基本的配置文件。(请注意,包含注释的完整示例配置文件包含在我在 rpm 中发布的配置文件中。)
确保您分配的 RAM (MAINSIZE) 和处理器 (NUMCPU) 确实可以被客户机使用。如果您的主机没有那么多 RAM 或 CPU 可用,hercules 将无法加载。
请注意,800 MB 的 zLinux 客户机 RAM 确实很小。
#------------------------------------------------------------------------------ # CPU 配置 #------------------------------------------------------------------------------ CPUSERIAL 002623 # CPU 序列号 CPUMODEL 2064 # CPU 型号 MODEL EMULATOR # STSI 返回的型号 PLANT ZZ # STSI 返回的工厂 MANUFACTURER HRC # STSI 返回的制造商 LPARNAME HERCULES # DIAG 204 返回的 lparname CPUVERID FD # CPU 版本标识符 MAINSIZE 800 # 主存储大小,以兆字节为单位 XPNDSIZE 0 # 扩展存储大小,以兆字节为单位 NUMCPU 2 # CPU 数量 ARCHMODE ESAME # 体系结构模式 S/370、ESA/390 或 z/Arch ALRF DISABLE # ASN-和-LX-重用设施 ECPSVM NO # VM Assist:NO 或级别(推荐 20) #------------------------------------------------------------------------------ # OS 定制 #------------------------------------------------------------------------------ LOADPARM 0150.... # IPL 参数 OSTAILOR LINUX # OS 定制 SYSEPOCH 1900 # 初始 TOD 时钟的基准年份 #TZOFFSET 0 # 使用 UTC (GMT) TZOFFSET -0700 # 时区 #------------------------------------------------------------------------------ # 设备 #------------------------------------------------------------------------------ # .-----------------------设备编号 # | .-----------------设备类型 # | | .---------文件名和参数 # | | | # V V V # ---- ---- -------------------- 0009 3215-C / noprompt 001F 3270 # 我们的磁盘 0140 3390 /DASD/swap.0140 0150 3390 /DASD/SLES11.3390-9 # 安装 DVD 0160 9336 /srv/ftp/iso/SLES-11-SP1-DVD-s390x-GM-DVD1.iso # 网络 0E20,0E21 3088 CTCI /dev/net/tun 1500 192.168.254.21 192.168.254.20 255.255.255.0
关于配置文件中列出的设备的一些重要说明。
- 0140 设备是 Linux 客户机 (TANGO) 的交换设备。
- 0150 设备是主要磁盘分区,将用作 Linux 客户机 (TANGO) 的根 (/) 文件系统。
- 0E20 和 0E21 是 CTC 网络设备,它们在主机 (DELTA) 和在 Hercules 中运行的 zLinux 系统之间形成桥梁。zLinux 设备随后被呈现给客户机 (TANGO) 作为 ctc 设备,从而通过主机 (DELTA) 的隧道设备将客户机 (TANGO) 桥接到网络。
网络配置
如果希望 TANGO 具有正常工作的网络,则必须设置 DELTA 的有效网络配置。所有来自 TANGO 到外部网络的流量都通过主机 (DELTA) 的 NIC 设备使用 tun 内核模块和 /dev/net/tun 设备进行隧道传输。在 SLE11(和 SLE10)中,tun 模块会自动安装,并且在内核安装时会创建 /dev/net/tun 设备节点。
为了提供 TANGO 视角的网络隧道,该隧道由虚拟 CTC 链路(客户端到客户端)促进。这本质上是点对点网络。
请注意,hercules 将(应该)在启动 hercules 应用程序时自动分配 tun0(或 tunX,其中 X 是表示 DELTA 上第 X 个隧道设备的整数)。
这是一个有用的表格和图形来跟踪
A = DELTA 的 eth0 = 192.168.254.19
B = DELTA 的 tun0 = 192.168.254.20
C = zLinux 侧 CTC 适配器 = 192.168.254.21 =(又名“PLIP Partner”设备)
D = TANGO 的 ctc0 = 192.168.254.22
+--------------------------------------+
| Linux/x86 Driving System |
| (hostname=DELTA) |
+-------------------+ |
| Hercules | +-----------------+
| Linux Guest | | eth0 |
| (hostname=TANGO) | TCP/IP -------------------------> Network
| *D* | | | 192.168.254.19 |
| 192.168.254.22 | | | *A* |
|-------------------| | +-----------------+
| CTCA | | |
| *C* | *B* |
| 192.168.254.21 | 192.168.254.20 |
| (PLIP Partner) | tun0 |
+----------|--------+ | |
| /dev/tun | |
| | | |
| +------------------+ |
| Virtual CTC link |
| |
+--------------------------------------+
由于 DELTA 用于隧道传输 TANGO 的网络流量,因此必须将 DELTA 配置为充当 (ipv4) 代理。可以通过在 DELTA 上使用以下命令有效地完成此转发功能的设置
# echo 1 > /proc/sys/net/ipv4/ip_forward
SYSCTL 也可以用于在重新启动时自动设置内核参数。将以下行添加到 /etc/sysctl.conf
net.ipv4.ip_forward=1
永久设置这在概念上很简单,但在现实中却更困难。SLE 中的 SYSCTL 机制应该可以永久设置内核参数,但我的个人经验是,即使设置了 SYSCTL,该参数也经常重置为 0。因此,我发现自己在运行 hercules 之前必须手动将 /proc/sys/net/ipv4/ip_forward 设置为“1”。
在 hercules 运行之前或之后都可以设置 DELTA 上的 ip_forward。
# route add 192.168.254.22 gw 192.168.254.20 dev tun0
请注意,第一个 IP 地址是 Linux 客户机 (*D* 在上图) 的地址,第二个(网关参数的值)是主机 (*B* 在上图) 的 tun0 设备的地址。
此外,能够从 DELTA 到 TANGO(反之亦然)代理 ARP 表也非常有用。在 hercules 运行后,运行以下命令
# echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp# echo 1 > /proc/sys/net/ipv4/conf/tun0/proxy_arp
由于 tun0 设备在技术上只有在 hercules 运行时才可用,因此在运行 hercules 之前(或在 SYSCTL 中)为 tun0 设备设置 proxy_arp 内核参数没有实际意义。
启动 Hercules
(仅作为有用的提示。我总是使用 screen 运行我的 Hercules 模拟器。它比弄乱正常的控制台容易得多,并且允许我毫不费力地在主机控制台和 Hercules 控制台之间来回切换。)
一旦你有了可行的配置文件,启动 Hercules 模拟程序就很容易了。
# hercules -f /etc/hercules/hercules.cnf > /var/log/hercules
请注意,这使用 /etc/hercules/hercules.cnf 作为配置文件,并且所有重要的运行时输出都记录在 /var/log/hercules 中。日志文件非常重要,可用于诊断大多数问题。
启动后,模拟器将控制你当前的控制台。因此,强烈建议你使用 'screen' 启动 hercules。('screen' 提供各种优势,此处不再讨论。)
Hercules 程序启动后,会向你呈现 Hercules 控制台。以下提供一些关于 Hercules 控制台的有用提示。
与启动 Hercules 同等重要的是退出 Hercules。每当你想要或需要停止 Hercules 时——这将同时停止在模拟器内运行的任何客户机——只需从 Hercules 控制台发出 'quit' 命令即可。
另一个重要概念是“停止”已分配给模拟器的 CPU。停止 CPU 允许你强制(可能具有破坏性)停止在模拟器中运行的客户机,而无需停止 Hercules 本身。停止 CPU 的最常见方法是从 Hercules 控制台发出 "stopall" 命令。要重新启动已停止的 CPU,请运行 "startall"。
一些有用的 Hercules (s390) 命令
IPL(初始程序加载)SLES 安装
启动 hercules 后(请记住使用 'screen'),你需要通过从你下载到 DELTA 的环回挂载 ISO 进行 IPL 来引导安装。在 Hercules 控制台提示符下,运行以下命令
Command ==> ipl /srv/ftp/install/suse.ins
"ipl" 代表“初始程序加载”,它需要一段时间(取决于主机的速度)才能加载安装程序。你会在屏幕上看到很多输出。最终你会看到类似以下内容
>>> Linuxrc v3.3.81 (Kernel 3.0.13-0.27-default) <<< Main Menu 1) Start Installation 2) Settings 3) Expert 4) Exit or Reboot
要查看设置,请在 Command ==> 提示符下按“.2”。(那是“句点二”。)请注意,此列表中没有项目 #0。如果你想返回上一级菜单,请使用“.0”。如果你想使用默认值,请使用“.<Enter>”。
回答安装问题。
从主菜单按“.1”开始安装。再次按“.1”选择“1) 开始安装或更新”。按“.2”选择“网络”。
你可能需要手动配置网络设置。
设置网络设备可能很棘手。这是我在 Hercules 上进行全新安装时遇到最多的麻烦。借用上面的示例配置文件,“读取通道的设备地址”为“0.0.0e20”,而“写入通道”为“0.0.0e21”。(你可以通过按“.”和 Enter 键接受默认值(如果正确的话)。)设置 IP 地址时,你必须首先提供 Linux 客户机的预期地址(例如示例中的“192.168.254.22”),然后安装程序会要求提供 PLIP 伙伴的 IP 地址。如上面示例所示,该值为“192.168.254.21”。如果你的 CTC 配置成功,你将看到“net.xxxxx: ctc0: 与远程端连接”显示。
当要求提供 FTP 服务器的 IP 地址时,请记住你应该已经在主机上设置了匿名 FTP 服务器。使用主机的 IP 地址(例如,上述示例中的“192.168.254.19”)。
