0dbfe28745
Include the generic.ins file on the s390 boot iso, so it's directly bootable on an LPAR. The full iso already had generic.ins included.
88 lines
3.0 KiB
Cheetah
88 lines
3.0 KiB
Cheetah
<%page args="kernels, runtime_img, runtime_base, basearch, inroot, outroot"/>
|
|
<%
|
|
configdir="tmp/config_files/s390"
|
|
BOOTDIR="images"
|
|
KERNELDIR=BOOTDIR
|
|
INITRD_ADDRESS="0x02000000"
|
|
LORAXDIR="usr/share/lorax/"
|
|
# The assumption seems to be that there is only one s390 kernel, ever
|
|
kernel = kernels[0]
|
|
|
|
import os
|
|
from os.path import basename
|
|
from pylorax.sysutils import joinpaths
|
|
|
|
# Test the runtime_img, if it is > 4GiB we need to set -iso-level to 3
|
|
if os.stat(joinpaths(inroot, runtime_img)).st_size >= 4*1024**3:
|
|
isoargs = "-iso-level 3"
|
|
else:
|
|
isoargs = ""
|
|
%>
|
|
|
|
mkdir images
|
|
install ${runtime_img} images
|
|
treeinfo stage2 mainimage images/${runtime_base}
|
|
|
|
## install bootloader (such as it is) and bootloader config
|
|
install ${configdir}/redhat.exec ${BOOTDIR}
|
|
install ${configdir}/generic.prm ${BOOTDIR}
|
|
install ${configdir}/genericdvd.prm ${BOOTDIR}
|
|
install ${configdir}/cdboot.prm ${BOOTDIR}
|
|
install ${configdir}/generic.ins .
|
|
|
|
## configure bootloader
|
|
replace @INITRD_LOAD_ADDRESS@ ${INITRD_ADDRESS} generic.ins
|
|
|
|
## install kernel
|
|
installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/kernel.img
|
|
installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
|
|
|
|
## s390 needs some extra boot config
|
|
createaddrsize ${INITRD_ADDRESS} ${outroot}/${BOOTDIR}/initrd.img ${outroot}/${BOOTDIR}/initrd.addrsize
|
|
|
|
## s390 also has some special treeinfo data
|
|
treeinfo images-${basearch} initrd.addrsize ${BOOTDIR}/initrd.addrsize
|
|
treeinfo images-${basearch} generic.prm ${BOOTDIR}/generic.prm
|
|
treeinfo images-${basearch} genericdvd.prm ${BOOTDIR}/genericdvd.prm
|
|
treeinfo images-${basearch} generic.ins generic.ins
|
|
treeinfo images-${basearch} redhat.exec ${BOOTDIR}/redhat.exec
|
|
|
|
# Create optional product.img and updates.img in /images/
|
|
<% filegraft=""; images=["product", "updates"] %>
|
|
%for img in images:
|
|
%if exists("%s/%s/" % (LORAXDIR, img)):
|
|
installimg ${LORAXDIR}/${img}/ images/${img}.img
|
|
treeinfo images-${basearch} ${img}.img images/${img}.img
|
|
%endif
|
|
%endfor
|
|
|
|
# Inherit iso-graft/ if it exists from external templates
|
|
<%
|
|
import os
|
|
if os.path.exists(workdir + "/iso-graft"):
|
|
filegraft += " " + workdir + "/iso-graft"
|
|
%>
|
|
|
|
# Add the license files
|
|
%for f in glob("/usr/share/licenses/*-release/*"):
|
|
install ${f} ${f|basename}
|
|
<% filegraft += " {0}={1}/{0}".format(basename(f), outroot) %>
|
|
%endfor
|
|
|
|
## Make a combined kernel+initrd image for the iso
|
|
runcmd mk-s390-cdboot -i ${outroot}/${KERNELDIR}/kernel.img \
|
|
-r ${outroot}/${KERNELDIR}/initrd.img \
|
|
-p ${outroot}/${BOOTDIR}/cdboot.prm \
|
|
-o ${outroot}/${BOOTDIR}/cdboot.img
|
|
|
|
## make boot.iso
|
|
runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
|
|
-b ${BOOTDIR}/cdboot.img -c ${BOOTDIR}/boot.cat \
|
|
-boot-load-size 4 -no-emul-boot \
|
|
-R -J -V '${isolabel}' -graft-points \
|
|
.discinfo=${outroot}/.discinfo \
|
|
generic.ins=${outroot}/generic.ins \
|
|
${BOOTDIR}=${outroot}/${BOOTDIR} \
|
|
${filegraft}
|
|
treeinfo images-${basearch} boot.iso images/boot.iso
|