<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tmh1999</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tmh1999"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Tmh1999"/>
	<updated>2026-05-02T15:41:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15286</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15286"/>
		<updated>2018-06-22T17:48:34Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The boot media =&lt;br /&gt;
&lt;br /&gt;
For KVM, both ISO image and netboot media (kernel and initramfs) are supported.&lt;br /&gt;
&lt;br /&gt;
For z/VM, netboot media is supported.&lt;br /&gt;
&lt;br /&gt;
For LPAR, not yet supported.&lt;br /&gt;
&lt;br /&gt;
Boot media are found at:&lt;br /&gt;
&lt;br /&gt;
* http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x boot media requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/v3.8/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
:The remote location of the &amp;lt;code&amp;gt;modloop&amp;lt;/code&amp;gt; image is the same as the kernel and initramfs (see below).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer.&lt;br /&gt;
&lt;br /&gt;
{{Note|Fetching public keys from HTTP, HTTPS and FTPS are supported. HTTP should only be used in local development network where you own the network.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Alpine Linux security policies are against using passwords for root access via SSH as we consider using public-private key pairs is a much better approach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
==== Using iso image ====&lt;br /&gt;
Download latest iso image from : http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x&lt;br /&gt;
&lt;br /&gt;
Start qemu:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 1024 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039; \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -boot d -cdrom alpine-standard-3.8.0_rc8-s390x.iso&lt;br /&gt;
&lt;br /&gt;
==== Using netboot media ====&lt;br /&gt;
Download the latest [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 1024 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039; \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you have direct access to the qemu console, &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; might not be required.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on KVM, you can either SSH into the installer (below) or directly use the console starting qemu.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Go to [https://wiki.alpinelinux.org/wiki/S390x#Copying_SSH_keys_to_new_Alpine_system &amp;quot;Copying SSH keys to new Alpine system&amp;quot;] (below) to have SSH access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys to new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
By default, Alpine disables root login with a password via SSH. SSH keys are used instead.&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running (&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;), there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation (like in above example), do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc, etc. for whichever DASD you chose)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In &#039;sys&#039; installation, 1st partition is boot, 2nd partition is swap, 3rd partition is root }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; $ ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
After logging in to your new Alpine system, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you do &#039;sys&#039; installation, there will be no swap partition anymore and 1st partition will be boot, 2nd partition will be root}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script (&amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt;) at the moment. If you want to install/extend on more than 1 DASD, see [https://wiki.alpinelinux.org/wiki/S390x#Extending_LVM_volume &amp;quot;Extending LVM volume&amp;quot;]. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15285</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15285"/>
		<updated>2018-06-22T16:34:19Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The boot media =&lt;br /&gt;
&lt;br /&gt;
For KVM, both ISO image and netboot media (kernel and initramfs) are supported.&lt;br /&gt;
&lt;br /&gt;
For z/VM, netboot media is supported.&lt;br /&gt;
&lt;br /&gt;
For LPAR, not yet supported.&lt;br /&gt;
&lt;br /&gt;
Boot media are found at:&lt;br /&gt;
&lt;br /&gt;
* http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x boot media requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/v3.8/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
:The remote location of the &amp;lt;code&amp;gt;modloop&amp;lt;/code&amp;gt; image is the same as the kernel and initramfs (see below).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer.&lt;br /&gt;
&lt;br /&gt;
{{Note|Fetching public keys from HTTP, HTTPS and FTPS are supported. HTTP should only be used in local development network where you own the network.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Alpine Linux security policies are against using passwords for root access via SSH as we consider using public-private key pairs is a much better approach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
==== Using iso image ====&lt;br /&gt;
Download latest iso image from : http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x&lt;br /&gt;
&lt;br /&gt;
Start qemu:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039; \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -boot d -cdrom alpine-standard-3.8.0_rc8-s390x.iso&lt;br /&gt;
&lt;br /&gt;
==== Using netboot media ====&lt;br /&gt;
Download the latest [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039; \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you have direct access to the qemu console, &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; might not be required.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on KVM, you can either SSH into the installer (below) or directly use the console starting qemu.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Go to [https://wiki.alpinelinux.org/wiki/S390x#Copying_SSH_keys_to_new_Alpine_system &amp;quot;Copying SSH keys to new Alpine system&amp;quot;] (below) to have SSH access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys to new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
By default, Alpine disables root login with a password via SSH. SSH keys are used instead.&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running (&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;), there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation (like in above example), do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc, etc. for whichever DASD you chose)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In &#039;sys&#039; installation, 1st partition is boot, 2nd partition is swap, 3rd partition is root }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; $ ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
After logging in to your new Alpine system, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you do &#039;sys&#039; installation, there will be no swap partition anymore and 1st partition will be boot, 2nd partition will be root}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script (&amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt;) at the moment. If you want to install/extend on more than 1 DASD, see [https://wiki.alpinelinux.org/wiki/S390x#Extending_LVM_volume &amp;quot;Extending LVM volume&amp;quot;]. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15283</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15283"/>
		<updated>2018-06-22T05:33:27Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The boot media =&lt;br /&gt;
&lt;br /&gt;
For KVM, both ISO image and netboot media (kernel and initramfs) are supported.&lt;br /&gt;
&lt;br /&gt;
For z/VM, netboot media is supported.&lt;br /&gt;
&lt;br /&gt;
For LPAR, not yet supported.&lt;br /&gt;
&lt;br /&gt;
Boot media are found at:&lt;br /&gt;
&lt;br /&gt;
* http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x boot media requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/v3.8/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
:The remote location of the &amp;lt;code&amp;gt;modloop&amp;lt;/code&amp;gt; image is the same as the kernel and initramfs (see below).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer.&lt;br /&gt;
&lt;br /&gt;
{{Note|Fetching public keys from HTTP, HTTPS and FTPS are supported. HTTP should only be used in local development network where you own the network.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Alpine Linux security policies are against using passwords for root access via SSH as we consider using public-private key pairs is a much better approach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
==== Using iso image ====&lt;br /&gt;
Download latest iso image from : http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x&lt;br /&gt;
&lt;br /&gt;
Start qemu:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039; \&lt;br /&gt;
        -boot d -cdrom alpine-standard-3.8.0_rc8-s390x.iso&lt;br /&gt;
&lt;br /&gt;
==== Using netboot media ====&lt;br /&gt;
Download the latest [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039; \&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you have direct access to the qemu console, &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; might not be required.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on KVM, you can either SSH into the installer (below) or directly use the console starting qemu.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Go to [https://wiki.alpinelinux.org/wiki/S390x#Copying_SSH_keys_to_new_Alpine_system &amp;quot;Copying SSH keys to new Alpine system&amp;quot;] (below) to have SSH access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys to new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
By default, Alpine disables root login with a password via SSH. SSH keys are used instead.&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running (&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;), there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation (like in above example), do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc, etc. for whichever DASD you chose)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In &#039;sys&#039; installation, 1st partition is boot, 2nd partition is swap, 3rd partition is root }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; $ ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
After logging in to your new Alpine system, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you do &#039;sys&#039; installation, there will be no swap partition anymore and 1st partition will be boot, 2nd partition will be root}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script (&amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt;) at the moment. If you want to install/extend on more than 1 DASD, see [https://wiki.alpinelinux.org/wiki/S390x#Extending_LVM_volume &amp;quot;Extending LVM volume&amp;quot;]. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15282</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15282"/>
		<updated>2018-06-22T05:30:40Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The boot media =&lt;br /&gt;
&lt;br /&gt;
For KVM, both ISO image and netboot media (kernel and initramfs) are supported.&lt;br /&gt;
&lt;br /&gt;
For z/VM, netboot media is supported.&lt;br /&gt;
&lt;br /&gt;
For LPAR, not yet supported.&lt;br /&gt;
&lt;br /&gt;
Boot media are found at:&lt;br /&gt;
&lt;br /&gt;
* http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x boot media requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/v3.8/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
:The remote location of the &amp;lt;code&amp;gt;modloop&amp;lt;/code&amp;gt; image is the same as the kernel and initramfs (see below).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer.&lt;br /&gt;
&lt;br /&gt;
{{Note|Fetching public keys from HTTP, HTTPS and FTPS are supported. HTTP should only be used in local development network where you own the network.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Alpine Linux security policies are against using passwords for root access via SSH as we consider using public-private key pairs is a much better approach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
==== Using iso image ====&lt;br /&gt;
Download latest iso image from : http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x&lt;br /&gt;
&lt;br /&gt;
Start qemu:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -boot d -cdrom alpine-standard-3.8.0_rc8-s390x.iso&lt;br /&gt;
&lt;br /&gt;
==== Using netboot media ====&lt;br /&gt;
Download the latest [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you have direct access to the qemu console, &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; might not be required.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on KVM, you can either SSH into the installer (below) or directly use the console starting qemu.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Go to [https://wiki.alpinelinux.org/wiki/S390x#Copying_SSH_keys_to_new_Alpine_system &amp;quot;Copying SSH keys to new Alpine system&amp;quot;] (below) to have SSH access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys to new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
By default, Alpine disables root login with a password via SSH. SSH keys are used instead.&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running (&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;), there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation (like in above example), do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc, etc. for whichever DASD you chose)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In &#039;sys&#039; installation, 1st partition is boot, 2nd partition is swap, 3rd partition is root }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; $ ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
After logging in to your new Alpine system, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you do &#039;sys&#039; installation, there will be no swap partition anymore and 1st partition will be boot, 2nd partition will be root}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script (&amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt;) at the moment. If you want to install/extend on more than 1 DASD, see [https://wiki.alpinelinux.org/wiki/S390x#Extending_LVM_volume &amp;quot;Extending LVM volume&amp;quot;]. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15281</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15281"/>
		<updated>2018-06-22T05:23:40Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
&lt;br /&gt;
For KVM, both ISO image and netboot installer (kernel and initramfs) are supported.&lt;br /&gt;
&lt;br /&gt;
For z/VM, netboot installer is supported.&lt;br /&gt;
&lt;br /&gt;
For LPAR, not yet supported.&lt;br /&gt;
&lt;br /&gt;
Installer media are found at:&lt;br /&gt;
&lt;br /&gt;
* http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/v3.8/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
:The remote location of the &amp;lt;code&amp;gt;modloop&amp;lt;/code&amp;gt; image is the same as the kernel and initramfs (see below).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer.&lt;br /&gt;
&lt;br /&gt;
{{Note|Fetching public keys from HTTP, HTTPS and FTPS are supported. HTTP should only be used in local development network where you own the network.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Alpine Linux security policies are against using passwords for root access via SSH as we consider using public-private key pairs is a much better approach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
==== Using iso image ====&lt;br /&gt;
Download latest iso image from : http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x&lt;br /&gt;
&lt;br /&gt;
Start qemu:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -boot d -cdrom alpine-standard-3.8.0_rc8-s390x.iso&lt;br /&gt;
&lt;br /&gt;
==== Using netboot installer ====&lt;br /&gt;
Download the latest [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you have direct access to the qemu console, &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; might not be required.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc8/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on KVM, you can either SSH into the installer (below) or directly use the console starting qemu.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Go to [https://wiki.alpinelinux.org/wiki/S390x#Copying_SSH_keys_to_new_Alpine_system &amp;quot;Copying SSH keys to new Alpine system&amp;quot;] (below) to have SSH access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys to new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
By default, Alpine disables root login with a password via SSH. SSH keys are used instead.&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running (&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;), there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation (like in above example), do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc, etc. for whichever DASD you chose)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In &#039;sys&#039; installation, 1st partition is boot, 2nd partition is swap, 3rd partition is root }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; $ ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
After logging in to your new Alpine system, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you do &#039;sys&#039; installation, there will be no swap partition anymore and 1st partition will be boot, 2nd partition will be root}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script (&amp;lt;code&amp;gt;setup-alpine&amp;lt;/code&amp;gt;) at the moment. If you want to install/extend on more than 1 DASD, see [https://wiki.alpinelinux.org/wiki/S390x#Extending_LVM_volume &amp;quot;Extending LVM volume&amp;quot;]. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15271</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15271"/>
		<updated>2018-06-13T03:40:00Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
&lt;br /&gt;
The Alpine s390x installer is a netboot installer: it requires a kernel and an initramfs from the official repository.&lt;br /&gt;
&lt;br /&gt;
Installations on KVM and z/VM are supported. Installation on LPAR is not yet supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/v3.8/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
:The remote location of the &amp;lt;code&amp;gt;modloop&amp;lt;/code&amp;gt; image is the same as the kernel and initramfs (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer.&lt;br /&gt;
&lt;br /&gt;
{{Note|Fetching public keys from HTTPS and FTPS are supported. HTTP and FTP (plaintext) are NOT supported.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Alpine Linux security policies are against using passwords for root access via SSH as we consider using public-private key pairs is a much better approach.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc2/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc2/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc2/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you have direct access to the qemu console, &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; might not be required}}&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc2/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc2/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/v3.8/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/v3.8/releases/s390x/netboot-3.8.0_rc2/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on KVM, steps in this part does not involve the interaction with the console starting qemu anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Go to [https://wiki.alpinelinux.org/wiki/S390x#Copying_SSH_keys_to_new_Alpine_system &amp;quot;Copying SSH keys to new Alpine system&amp;quot;] (below) to have SSH access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys to new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
By default, Alpine disables root login with a password via SSH. SSH keys are used instead.&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running (&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;), there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation (like in above example), do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc, etc. for whichever DASD you chose)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In &#039;sys&#039; installation, 1st partition is boot, 2nd partition is swap, 3rd partition is root }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
After logging in to your new Alpine system, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you do &#039;sys&#039; installation, there will be no swap partition anymore and 1st partition will be boot, 2nd partition will be root}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script at the moment. If you want to install/extend on more than 1 DASD, see &amp;quot;Extending LVM volume&amp;quot;. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
2. The iso image is not supported yet (it is meant for LPAR installation). Use netboot images (kernel and initramfs) for now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15269</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15269"/>
		<updated>2018-06-11T22:13:49Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
The Alpine s390x installer includes a kernel, an initramfs (initrd image), and a parameter file.&lt;br /&gt;
&lt;br /&gt;
Installation on KVM and z/VM are supported.&lt;br /&gt;
&lt;br /&gt;
Installation on LPAR is not yet supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/latest-stable/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer. HTTPS, FTPS, HTTP, FTP are supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; : the password to login the installer via SSH.&lt;br /&gt;
&lt;br /&gt;
:You can use either &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; even though &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; is recommended method.&lt;br /&gt;
&lt;br /&gt;
:If neither of these fields are specified, the default password of blank is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on KVM, steps in this part does not involve the interaction with the console starting qemu anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Follow below part for directions to have access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys into new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
By default, Alpine disables root login with a password via SSH. SSH keys are used instead.&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running, there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation scheme above, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc , etc. for whichever DASD you chose but 3rd partition should be the same - root partition)&lt;br /&gt;
&lt;br /&gt;
::Then do accordingly for &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass&amp;lt;/code&amp;gt; as described above block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
Inside your new Alpine system, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. If you use &amp;lt;code&amp;gt;ssh_pass=secret&amp;lt;/code&amp;gt; and while running the installer you change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt;, the new Alpine system will have password as &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; instead. This is a known bug. However, you could always login to new system directly, either on qemu console or 3270 client console to change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt; after installation.&lt;br /&gt;
&lt;br /&gt;
2. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script at the moment. If you want to install/extend on more than 1 DASD, see &amp;quot;Extending LVM volume&amp;quot;. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x/Docker&amp;diff=15268</id>
		<title>S390x/Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x/Docker&amp;diff=15268"/>
		<updated>2018-06-11T21:23:43Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Running Alpine containers on Docker on Alpine s390x ==&lt;br /&gt;
&lt;br /&gt;
After [https://wiki.alpinelinux.org/wiki/S390x installing] Alpine on s390x, Docker needs to be installed first by adding &amp;lt;code&amp;gt;community&amp;lt;/code&amp;gt; respository:&lt;br /&gt;
&lt;br /&gt;
:For stable release, run:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;# echo http://dl-cdn.alpinelinux.org/alpine/latest-stable/community &amp;gt;&amp;gt; /etc/apk/repositories&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, run:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;# echo http://dl-cdn.alpinelinux.org/alpine/edge/community &amp;gt;&amp;gt; /etc/apk/repositories&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note| &amp;lt;code&amp;gt;community&amp;lt;/code&amp;gt; repository must match &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; repository&#039;s release version (stable or edge) }}&lt;br /&gt;
&lt;br /&gt;
Install Docker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # apk update &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # apk add docker &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start Docker service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # service docker start &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allow Docker service to auto start on next boot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # rc-update add docker &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run Alpine s390x container:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # docker run -ti alpine sh &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running Alpine containers on Docker on other s390x distros ==&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # docker run -ti alpine sh &amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15267</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15267"/>
		<updated>2018-06-11T21:23:03Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
The Alpine s390x installer includes a kernel, an initramfs (initrd image), and a parameter file.&lt;br /&gt;
&lt;br /&gt;
Installation on KVM and z/VM are supported.&lt;br /&gt;
&lt;br /&gt;
Installation on LPAR is not yet supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/latest-stable/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer. HTTPS, FTPS, HTTP, FTP are supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; : the password to login the installer via SSH.&lt;br /&gt;
&lt;br /&gt;
:You can use either &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; even though &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; is recommended method.&lt;br /&gt;
&lt;br /&gt;
:If neither of these fields are specified, the default password of blank is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on KVM, steps in this part does not involve the interaction with the console starting qemu anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Follow below part for directions to have access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys into new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running, there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation scheme above, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc , etc. for whichever DASD you chose but 3rd partition should be the same - root partition)&lt;br /&gt;
&lt;br /&gt;
::Then do accordingly for &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass&amp;lt;/code&amp;gt; as described above block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
Inside your new Alpine system, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. If you use &amp;lt;code&amp;gt;ssh_pass=secret&amp;lt;/code&amp;gt; and while running the installer you change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt;, the new Alpine system will have password as &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; instead. This is a known bug. However, you could always login to new system directly, either on qemu console or 3270 client console to change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt; after installation.&lt;br /&gt;
&lt;br /&gt;
2. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script at the moment. If you want to install/extend on more than 1 DASD, see &amp;quot;Extending LVM volume&amp;quot;. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See more =&lt;br /&gt;
Running Alpine s390x containers on Docker: https://wiki.alpinelinux.org/wiki/S390x/Docker&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x/Docker&amp;diff=15266</id>
		<title>S390x/Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x/Docker&amp;diff=15266"/>
		<updated>2018-06-11T21:19:35Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: Created page with &amp;quot;== Running Alpine containers on Docker on Alpine s390x ==  After [https://wiki.alpinelinux.org/wiki/S390x installing] Alpine on s390x, Docker needs to be installed first by ad...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Running Alpine containers on Docker on Alpine s390x ==&lt;br /&gt;
&lt;br /&gt;
After [https://wiki.alpinelinux.org/wiki/S390x installing] Alpine on s390x, Docker needs to be installed first by adding &amp;lt;code&amp;gt;community&amp;lt;/code&amp;gt; respository:&lt;br /&gt;
&lt;br /&gt;
:For stable release, run:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;# echo http://dl-cdn.alpinelinux.org/alpine/latest-stable/community &amp;gt;&amp;gt; /etc/apk/repositories&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, run:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;code&amp;gt;# echo http://dl-cdn.alpinelinux.org/alpine/edge/community &amp;gt;&amp;gt; /etc/apk/repositories&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note| &amp;lt;code&amp;gt;community&amp;lt;/code&amp;gt; repository must match &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; repository&#039;s release version (stable or edge) }}&lt;br /&gt;
&lt;br /&gt;
Install Docker:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # apk update &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # apk add docker &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start Docker service:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # service docker start &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allow Docker service to auto start on next boot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # rc-update add docker &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run Alpine s390x container:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # docker run -ti alpine sh &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running Alpine containers on Docker other on s390x distros ==&lt;br /&gt;
&lt;br /&gt;
Run:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # docker run -ti alpine sh &amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15265</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15265"/>
		<updated>2018-06-11T20:57:53Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
The Alpine s390x installer includes a kernel, an initramfs (initrd image), and a parameter file.&lt;br /&gt;
&lt;br /&gt;
Installation on KVM and z/VM are supported.&lt;br /&gt;
&lt;br /&gt;
Installation on LPAR is not yet supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/latest-stable/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer. HTTPS, FTPS, HTTP, FTP are supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; : the password to login the installer via SSH.&lt;br /&gt;
&lt;br /&gt;
:You can use either &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; even though &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; is recommended method.&lt;br /&gt;
&lt;br /&gt;
:If neither of these fields are specified, the default password of blank is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on KVM, steps in this part does not involve the interaction with the console starting qemu anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Follow below part for directions to have access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys into new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running, there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation scheme above, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc , etc. for whichever DASD you chose but 3rd partition should be the same - root partition)&lt;br /&gt;
&lt;br /&gt;
::Then do accordingly for &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass&amp;lt;/code&amp;gt; as described above block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
Inside your new Alpine system, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. If you use &amp;lt;code&amp;gt;ssh_pass=secret&amp;lt;/code&amp;gt; and while running the installer you change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt;, the new Alpine system will have password as &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; instead. This is a known bug. However, you could always login to new system directly, either on qemu console or 3270 client console to change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt; after installation.&lt;br /&gt;
&lt;br /&gt;
2. Installation on 2 or more DASDs (either ECKD and FBA) on z/VM is not supported in the installer script at the moment. If you want to install/extend on more than 1 DASD, see &amp;quot;Extending LVM volume&amp;quot;. However, installation on 2 or more virtio (SCSI) disks on KVM are supported just like other architectures.&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15264</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15264"/>
		<updated>2018-06-11T20:51:30Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
The Alpine s390x installer includes a kernel, an initramfs (initrd image), and a parameter file.&lt;br /&gt;
&lt;br /&gt;
Installation on KVM and z/VM are supported.&lt;br /&gt;
&lt;br /&gt;
Installation on LPAR is not yet supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=dhcp&amp;lt;/code&amp;gt; : use DHCP for network configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=client-ip:server-ip:gw-ip:netmask:hostname:device:autoconf:dns1:dns2&amp;lt;/code&amp;gt; : use static IP configuration, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;client-ip&amp;lt;/code&amp;gt; ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* &amp;lt;code&amp;gt;server-ip&amp;lt;/code&amp;gt; not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;gw-ip&amp;lt;/code&amp;gt;     the gateway ip address&lt;br /&gt;
* &amp;lt;code&amp;gt;netmask&amp;lt;/code&amp;gt;   the netmask&lt;br /&gt;
* &amp;lt;code&amp;gt;hostname&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;device&amp;lt;/code&amp;gt;    the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank&lt;br /&gt;
* &amp;lt;code&amp;gt;autoconf&amp;lt;/code&amp;gt;  not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;dns1&amp;lt;/code&amp;gt;      address of the DNS server&lt;br /&gt;
* &amp;lt;code&amp;gt;dns2&amp;lt;/code&amp;gt;      address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/latest-stable/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. It will be downloaded and copied into &amp;lt;code&amp;gt;/root/.ssh/authorized_keys&amp;lt;/code&amp;gt; in the installer. HTTPS, FTPS, HTTP, FTP are supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; : the password to login the installer via SSH.&lt;br /&gt;
&lt;br /&gt;
:You can use either &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; even though &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; is recommended method.&lt;br /&gt;
&lt;br /&gt;
:If neither of these fields are specified, the default password of blank is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla&lt;br /&gt;
&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; (the file in your laptop/workstation, at &#039;&#039;&#039;~/alpine.znetboot&#039;&#039;&#039;)&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039; (the file will be in z/VM console)&lt;br /&gt;
&lt;br /&gt;
{{Note|Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names.}}&lt;br /&gt;
&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Choose either &#039;&#039;&#039;Fixed&#039;&#039;&#039; or &#039;&#039;&#039;Variable&#039;&#039;&#039; for &#039;&#039;&#039;Record Format&#039;&#039;&#039;&lt;br /&gt;
:Enter a number for LRECL and BLKSIZE, respectively&lt;br /&gt;
{{Note|Any line in &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; that has more 80 chars (columns) will be splitted into more than 1 line when uploaded to z/VM (CMS) console via 3270. Count the number of characters/column of the longest line in your &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039; and fill it in LRECL. There is no restriction for BLKSIZE but 80 is preferred.}}&lt;br /&gt;
&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== (Optional) Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or &amp;lt;code&amp;gt;filel&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;xedit&amp;lt;/code&amp;gt; on CMD column to edit respective file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on KVM, steps in this part does not involve the interaction with the console starting qemu anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After SSH-ing into the Alpine installer, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; &#039;&#039;&#039;(separated by a space)&#039;&#039;&#039; to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Follow below part for directions to have access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys into new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running, there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation scheme above, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc , etc. for whichever DASD you chose but 3rd partition should be the same - root partition)&lt;br /&gt;
&lt;br /&gt;
::Then do accordingly for &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass&amp;lt;/code&amp;gt; as described above block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever DASD device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
Inside your new Alpine system, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. If you use &amp;lt;code&amp;gt;ssh_pass=secret&amp;lt;/code&amp;gt; and while running the installer you change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt;, the new Alpine system will have password as &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; instead. This is a known bug. However, you could always login to new system directly, either on qemu console or 3270 client console to change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt; after installation.&lt;br /&gt;
&lt;br /&gt;
2. Installation on 2+ DASDs (both ECKD and FBA) on z/VM is not supported in the installer script at the moment. If you want to install/extend on more than 1 DASD, see &amp;quot;Extending LVM volume&amp;quot;. However, installation on virtio disks on KVM are supported just like other architectures.&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=File:X3270-2.png&amp;diff=15263</id>
		<title>File:X3270-2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=File:X3270-2.png&amp;diff=15263"/>
		<updated>2018-06-11T19:47:19Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: Tmh1999 uploaded a new version of File:X3270-2.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15260</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15260"/>
		<updated>2018-06-08T04:54:41Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
The Alpine s390x installer includes a kernel, an initramfs (initrd image), and a parameter file.&lt;br /&gt;
&lt;br /&gt;
Installation on KVM and z/VM are supported.&lt;br /&gt;
&lt;br /&gt;
Installation on LPAR is not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; : the networking information, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1st field: ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* 2nd field: not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* 3rd field: the gateway ip address&lt;br /&gt;
* 4th field: the netmask&lt;br /&gt;
* 5th field: not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* 6th field: the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank.&lt;br /&gt;
* 7th field: fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; to use static IP configuration. Fill with &amp;lt;code&amp;gt;dhcp&amp;lt;/code&amp;gt; if DHCP is used.&lt;br /&gt;
* 8th field: address of the DNS server&lt;br /&gt;
* 9th field: address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/latest-stable/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. HTTPS, FTPS, HTTP, FTP are supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; : the password to login the installer via SSH.&lt;br /&gt;
&lt;br /&gt;
:You can use either &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; even though &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; is recommended method.&lt;br /&gt;
&lt;br /&gt;
:If neither of these fields are specified, the default password of blank is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla kernel] and [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla initramfs].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., [https://github.com/trothr/znetboot &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039;] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
(The first line is the line holder for a wide file since z/VM&#039;s default file width is 80 chars.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ############################################################################ HOLDER FOR WIDE FILE #&lt;br /&gt;
&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;], and [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt;] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039;&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on KVM, steps in this part does not involve the interaction with console starting qemu. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On SSH client/console, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; (separated by a space) to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Follow below part for directions to have access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys into new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running, there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation scheme above, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc , etc. for whichever DASD you chose but 3rd partition should be the same - root partition)&lt;br /&gt;
&lt;br /&gt;
::Then do accordingly for &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass&amp;lt;/code&amp;gt; as described above block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to [https://wiki.alpinelinux.org/wiki/S390x#Login_to_new_Alpine_system &amp;quot;Login to new Alpine system&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
At your new Alpine system, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. If you use &amp;lt;code&amp;gt;ssh_pass=secret&amp;lt;/code&amp;gt; and while running the installer you change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt;, the new Alpine system will have password as &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; instead. This is a known bug. However, you could always login to new system directly, either on qemu console or 3270 client console to change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt; after installation.&lt;br /&gt;
&lt;br /&gt;
2. Installation on 2+ DASDs (both ECKD and FBA) on z/VM is not supported in the installer script at the moment. If you want to install/extend on more than 1 DASD, see &amp;quot;Extending LVM volume&amp;quot;. However, installation on virtio disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
3. Only QETH layer 2 is supported at the moment on z/VM.&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15259</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15259"/>
		<updated>2018-06-08T04:44:03Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
The Alpine s390x installer includes a kernel, an initramfs (initrd image), and a parameter file.&lt;br /&gt;
&lt;br /&gt;
Installation on KVM and z/VM are supported.&lt;br /&gt;
&lt;br /&gt;
Installation on LPAR is not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; : the networking information, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1st field: ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* 2nd field: not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* 3rd field: the gateway ip address&lt;br /&gt;
* 4th field: the netmask&lt;br /&gt;
* 5th field: not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* 6th field: the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank.&lt;br /&gt;
* 7th field: fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; to use static IP configuration. Fill with &amp;lt;code&amp;gt;dhcp&amp;lt;/code&amp;gt; if DHCP is used.&lt;br /&gt;
* 8th field: address of the DNS server&lt;br /&gt;
* 9th field: address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/latest-stable/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. HTTPS, FTPS, HTTP, FTP are supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; : the password to login the installer via SSH.&lt;br /&gt;
&lt;br /&gt;
:You can use either &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; even though &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; is recommended method.&lt;br /&gt;
&lt;br /&gt;
:If neither of these fields are specified, the default password of blank is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the kernel [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla] and initramfs [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039; [https://github.com/trothr/znetboot] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
(The first line is the line holder for a wide file since z/VM&#039;s default file width is 80 chars.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ############################################################################ HOLDER FOR WIDE FILE #&lt;br /&gt;
&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec], and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039;&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
If you install on KVM, steps in this part does not involve the interaction with console starting qemu. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
If you install on z/VM, steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in the terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On SSH client/console, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; (separated by a space) to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Follow below part for directions to have access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys into new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running, there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys while still at the installer&#039;s terminal&lt;br /&gt;
* Option 2: poweroff the installer, start the new Alpine system and directly add the SSH keys&lt;br /&gt;
::: if you install on KVM, boot the new Alpine system on qemu, and copy the SSH keys&lt;br /&gt;
::: if you install on z/VM, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation scheme above, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt; # cp -ar /root/.ssh /mnt/root&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc , etc. for whichever DASD you chose but 3rd partition should be the same - root partition)&lt;br /&gt;
&lt;br /&gt;
::Then do accordingly for &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass&amp;lt;/code&amp;gt; as described above block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Go to &amp;quot;Login to new Alpine system&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use KVM, start qemu with new Alpine system (removing &amp;lt;code&amp;gt;-kernel&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-initrd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-append&amp;lt;/code&amp;gt; options)&lt;br /&gt;
&lt;br /&gt;
If you use z/VM, open the 3270 client, login with your z/VM username and password. You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;. Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wait for new Alpine system go up, then login as root user while in the qemu console (on KVM) or 3270 client (on z/VM). Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go to &amp;quot;Login to new Alpine system&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
On your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extending LVM volume ==&lt;br /&gt;
At your new Alpine system, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add -q util-linux e2fsprogs-extra&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  1.6G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk&lt;br /&gt;
&lt;br /&gt;
# dasdfmt -b 4096 -d cdl -yp /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# fdasd -a /dev/dasdb&lt;br /&gt;
&lt;br /&gt;
# pvcreate /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# vgextend vg0 /dev/dasdb1&lt;br /&gt;
&lt;br /&gt;
# lvextend -l +100%FREE /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# resize2fs /dev/vg0/lv_root&lt;br /&gt;
&lt;br /&gt;
# lsblk&lt;br /&gt;
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT&lt;br /&gt;
dasda            94:0    0  2.3G  0 disk &lt;br /&gt;
├─dasda1         94:1    0  100M  0 part /boot&lt;br /&gt;
└─dasda2         94:2    0  2.2G  0 part &lt;br /&gt;
  ├─vg0-lv_swap 254:0    0  588M  0 lvm  [SWAP]&lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
dasdb            94:4    0  2.3G  0 disk &lt;br /&gt;
└─dasdb1         94:5    0  2.3G  0 part &lt;br /&gt;
  └─vg0-lv_root 254:1    0  3.9G  0 lvm  /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Tips =&lt;br /&gt;
If you want to disable swap partition, after finishing NTP client step, quit the installer by pressing &amp;lt;code&amp;gt;Ctrl + C&amp;lt;/code&amp;gt;. Then run following command to complete remaining steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# setup-disk -s 0&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;br /&gt;
1. If you use &amp;lt;code&amp;gt;ssh_pass=secret&amp;lt;/code&amp;gt; and while running the installer you change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt;, the new Alpine system will have password as &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; instead. This is a known bug. However, you could always login to new system directly, either on qemu console or 3270 client console to change root password to &amp;lt;code&amp;gt;supersecret&amp;lt;/code&amp;gt; after installation.&lt;br /&gt;
&lt;br /&gt;
2. Installation on 2+ DASDs (both ECKD and FBA) on z/VM is not supported in the installer script at the moment. If you want to install/extend on more than 1 DASD, see &amp;quot;Extending LVM volume&amp;quot;. However, installation on virtio disks on KVM are supported just like other architectures.&lt;br /&gt;
&lt;br /&gt;
3. Only QETH layer 2 is supported at the moment on z/VM.&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15258</id>
		<title>S390x</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=S390x&amp;diff=15258"/>
		<updated>2018-06-08T01:40:43Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: create page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= The installer =&lt;br /&gt;
The Alpine s390x installer includes a kernel, an initramfs (initrd image), and a parameter file.&lt;br /&gt;
&lt;br /&gt;
Installation on KVM and z/VM are supported.&lt;br /&gt;
&lt;br /&gt;
Installation on LPAR is not supported at the moment.&lt;br /&gt;
&lt;br /&gt;
== Kernel parameters (and parmfile) ==&lt;br /&gt;
The Alpine s390x installer requires following kernel parameters to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; : the networking information, each field is separated by a colon &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;&lt;br /&gt;
* 1st field: ip address of the guest VM where we are going to run the installer&lt;br /&gt;
* 2nd field: not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* 3rd field: the gateway ip address&lt;br /&gt;
* 4th field: the netmask&lt;br /&gt;
* 5th field: not used, leave blank or fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
* 6th field: the network interface of the guest VM, default is &amp;lt;code&amp;gt;eth0&amp;lt;/code&amp;gt; if left blank.&lt;br /&gt;
* 7th field: fill with &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; to use static IP configuration. Fill with &amp;lt;code&amp;gt;dhcp&amp;lt;/code&amp;gt; if DHCP is used.&lt;br /&gt;
* 8th field: address of the DNS server&lt;br /&gt;
* 9th field: address of the 2nd DNS server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; : the location of the Alpine repository from which packages are downloaded.&lt;br /&gt;
&lt;br /&gt;
:For stable release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/latest-stable/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:For rolling release, use &amp;lt;code&amp;gt;http://dl-cdn.alpinelinux.org/alpine/edge/main&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;modloop=&amp;lt;/code&amp;gt; : the remote location of the image containing kernel&#039;s modules, required for LVM and raid setup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; : the remote location of your SSH public key which is used to allow SSH connection into the installer. HTTPS, FTPS, HTTP, FTP are supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; : the password to login the installer via SSH.&lt;br /&gt;
&lt;br /&gt;
:You can use either &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; even though &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; is recommended method.&lt;br /&gt;
&lt;br /&gt;
:If neither of these fields are specified, the default password of blank is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;z/VM only&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt; : the addresses of the DASD devices, either ECKD or FBA DASDs. Each device is separated with a comma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; : the network interface type and its subchannels. At the moment, only QETH layer 2 is supported, thus the name &amp;lt;code&amp;gt;qeth_l2&amp;lt;/code&amp;gt; is used (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Pre-installation =&lt;br /&gt;
&lt;br /&gt;
== KVM ==&lt;br /&gt;
On your running s390x host, download the kernel [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla] and initramfs [http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla].&lt;br /&gt;
&lt;br /&gt;
Create a virtual disk:&lt;br /&gt;
 $ qemu-img create alpine_disk.qcow2 5G&lt;br /&gt;
&lt;br /&gt;
Start qemu: (modify &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
 $ qemu-system-s390x -M s390-ccw-virtio \&lt;br /&gt;
        -m 2048 -smp 2 -nographic -enable-kvm \&lt;br /&gt;
        -hda alpine_disk.qcow2 \&lt;br /&gt;
        -net nic -net tap,ifname=tap0,script=no&#039;&lt;br /&gt;
        -kernel vmlinuz-vanilla \&lt;br /&gt;
        -initrd initramfs-vanilla \&lt;br /&gt;
        -append &amp;quot;ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8 alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla ssh_key=https://your-website.com/your-ssh-key.pub&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== z/VM ==&lt;br /&gt;
To ease out the process of downloading the images, punch the readers, ipl, etc., &#039;&#039;&#039;ZNETBOOT&#039;&#039;&#039; [https://github.com/trothr/znetboot] is used.&lt;br /&gt;
&lt;br /&gt;
==== Create the parm file ====&lt;br /&gt;
On your workstation/laptop, create a file named &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt; in your home directory with contents below (modify &amp;lt;code&amp;gt;dasd=&amp;lt;/code&amp;gt;&amp;lt;code&amp;gt;s390x_net=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ip=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;alpine_repo=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; for your needs)&lt;br /&gt;
&lt;br /&gt;
(The first line is the line holder for a wide file since z/VM&#039;s default file width is 80 chars.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ############################################################################ HOLDER FOR WIDE FILE #&lt;br /&gt;
&lt;br /&gt;
ZNETBOOT_KERNEL=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/vmlinuz-vanilla&lt;br /&gt;
ZNETBOOT_INITRD=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/initramfs-vanilla&lt;br /&gt;
ZNETBOOT_PROGRESS=1M&lt;br /&gt;
&lt;br /&gt;
dasd=0.0.04c0,0.0.05d1&lt;br /&gt;
s390x_net=qeth_l2,0.0.0560,0.0.0561,0.0.0562&lt;br /&gt;
&lt;br /&gt;
ip=192.168.1.2::192.168.1.1:255.255.255.0:none:eth0:none:8.8.8.8&lt;br /&gt;
alpine_repo=http://dl-cdn.alpinelinux.org/alpine/edge/main&lt;br /&gt;
modloop=http://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/s390x/modloop-vanilla&lt;br /&gt;
ssh_key=https://your-website.com/your-ssh-key.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Upload to z/VM system via 3270 client ====&lt;br /&gt;
[[File:X3270-1.png|right|300px|thumb|Figure 1.]]&lt;br /&gt;
On your workstation/laptop, download 2 files &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; [https://raw.githubusercontent.com/trothr/znetboot/master/znetboot.exec], and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; [https://raw.githubusercontent.com/trothr/znetboot/master/curl.rexx] to your home directory.&lt;br /&gt;
&lt;br /&gt;
Open 3270 client and log in the z/VM system with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
Upload 3 files &amp;lt;code&amp;gt;alpine.znetboot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; to the z/VM environment using the 3270 client (this tutorial uses x3270). On the top left corner, click &amp;quot;File&amp;quot;, then &amp;quot;File Transfer&amp;quot;. (Figure 1.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do following steps : (Figure 2.) [[File:X3270-2.png|right|300px|thumb|Figure 2.]]&lt;br /&gt;
* On &amp;quot;Local File Name&amp;quot; box, enter &#039;&#039;&#039;alpine.znetboot&#039;&#039;&#039;&lt;br /&gt;
* On &amp;quot;Host File Name&amp;quot; box, enter &#039;&#039;&#039;alpine znetboot&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Send to host&#039;&#039;&#039;&lt;br /&gt;
* Choose &#039;&#039;&#039;Host is VM/CMS&#039;&#039;&#039;&lt;br /&gt;
* Click &#039;&#039;&#039;Transfer File&#039;&#039;&#039; box&lt;br /&gt;
&lt;br /&gt;
Repeat the same steps with &amp;lt;code&amp;gt;znetboot.exec&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;curl.rexx&amp;lt;/code&amp;gt; files.&lt;br /&gt;
&lt;br /&gt;
Beware the difference between &#039;&#039;&#039;the dot &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;the space &amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&#039;&#039;&#039; characters in the file names&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Check the configuration files ====&lt;br /&gt;
On 3270 client, enter following commands to check if the configuration files are correctly transferred:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit alpine znetboot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit znetboot exec&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;xedit curl rex&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Start ZNETBOOT ====&lt;br /&gt;
On 3270 client, type below command and wait till Figure 3.: [[File:X3270-3.png|right|300px|thumb|Figure 3.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;znetboot alpine&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
Steps in this part does not involve the interaction with the 3270 client anymore. Everything is done in your terminal with SSH client.&lt;br /&gt;
&lt;br /&gt;
Either installing in KVM or z/VM environments, from your workstation/laptop, you will be able to run:&lt;br /&gt;
 $ ssh root@192.168.1.2 (change ip address to what you specified earlier)&lt;br /&gt;
&lt;br /&gt;
Remaining steps are similar to installing Alpine on other architectures (x86, arm, ppc, etc.), either on KVM (using virtio/SCSI disks) or on z/VM with FBA DASDs. Installing on ECKD DASDs requires an additional step, as described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Below is the detailed walkthrough of installing Alpine on a single ECKD DASD using LVM and extend that LVM to the second ECKD DASD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On SSH client/console, run:&lt;br /&gt;
 # setup-alpine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Select keyboard layout [none]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter system hostname (short form, e.g. &#039;foo&#039;) [localhost]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter your hostname&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available interfaces are: eth0.&lt;br /&gt;
Enter &#039;?&#039; for help on bridges, bonding and vlans.&lt;br /&gt;
Which one do you want to initialize? (or &#039;?&#039; or &#039;done&#039;) [eth0]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:type &#039;eth0&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Ip address for eth0? (or &#039;dhcp&#039;, &#039;none&#039;, &#039;?&#039;) [192.168.1.2]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter ip address or &#039;dhcp&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Netmask? [255.255.255.0]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter netmask&lt;br /&gt;
&amp;lt;code&amp;gt;Gateway? (or &#039;none&#039;) [192.168.1.1]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter gateway&#039;s ip address&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Do you want to do any manual network configuration? [no]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;no&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS domain name? (e.g &#039;bar.com&#039;) []&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter domain name or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;DNS nameserver(s)? [8.8.8.8 ]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter DNS nameserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Changing password for root&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which timezone are you in? (&#039;?&#039; for list) [UTC]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter timezone or &#039;?&#039; for list of timezones&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;HTTP/FTP proxy URL? (e.g. &#039;http://proxy:8080&#039;, or &#039;none&#039;) [none]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter proxy or press Enter for none&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Enter mirror number (1-27) or URL to add (or r/f/e/done) [f]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter a number or &#039;r&#039; or &#039;f&#039; or &#039;e&#039; or &#039;done&#039; as described&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which SSH server? (&#039;openssh&#039;, &#039;dropbear&#039; or &#039;none&#039;) [openssh]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter SSH server or press Enter for openssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Which NTP client to run? (&#039;busybox&#039;, &#039;openntpd&#039;, &#039;chrony&#039; or &#039;none&#039;) [chrony]&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;busybox&#039; or press Enter for chrony&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; (next step is the additional step for ECKD DASDs on z/VM)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available ECKD DASD(s) are:&lt;br /&gt;
  0.0.04c0	(3390/0c 3990/e9 IBM)&lt;br /&gt;
  0.0.05d1	(3390/0c 3990/e9 IBM)&lt;br /&gt;
Which ECKD DASD(s) would you like to be formatted using dasdfmt? (enter &#039;?&#039; for help) [all]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;all&#039; or &#039;0.0.04c0 0.0.05d1&#039; (separated by a space) to format all/both DASDs&lt;br /&gt;
:enter &#039;0.0.04c0&#039; or &#039;0.0.05d1&#039; to format respective DASD&lt;br /&gt;
:enter &#039;?&#039; for help&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;WARNING: Erase ECKD DASD 0.0.04c0? [y/N]:&amp;lt;/code&amp;gt;&lt;br /&gt;
:enter &#039;y&#039; to format&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Available disks are:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
Which disk(s) would you like to use? (or &#039;?&#039; for help or &#039;none&#039;) [dasda]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;dasda&#039; or press Enter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039;, &#039;lvm&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;lvm&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The following disk is selected (with LVM):&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
How would you like to use it? (&#039;sys&#039;, &#039;data&#039; or &#039;?&#039; for help) [?]&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;sys&#039; to install Alpine on disk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING: The following disk(s) will be erased:&lt;br /&gt;
  dasda	(2.5 GB IBM 0.0.04c0)&lt;br /&gt;
WARNING: Erase the above disk(s) and continue? [y/N]:&amp;lt;/pre&amp;gt;&lt;br /&gt;
:enter &#039;y&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Installation is complete. Please reboot.&amp;lt;/code&amp;gt;&lt;br /&gt;
:the installation is finished&lt;br /&gt;
&lt;br /&gt;
At this point, don&#039;t poweroff the installer right away. Follow below part for directions to have access to your new Alpine system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copying SSH keys into new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
After the installer&#039;s done running, there are 2 ways to copy your SSH key into the new Alpine system:&lt;br /&gt;
* Option 1: mount the installed disk and copy the SSH keys&lt;br /&gt;
* Option 2: poweroff the installer, use the 3270 client to ipl the new Alpine system and copy the SSH keys&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you use &#039;lvm&#039; + &#039;sys&#039; installation scheme above, do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/vg0/lv_root /mnt/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_key=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt; # cp -ar /root/.ssh/ /mnt/root/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::If you use &amp;lt;code&amp;gt;ssh_pass=&amp;lt;/code&amp;gt; , do:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /mnt/root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /mnt/root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use &#039;sys&#039; (without LVM) installation scheme above, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; # mount /dev/dasda3 /mnt/&amp;lt;/code&amp;gt; (change dasda to dasdb or dasdc , etc. for which DASD you chose but 3rd partition should be the same)&lt;br /&gt;
&lt;br /&gt;
::Then do accordingly for &amp;lt;code&amp;gt;ssh_key&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ssh_pass&amp;lt;/code&amp;gt; as described above block.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Option 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Run &amp;lt;code&amp;gt; # poweroff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Login to new Alpine system ==&lt;br /&gt;
&lt;br /&gt;
Open the 3270 client, login with your z/VM username and password.&lt;br /&gt;
&lt;br /&gt;
You may need to run &amp;lt;code&amp;gt; ipl cms&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Then run &amp;lt;code&amp;gt; ipl 04c0&amp;lt;/code&amp;gt; (or whichever device you chose as root disk in earlier steps).&lt;br /&gt;
&lt;br /&gt;
If you chose &#039;&#039;&#039;Option 2&#039;&#039;&#039; above, wait for new Alpine system to ipl/boot, then login as root user while in 3270 client. Then run:&lt;br /&gt;
::&amp;lt;code&amp;gt; # mkdir /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # wget https://your-website.com/your-ssh-key.pub -O /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 700 /root/.ssh&amp;lt;/code&amp;gt;&lt;br /&gt;
::&amp;lt;code&amp;gt; # chmod 600 /root/.ssh/authorized_keys&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then either &#039;&#039;&#039;Option 1&#039;&#039;&#039; or &#039;&#039;&#039;Option 2&#039;&#039;&#039;, on your workstation/laptop, use SSH client to login new Alpine system:&lt;br /&gt;
::&amp;lt;code&amp;gt; # ssh root@192.168.1.2&amp;lt;/code&amp;gt; (or whichever ip address you used)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Known Issues =&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=File:X3270-3.png&amp;diff=15257</id>
		<title>File:X3270-3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=File:X3270-3.png&amp;diff=15257"/>
		<updated>2018-06-08T00:00:55Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=File:X3270-2.png&amp;diff=15256</id>
		<title>File:X3270-2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=File:X3270-2.png&amp;diff=15256"/>
		<updated>2018-06-07T23:08:55Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: Tmh1999 uploaded a new version of File:X3270-2.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=File:X3270-1.png&amp;diff=15255</id>
		<title>File:X3270-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=File:X3270-1.png&amp;diff=15255"/>
		<updated>2018-06-07T23:08:34Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: Tmh1999 uploaded a new version of File:X3270-1.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=File:X3270-2.png&amp;diff=15254</id>
		<title>File:X3270-2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=File:X3270-2.png&amp;diff=15254"/>
		<updated>2018-06-07T23:03:51Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=File:X3270-1.png&amp;diff=15253</id>
		<title>File:X3270-1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=File:X3270-1.png&amp;diff=15253"/>
		<updated>2018-06-07T23:03:36Z</updated>

		<summary type="html">&lt;p&gt;Tmh1999: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tmh1999</name></author>
	</entry>
</feed>