Add -iso-level 3 when the install.img is > 4GiB

xorrisofs needs to use iso-level 3 when creating images with large
files. This adds tests to all the relevant templates, just like we used
to do for udf and mkisofs.

(cherry picked from commit 2264496fe85cedae77af35b509b140a5811d5743)
This commit is contained in:
Brian C. Lane 2019-03-28 08:34:30 -07:00
parent ae07d8d888
commit 9381205bbd
8 changed files with 74 additions and 10 deletions

View File

@ -6,7 +6,15 @@ KERNELDIR=PXEBOOTDIR
STAGE2IMG="images/install.img" STAGE2IMG="images/install.img"
LORAXDIR="usr/share/lorax/" LORAXDIR="usr/share/lorax/"
import os
from os.path import basename 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 mkdir images
@ -67,7 +75,7 @@ mkdir ${KERNELDIR}
%if exists("boot/efi/EFI/*/gcdaa64.efi"): %if exists("boot/efi/EFI/*/gcdaa64.efi"):
## make boot.iso ## make boot.iso
runcmd xorrisofs -o ${outroot}/images/boot.iso \ runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
${efiargs} -R -J -V '${isolabel}' \ ${efiargs} -R -J -V '${isolabel}' \
-graft-points \ -graft-points \
.discinfo=${outroot}/.discinfo \ .discinfo=${outroot}/.discinfo \

View File

@ -1,4 +1,4 @@
<%page args="kernels, runtime_img, runtime_base, basearch, outroot, arch"/> <%page args="kernels, runtime_img, runtime_base, basearch, inroot, outroot, arch"/>
<% <%
configdir="tmp/config_files/uboot" configdir="tmp/config_files/uboot"
PXEBOOTDIR="images/pxeboot" PXEBOOTDIR="images/pxeboot"
@ -12,7 +12,15 @@ LORAXDIR="usr/share/lorax/"
platforms = "" platforms = ""
delimiter = '' delimiter = ''
import os
from os.path import basename 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 mkdir images
@ -84,7 +92,7 @@ treeinfo ${basearch} platforms ${platforms}
%if exists("boot/efi/EFI/*/gcdarm.efi"): %if exists("boot/efi/EFI/*/gcdarm.efi"):
## make boot.iso ## make boot.iso
runcmd xorrisofs -o ${outroot}/images/boot.iso \ runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
${efiargs} -R -J -V '${isolabel}' \ ${efiargs} -R -J -V '${isolabel}' \
-graft-points \ -graft-points \
.discinfo=${outroot}/.discinfo \ .discinfo=${outroot}/.discinfo \

View File

@ -12,7 +12,15 @@ def valid_label(ch):
isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel) isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel)
import os
from os.path import basename 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 ${LIVEDIR} mkdir ${LIVEDIR}
@ -73,7 +81,7 @@ mkdir ${KERNELDIR}
%if exists("boot/efi/EFI/*/gcdaa64.efi"): %if exists("boot/efi/EFI/*/gcdaa64.efi"):
## make boot.iso ## make boot.iso
runcmd xorrisofs -o ${outroot}/images/boot.iso \ runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
${efiargs} -R -J -V '${isolabel}' \ ${efiargs} -R -J -V '${isolabel}' \
-graft-points \ -graft-points \
${KERNELDIR}=${outroot}/${KERNELDIR} \ ${KERNELDIR}=${outroot}/${KERNELDIR} \

View File

@ -12,7 +12,15 @@ LORAXDIR="usr/share/lorax/"
## with '_', which means we won't need any udev escapes. ## with '_', which means we won't need any udev escapes.
isolabel = ''.join(ch if ch.isalnum() else '_' for ch in isolabel) isolabel = ''.join(ch if ch.isalnum() else '_' for ch in isolabel)
import os
from os.path import basename 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 ${LIVEDIR} mkdir ${LIVEDIR}
@ -71,7 +79,7 @@ replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${GRUBDIR}/grub.cfg
%endfor %endfor
## make boot.iso ## make boot.iso
runcmd xorrisofs -v -U -J -R \ runcmd xorrisofs -v -U -J -R ${isoargs} \
-o ${outroot}/images/boot.iso \ -o ${outroot}/images/boot.iso \
-r -l -sysid PPC \ -r -l -sysid PPC \
-A "${product.name} ${product.version}" -V '${isolabel}' \ -A "${product.name} ${product.version}" -V '${isolabel}' \

View File

@ -14,7 +14,15 @@ def valid_label(ch):
isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel) isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel)
import os
from os.path import basename 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 ${LIVEDIR} mkdir ${LIVEDIR}
@ -104,7 +112,7 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
%endfor %endfor
## make boot.iso ## make boot.iso
runcmd xorrisofs -o ${outroot}/images/boot.iso \ runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
-isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
-b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \ -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
-boot-load-size 4 -boot-info-table -no-emul-boot \ -boot-load-size 4 -boot-info-table -no-emul-boot \

View File

@ -12,7 +12,15 @@ def valid_label(ch):
isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel) isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel)
import os
from os.path import basename 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 mkdir images
@ -78,7 +86,7 @@ replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${GRUBDIR}/grub.cfg
%endfor %endfor
## make boot.iso ## make boot.iso
runcmd xorrisofs -v -U -J -R \ runcmd xorrisofs -v -U -J -R ${isoargs} \
-o ${outroot}/images/boot.iso \ -o ${outroot}/images/boot.iso \
-r -l -sysid PPC \ -r -l -sysid PPC \
-A "${product.name} ${product.version}" -V '${isolabel}' \ -A "${product.name} ${product.version}" -V '${isolabel}' \

View File

@ -1,4 +1,4 @@
<%page args="kernels, runtime_img, runtime_base, basearch, outroot"/> <%page args="kernels, runtime_img, runtime_base, basearch, inroot, outroot"/>
<% <%
configdir="tmp/config_files/s390" configdir="tmp/config_files/s390"
BOOTDIR="images" BOOTDIR="images"
@ -8,7 +8,15 @@ LORAXDIR="usr/share/lorax/"
# The assumption seems to be that there is only one s390 kernel, ever # The assumption seems to be that there is only one s390 kernel, ever
kernel = kernels[0] kernel = kernels[0]
import os
from os.path import basename 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 mkdir images
@ -68,7 +76,7 @@ runcmd mk-s390-cdboot -i ${outroot}/${KERNELDIR}/kernel.img \
-o ${outroot}/${BOOTDIR}/cdboot.img -o ${outroot}/${BOOTDIR}/cdboot.img
## make boot.iso ## make boot.iso
runcmd xorrisofs -o ${outroot}/images/boot.iso \ runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
-b ${BOOTDIR}/cdboot.img -c ${BOOTDIR}/boot.cat \ -b ${BOOTDIR}/cdboot.img -c ${BOOTDIR}/boot.cat \
-boot-load-size 4 -no-emul-boot \ -boot-load-size 4 -no-emul-boot \
-R -J -V '${isolabel}' -graft-points \ -R -J -V '${isolabel}' -graft-points \

View File

@ -14,7 +14,15 @@ def valid_label(ch):
isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel) isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel)
import os
from os.path import basename 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 mkdir images
@ -113,7 +121,7 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
%endfor %endfor
## make boot.iso ## make boot.iso
runcmd xorrisofs -o ${outroot}/images/boot.iso \ runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
-isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
-b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \ -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
-boot-load-size 4 -boot-info-table -no-emul-boot \ -boot-load-size 4 -boot-info-table -no-emul-boot \