在hercules上安装Ubuntu 18.04 s390x
由于在bytectf2019中有一道s390的逆向题目,需要搭建IBM s390的环境,网上还没有中文教程,故记录一下我的安装过程。
我参考的链接:
http://www.josefsipek.net/docs/s390-linux/hercules-s390.html
目的
在macos上运行虚拟机Ubuntu 18.04,并在虚拟机中安装hercules模拟器,并在hercules中安装Ubuntu 18.04 s390x。s390x 是 IBM System z / zos系列 (zSeries)大型机 (mainframe) 硬件平台。
本地环境
物理机:
MacOS 10.14
Parallel Desktop 14
可通过局域网访问的代理
虚拟机:
- Ubuntu 18.04 64位
- 4核
- 16G内存
网络环境
虚拟机与物理机之间的网络环境为Parallel Desktop自动配置,采有nat。物理机上开启了通过局域网接入的代理。
ip | ||
---|---|---|
物理机 | 10.211.55.2 | |
虚拟机 | 10.211.55.8 | 10.1.1.1 |
Ubuntu 18.04 s390x | 10.1.1.2 |
开始
建一个工作目录
1 | cd |
安装Hercules 4.2
Hercules 4.2的github:https://github.com/SDL-Hercules-390/hyperion,之前的版本我尝试时出了各种各样的问题。
1 | wget https://github.com/SDL-Hercules-390/hyperion/archive/Release_4.2.tar.gz |
至此,如果没有报错的话,Hercules 4.2就已经安装好了。
准备Hercules 4.2虚拟机配置文件
1 | mkdir ubuntu # Hercules 4.2虚拟机目录 |
接下来创建一块硬盘,
1 | dasdinit -lfs -linux ubuntu.disk 3390-3 LIN120 # 这将创建一块2GB的硬盘 |
2GB对于ubuntu 来说是很小的,基本上在上面安装不了多少软件,可以使用以下命令常见更大的硬盘:
1 | dasdinit -lfs -linux ubuntu.disk 3390-3 LIN120 8000 # 这将创建一块6.8GB的硬盘 |
如果你不希望s390虚拟机硬盘占用太大空间,可以牺牲部分运行时的性能来压缩硬盘,你可以使用以下命令来节省部分空间:
1 | dasdinit -z -lfs -linux ubuntu.disk 3390-3 LIN120 # 2GB |
接下来编辑虚拟机配置文件:
1 | vim ubuntu.cnf |
在里面粘贴以下内容:
1 | CPUMODEL 2086 |
请注意这里配置了挂载的硬盘以及网络信息。具体的字段含义可以参考👆的第二篇文章
配置网络
请先查看自己电脑的网卡信息:
如上图所示,我的出口网卡为enp0s5,对应下方第一条命令的网卡:(如果你的是eth0,iptables的命令中也需要更改为eth0)
1 | su |
准备Ubuntu 18.04 s390x镜像
挂载镜像:
1 | mkdir /tmp/zubuntu/ |
系统开机
使用以下命令,用hercules加载配置文件ubuntu.cnf:
1 | sudo hercules -f ubuntu.cnf |
会出现如下画面:
可以按option/alt+1查看硬件信息,如下:
可以看到cpu都是停止状态,挂载的硬盘./dasd/ubuntu.disk,按下ESC可以返回
输入以下命令开始从镜像启动:
1 | herc =====> ipl /tmp/zubuntu/ubuntu.ins |
回车,正常的话可以看到:
寄存器在不断变化,cpu也处于忙碌状态
大约30秒后会出现:
输入
1 | .1 |
选择输入设备
1 | .1 |
选择输出设备
1 | .2 |
协议
1 | .1 |
自动配置网络,否
1 | .2 |
本机ip地址:
1 | .10.1.1.2 |
子网掩码:
1 | .255.255.255.0 |
网关
1 | .10.1.1.1 |
DNS服务器
1 | .8.8.8.8 |
Hostname
1 | .ubuntu-framed |
Domain
1 | .virtual |
ssh 密码,输入两次
1 | .password |
1 | .password |
配置成功,此时我们可以在另一个命令行通过ssh登陆,这个ssh密码仅用于安装系统。
1 | ssh install@10.1.1.2 |
密码是刚才设置的“password”
安装系统
从刚才的ssh进入:
进入漫长的下载环节…
如果出现bad mirror的错误,可以设置http代理服务器,比如像我物理机ip为10.211.50.2,物理机上运行着ClashX(一个基于v2ray的代理),其http代理端口为7890,则设置http代理:http://10.211.50.2:7890。
如果使用代理还是失败,请检查网络设置。方法为ssh上去或herc ===>进入,start shell,检查dns服务器,检查网络状况,检查虚拟机设置的iptables转发是否有效……
:hourglass_flowing_sand::hourglass::crescent_moon:……
现在跟安装普通ubuntu差不多了,设置用户和密码
接下来的安装过程比较简单,参考:[https://wiki.ubuntu.com/S390X/Installation%20In%20LPAR](https://wiki.ubuntu.com/S390X/Installation In LPAR)
更加漫长的等待⌛️……
安装好后会提示你重启系统,
接下来回到Hercules命令行,按下ESC进入硬件界面,依次按下”l”和”c”,再按下ESC返回,即可启动,
c代表从设备C 0120 3390 DASD ./dasd/ubuntu.disk [8000 cyls] IO[117155] 启动
如果没有反应可以exit退出重新进入,再从硬盘启动
安装成功
ssh登陆
后续:
- 在s390上安装sshfs挂载远端文件夹,方便文件传输
- 一点小问题:
- 安装了proxychains,配置好socks5代理后,无法通过pwoxychains代理上网。只好为apt配置http代理。
参考资料
hercules 4.2:http://www.softdevlabs.com/hyperion.html
较老的一篇在hercules安装debian教程:http://www.josefsipek.net/docs/s390-linux/hercules-s390.html
繁琐的视频教程:https://www.youtube.com/watch?v=QTBNt32ERWE
在hercules安装ubuntu教程:https://astr0baby.wordpress.com/2018/06/03/installing-ubuntu-18-04-server-s390x-in-hercules-mainframe-simulator/
ubuntu s390下载链接:https://wiki.ubuntu.com/S390X
Ubuntu安装引导:[https://wiki.ubuntu.com/S390X/Installation%20In%20LPAR](https://wiki.ubuntu.com/S390X/Installation In LPAR)