Add zipl element as s390x architecture bootloader
s390x architecture uses zipl as bootloader. When used in combination with the vm element it replaces the existing bootloader element. It's mandatory for s390x vm images. Use cases --------- * Allow users to create s390x images that run on nova with s390x libvirt/kvm backend * Building nodepool images for s390x third party CI Supported Distros ----------------- The following listing shows all Distros that officially support s390x and how those Distros are supported in DIB with this patch. * SLES - not supported (SLES is not supported in DIB) * RHEL - not suppoprted (RHEL is not supported as KVM guest on s390x, therefore there's no rhel7 qcow image for s390x available like it is for other archictectures) * Ubuntu - supported Ubuntu images can for example be built using the following commands: $ disk-image-create ubuntu-minimal zipl vm $ disk-image-create ubuntu-minimal zipl $ disk-image-create ubuntu zipl vm Testing ------- Cross architecture building of s390x images is not supported so far. The plan is to set up a ThirdParty CI that builds the image for s390x and provides the logs. Co-Authored-By: Andreas Scheuring <andreas.scheuring@de.ibm.com> Co-Authored-By: Holger Smolinsky <holger@smolinski.name> Co-Authored-By: Zhiguo Deng <bjzgdeng@linux.vnet.ibm.com> Co-Authored-By: Arne Recknagel <arne.recknagel@hotmail.com> Closes-Bug: #1730641 Change-Id: I576e7edda68da12e97c60af38f457915efe7b934
This commit is contained in:
parent
a0045985f2
commit
271dc36f33
18
diskimage_builder/elements/zipl/README.rst
Normal file
18
diskimage_builder/elements/zipl/README.rst
Normal file
@ -0,0 +1,18 @@
|
||||
==========
|
||||
zipl
|
||||
==========
|
||||
|
||||
Zipl is the bootloader for s390x.
|
||||
|
||||
This element installs zipl on the base device holding the /boot directory on the system.
|
||||
It's mandatory for building s390x images. It replaces the `bootloader` element
|
||||
(which would install grub2 by default).
|
||||
|
||||
This element has been tested with `ubuntu` and `ubuntu-minimal` distro.
|
||||
|
||||
Arguments
|
||||
=========
|
||||
|
||||
* ``DIB_ZIPL_DEFAULT_CMDLINE`` sets the CMDLINE parameters that
|
||||
are appended to the zipl.conf parameter configuration. It defaults to
|
||||
'LANG=en_US.UTF-8 console=ttyS0 console=ttyS1'
|
1
diskimage_builder/elements/zipl/element-deps
Normal file
1
diskimage_builder/elements/zipl/element-deps
Normal file
@ -0,0 +1 @@
|
||||
package-installs
|
1
diskimage_builder/elements/zipl/element-provides
Normal file
1
diskimage_builder/elements/zipl/element-provides
Normal file
@ -0,0 +1 @@
|
||||
bootloader
|
@ -0,0 +1 @@
|
||||
export DIB_ZIPL_DEFAULT_CMDLINE=${DIB_ZIPL_DEFAULT_CMDLINE:-"LANG=en_US.UTF-8 console=ttyS0 console=ttyS1"}
|
70
diskimage_builder/elements/zipl/finalise.d/50-zipl
Executable file
70
diskimage_builder/elements/zipl/finalise.d/50-zipl
Executable file
@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
# Copyright (c) 2017 IBM Corp.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Configure zipl.
|
||||
|
||||
if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
|
||||
set -x
|
||||
fi
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
# get the device containing the /boot directory
|
||||
base_device=`df /boot --output=source | grep "/dev/*"`
|
||||
|
||||
cat > /lib/s390-tools/zipl_helper.loop <<EOF
|
||||
#!/bin/bash
|
||||
# This helper file is only required during image build if DIB is
|
||||
# called without any partitioning configured (e.g. without the "vm"
|
||||
# element). In that case the file system is put on a plain loop
|
||||
# device.
|
||||
#
|
||||
# It's not required if
|
||||
# * zipl is executed in in a running VM.
|
||||
# * DIB is configured to create partitions (e.g. with the "vm"
|
||||
# element).
|
||||
#
|
||||
# In both cases the disks block layout can be determined by
|
||||
# the operating system shipped zipl_helper.device-mapper file.
|
||||
|
||||
echo "targetbase=${base_device}"
|
||||
echo "targettype=scsi"
|
||||
# DIB only supports 512 Byte disk sectors and blocks (not to confuse
|
||||
# with filesystem block size which is 4k by default)
|
||||
echo "targetblocksize=512"
|
||||
# If no partitions are present, no MBR is present - the file system can start
|
||||
# at block 0
|
||||
echo "targetoffset=0"
|
||||
EOF
|
||||
|
||||
chmod +x /lib/s390-tools/zipl_helper.loop
|
||||
|
||||
cat > /etc/zipl.conf <<EOF
|
||||
# This has been modified by the cloud image build process
|
||||
[defaultboot]
|
||||
default=ubuntu
|
||||
|
||||
[ubuntu]
|
||||
target = /boot
|
||||
image = /boot/vmlinuz
|
||||
ramdisk = /boot/initrd.img
|
||||
parameters="root=LABEL=${DIB_ROOT_LABEL} $DIB_ZIPL_DEFAULT_CMDLINE"
|
||||
EOF
|
||||
|
||||
zipl -V
|
||||
|
||||
rm -f /lib/s390-tools/zipl_helper.loop
|
4
diskimage_builder/elements/zipl/package-installs.yaml
Normal file
4
diskimage_builder/elements/zipl/package-installs.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
s390-tools:
|
||||
arch: s390x
|
||||
dmsetup:
|
||||
arch: s390x
|
32
diskimage_builder/elements/zipl/pre-install.d/kernel_config
Executable file
32
diskimage_builder/elements/zipl/pre-install.d/kernel_config
Executable file
@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
# Copyright (c) 2017 IBM Corp.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
|
||||
set -x
|
||||
fi
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
KERNEL_CONF_FILE=/etc/kernel-img.conf
|
||||
|
||||
if [ -e "$KERNEL_CONF_FILE" ]; then
|
||||
# Remove the line if already set
|
||||
sed -i "/^link_in_boot.*/d" "$KERNEL_CONF_FILE"
|
||||
fi
|
||||
|
||||
# Set the kernel config option
|
||||
echo "link_in_boot = yes" >>"$KERNEL_CONF_FILE"
|
@ -668,3 +668,11 @@ Typically ``ppc64el`` refers to a ``.deb`` based distribution
|
||||
architecture, and ``ppc64le`` refers to a ``.rpm`` based distribution.
|
||||
Regardless of the distribution the kernel architecture is always
|
||||
``ppc64le``.
|
||||
|
||||
Notes about s390x (z Systems) Architecture
|
||||
++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Images for s390x can only be build on s390x hosts. Trying to build
|
||||
it with the architecture override on other architecture will
|
||||
cause the build to fail.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user