From 14fefba9691639c7909aa748b9d29f72b0b4cf83 Mon Sep 17 00:00:00 2001 From: isoft Date: Fri, 28 Oct 2022 02:43:32 +0000 Subject: [PATCH 1/2] sw64 modify --- .../99-generic/config_files/sw64/boot.msg | 5 + .../99-generic/config_files/sw64/grub.conf | 13 ++ .../config_files/sw64/grub2-efi.cfg | 40 ++++++ .../99-generic/config_files/sw64/isolinux.cfg | 120 ++++++++++++++++ .../live/config_files/sw64/boot.msg | 5 + .../live/config_files/sw64/grub.conf | 13 ++ .../live/config_files/sw64/grub2-efi.cfg | 36 +++++ .../live/config_files/sw64/isolinux.cfg | 110 ++++++++++++++ share/templates.d/99-generic/live/sw64.tmpl | 126 ++++++++++++++++ share/templates.d/99-generic/sw64.tmpl | 135 ++++++++++++++++++ src/pylorax/__init__.py | 6 +- src/pylorax/creator.py | 13 +- src/pylorax/mount.py | 2 +- src/pylorax/treebuilder.py | 1 + 14 files changed, 614 insertions(+), 11 deletions(-) create mode 100644 share/templates.d/99-generic/config_files/sw64/boot.msg create mode 100644 share/templates.d/99-generic/config_files/sw64/grub.conf create mode 100644 share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg create mode 100644 share/templates.d/99-generic/config_files/sw64/isolinux.cfg create mode 100644 share/templates.d/99-generic/live/config_files/sw64/boot.msg create mode 100644 share/templates.d/99-generic/live/config_files/sw64/grub.conf create mode 100644 share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg create mode 100644 share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg create mode 100644 share/templates.d/99-generic/live/sw64.tmpl create mode 100644 share/templates.d/99-generic/sw64.tmpl diff --git a/share/templates.d/99-generic/config_files/sw64/boot.msg b/share/templates.d/99-generic/config_files/sw64/boot.msg new file mode 100644 index 0000000..ff54899 --- /dev/null +++ b/share/templates.d/99-generic/config_files/sw64/boot.msg @@ -0,0 +1,5 @@ + +splash.lss + + - Press the 0107 key to begin the installation process. + diff --git a/share/templates.d/99-generic/config_files/sw64/grub.conf b/share/templates.d/99-generic/config_files/sw64/grub.conf new file mode 100644 index 0000000..4cf8ced --- /dev/null +++ b/share/templates.d/99-generic/config_files/sw64/grub.conf @@ -0,0 +1,13 @@ +#debug --graphics +default=1 +splashimage=@SPLASHPATH@ +timeout 60 +hiddenmenu +title Install @PRODUCT@ @VERSION@ + findiso + kernel @KERNELPATH@ @ROOT@ quiet + initrd @INITRDPATH@ +title Test this media & install @PRODUCT@ @VERSION@ + findiso + kernel @KERNELPATH@ @ROOT@ rd.live.check quiet + initrd @INITRDPATH@ diff --git a/share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg b/share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg new file mode 100644 index 0000000..951fb54 --- /dev/null +++ b/share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg @@ -0,0 +1,40 @@ +set default="1" + +function load_video { + insmod efi_gop + insmod efi_uga + insmod video_bochs + insmod video_cirrus + insmod all_video +} + +load_video +set gfxpayload=keep +insmod gzio +insmod part_gpt +insmod ext2 + +set timeout=60 +### END /etc/grub.d/00_header ### + +search --no-floppy --set=root -l '@ISOLABEL@' + +### BEGIN /etc/grub.d/10_linux ### +menuentry 'Install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ quiet + initrdefi @INITRDPATH@ +} +menuentry 'Test this media & install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ rd.live.check quiet + initrdefi @INITRDPATH@ +} +submenu 'Troubleshooting -->' { + menuentry 'Install @PRODUCT@ @VERSION@ in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ nomodeset quiet + initrdefi @INITRDPATH@ + } + menuentry 'Rescue a @PRODUCT@ system' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ rescue quiet + initrdefi @INITRDPATH@ + } +} diff --git a/share/templates.d/99-generic/config_files/sw64/isolinux.cfg b/share/templates.d/99-generic/config_files/sw64/isolinux.cfg new file mode 100644 index 0000000..0471f42 --- /dev/null +++ b/share/templates.d/99-generic/config_files/sw64/isolinux.cfg @@ -0,0 +1,120 @@ +default vesamenu.c32 +timeout 600 + +display boot.msg + +# Clear the screen when exiting the menu, instead of leaving the menu displayed. +# For vesamenu, this means the graphical background is still displayed without +# the menu itself for as long as the screen remains in graphics mode. +menu clear +menu background splash.png +menu title @PRODUCT@ @VERSION@ +menu vshift 8 +menu rows 18 +menu margin 8 +#menu hidden +menu helpmsgrow 15 +menu tabmsgrow 13 + +# Border Area +menu color border * #00000000 #00000000 none + +# Selected item +menu color sel 0 #ffffffff #00000000 none + +# Title bar +menu color title 0 #ff7ba3d0 #00000000 none + +# Press [Tab] message +menu color tabmsg 0 #ff3a6496 #00000000 none + +# Unselected menu item +menu color unsel 0 #84b8ffff #00000000 none + +# Selected hotkey +menu color hotsel 0 #84b8ffff #00000000 none + +# Unselected hotkey +menu color hotkey 0 #ffffffff #00000000 none + +# Help text +menu color help 0 #ffffffff #00000000 none + +# A scrollbar of some type? Not sure. +menu color scrollbar 0 #ffffffff #ff355594 none + +# Timeout msg +menu color timeout 0 #ffffffff #00000000 none +menu color timeout_msg 0 #ffffffff #00000000 none + +# Command prompt text +menu color cmdmark 0 #84b8ffff #00000000 none +menu color cmdline 0 #ffffffff #00000000 none + +# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message. + +menu tabmsg Press Tab for full configuration options on menu items. + +menu separator # insert an empty line +menu separator # insert an empty line + +label linux + menu label ^Install @PRODUCT@ @VERSION@ + kernel vmlinuz + append initrd=initrd.img @ROOT@ quiet + +label check + menu label Test this ^media & install @PRODUCT@ @VERSION@ + menu default + kernel vmlinuz + append initrd=initrd.img @ROOT@ rd.live.check quiet + +menu separator # insert an empty line + +# utilities submenu +menu begin ^Troubleshooting + menu title Troubleshooting + +label vesa + menu indent count 5 + menu label Install @PRODUCT@ @VERSION@ in ^basic graphics mode + text help + Try this option out if you're having trouble installing + @PRODUCT@ @VERSION@. + endtext + kernel vmlinuz + append initrd=initrd.img @ROOT@ nomodeset quiet + +label rescue + menu indent count 5 + menu label ^Rescue a @PRODUCT@ system + text help + If the system will not boot, this lets you access files + and edit config files to try to get it booting again. + endtext + kernel vmlinuz + append initrd=initrd.img @ROOT@ rescue quiet + +label memtest + menu label Run a ^memory test + text help + If your system is having issues, a problem with your + system's memory may be the cause. Use this utility to + see if the memory is working correctly. + endtext + kernel memtest + +menu separator # insert an empty line + +label local + menu label Boot from ^local drive + localboot 0xffff + +menu separator # insert an empty line +menu separator # insert an empty line + +label returntomain + menu label Return to ^main menu + menu exit + +menu end diff --git a/share/templates.d/99-generic/live/config_files/sw64/boot.msg b/share/templates.d/99-generic/live/config_files/sw64/boot.msg new file mode 100644 index 0000000..ff54899 --- /dev/null +++ b/share/templates.d/99-generic/live/config_files/sw64/boot.msg @@ -0,0 +1,5 @@ + +splash.lss + + - Press the 0107 key to begin the installation process. + diff --git a/share/templates.d/99-generic/live/config_files/sw64/grub.conf b/share/templates.d/99-generic/live/config_files/sw64/grub.conf new file mode 100644 index 0000000..6c4a51f --- /dev/null +++ b/share/templates.d/99-generic/live/config_files/sw64/grub.conf @@ -0,0 +1,13 @@ +#debug --graphics +default=1 +splashimage=@SPLASHPATH@ +timeout 60 +hiddenmenu +title Start @PRODUCT@ @VERSION@ + findiso + kernel @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet + initrd @INITRDPATH@ +title Test this media & start @PRODUCT@ @VERSION@ + findiso + kernel @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet + initrd @INITRDPATH@ diff --git a/share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg b/share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg new file mode 100644 index 0000000..2e24b15 --- /dev/null +++ b/share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg @@ -0,0 +1,36 @@ +set default="1" + +function load_video { + insmod efi_gop + insmod efi_uga + insmod video_bochs + insmod video_cirrus + insmod all_video +} + +load_video +set gfxpayload=keep +insmod gzio +insmod part_gpt +insmod ext2 + +set timeout=60 +### END /etc/grub.d/00_header ### + +search --no-floppy --set=root -l '@ISOLABEL@' + +### BEGIN /etc/grub.d/10_linux ### +menuentry 'Start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet + initrdefi @INITRDPATH@ +} +menuentry 'Test this media & start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet + initrdefi @INITRDPATH@ +} +submenu 'Troubleshooting -->' { + menuentry 'Start @PRODUCT@ @VERSION@ in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os { + linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image nomodeset quiet + initrdefi @INITRDPATH@ + } +} diff --git a/share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg b/share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg new file mode 100644 index 0000000..bc36bb9 --- /dev/null +++ b/share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg @@ -0,0 +1,110 @@ +default vesamenu.c32 +timeout 600 + +display boot.msg + +# Clear the screen when exiting the menu, instead of leaving the menu displayed. +# For vesamenu, this means the graphical background is still displayed without +# the menu itself for as long as the screen remains in graphics mode. +menu clear +menu background splash.png +menu title @PRODUCT@ @VERSION@ +menu vshift 8 +menu rows 18 +menu margin 8 +#menu hidden +menu helpmsgrow 15 +menu tabmsgrow 13 + +# Border Area +menu color border * #00000000 #00000000 none + +# Selected item +menu color sel 0 #ffffffff #00000000 none + +# Title bar +menu color title 0 #ff7ba3d0 #00000000 none + +# Press [Tab] message +menu color tabmsg 0 #ff3a6496 #00000000 none + +# Unselected menu item +menu color unsel 0 #84b8ffff #00000000 none + +# Selected hotkey +menu color hotsel 0 #84b8ffff #00000000 none + +# Unselected hotkey +menu color hotkey 0 #ffffffff #00000000 none + +# Help text +menu color help 0 #ffffffff #00000000 none + +# A scrollbar of some type? Not sure. +menu color scrollbar 0 #ffffffff #ff355594 none + +# Timeout msg +menu color timeout 0 #ffffffff #00000000 none +menu color timeout_msg 0 #ffffffff #00000000 none + +# Command prompt text +menu color cmdmark 0 #84b8ffff #00000000 none +menu color cmdline 0 #ffffffff #00000000 none + +# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message. + +menu tabmsg Press Tab for full configuration options on menu items. + +menu separator # insert an empty line +menu separator # insert an empty line + +label linux + menu label ^Start @PRODUCT@ @VERSION@ + kernel vmlinuz + append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image quiet + +label check + menu label Test this ^media & start @PRODUCT@ @VERSION@ + menu default + kernel vmlinuz + append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet + +menu separator # insert an empty line + +# utilities submenu +menu begin ^Troubleshooting + menu title Troubleshooting + +label vesa + menu indent count 5 + menu label Start @PRODUCT@ @VERSION@ in ^basic graphics mode + text help + Try this option out if you're having trouble starting + @PRODUCT@ @VERSION@. + endtext + kernel vmlinuz + append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image nomodeset quiet + +label memtest + menu label Run a ^memory test + text help + If your system is having issues, a problem with your + system's memory may be the cause. Use this utility to + see if the memory is working correctly. + endtext + kernel memtest + +menu separator # insert an empty line + +label local + menu label Boot from ^local drive + localboot 0xffff + +menu separator # insert an empty line +menu separator # insert an empty line + +label returntomain + menu label Return to ^main menu + menu exit + +menu end diff --git a/share/templates.d/99-generic/live/sw64.tmpl b/share/templates.d/99-generic/live/sw64.tmpl new file mode 100644 index 0000000..4173c0c --- /dev/null +++ b/share/templates.d/99-generic/live/sw64.tmpl @@ -0,0 +1,126 @@ +<%page args="kernels, runtime_img, basearch, inroot, outroot, product, isolabel, extra_boot_args"/> +<% +configdir="tmp/config_files/sw64" +SYSLINUXDIR="usr/share/syslinux" +PXEBOOTDIR="pxeboot" +BOOTDIR="isolinux" +KERNELDIR=PXEBOOTDIR +LIVEDIR="LiveOS" +LORAXDIR="usr/share/lorax/" + +## Don't allow spaces or escape characters in the iso label +def valid_label(ch): + return ch.isalnum() or ch == '_' + +isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel) + +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 ${LIVEDIR} +install ${runtime_img} ${LIVEDIR}/squashfs.img +treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img + +## install bootloader and config files +mkdir ${BOOTDIR} +install ${SYSLINUXDIR}/isolinux.bin ${BOOTDIR} +install ${SYSLINUXDIR}/vesamenu.c32 ${BOOTDIR} +install ${SYSLINUXDIR}/ldlinux.c32 ${BOOTDIR} +install ${SYSLINUXDIR}/libcom32.c32 ${BOOTDIR} +install ${SYSLINUXDIR}/libutil.c32 ${BOOTDIR} +install ${configdir}/isolinux.cfg ${BOOTDIR} +install ${configdir}/boot.msg ${BOOTDIR} +install ${configdir}/grub.conf ${BOOTDIR} +install usr/share/anaconda/boot/syslinux-splash.png ${BOOTDIR}/splash.png +install boot/memtest* ${BOOTDIR}/memtest + +## configure bootloader +replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg +replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg +replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg +replace @EXTRA@ '${extra_boot_args}' ${BOOTDIR}/isolinux.cfg + +## install kernels +mkdir ${KERNELDIR} +%for kernel in kernels: + %if kernel.flavor: + installkernel images-xen ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor} + installinitrd images-xen ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img + %else: + installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz + installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img + %endif +%endfor + +hardlink ${KERNELDIR}/vmlinuz ${BOOTDIR} +hardlink ${KERNELDIR}/initrd.img ${BOOTDIR} +%if basearch == 'x86_64': + treeinfo images-xen kernel ${KERNELDIR}/vmlinuz + treeinfo images-xen initrd ${KERNELDIR}/initrd.img +%endif + +## WHeeeeeeee, EFI. +<% efiargs=""; efigraft=""; efiarch32=None; efiarch64=None %> +%if exists("boot/efi/EFI/*/gcdia32.efi"): + <% efiarch32 = 'IA32' %> +%endif +%if exists("boot/efi/EFI/*/gcdx64.efi"): + <% efiarch64 = 'X64' %> +%endif +%if (efiarch32 or efiarch64) and basearch != 'i386': + <% + efigraft="EFI/BOOT={0}/EFI/BOOT".format(outroot) + images = [("images/efiboot.img", "-isohybrid-gpt-basdat")] + if domacboot: + images.append(("images/macboot.img", "-isohybrid-gpt-hfsplus")) + %> + %for img, hybrid in images: + <% + efiargs += " -eltorito-alt-boot -e {0} -no-emul-boot {1}".format(img, hybrid) + efigraft += " {0}={1}/{0}".format(img,outroot) + %> + treeinfo images-${basearch} ${img|basename} ${img} + %endfor + <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=efiarch32, efiarch64=efiarch64, isolabel=isolabel, extra_boot_args=extra_boot_args"/> +%endif + +# Create optional product.img and updates.img +<% filegraft=""; images=["product", "updates"]; compressargs=""; %> +%if basearch == 'i386': + # Limit the amount of memory xz uses on i386 + <% compressargs="--xz -9 --memlimit-compress=3700MiB" %> +%endif +%for img in images: + %if exists("%s/%s/" % (LORAXDIR, img)): + installimg ${compressargs} ${LORAXDIR}/${img}/ images/${img}.img + treeinfo images-${basearch} ${img}.img images/${img}.img + <% filegraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %> + %endif +%endfor + +# 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 boot.iso +runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \ + -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ + -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \ + -boot-load-size 4 -boot-info-table -no-emul-boot \ + ${efiargs} -R -J -V '${isolabel}' \ + -graft-points \ + ${BOOTDIR}=${outroot}/${BOOTDIR} \ + ${KERNELDIR}=${outroot}/${KERNELDIR} \ + ${LIVEDIR}=${outroot}/${LIVEDIR} \ + ${efigraft} ${filegraft} +treeinfo images-${basearch} boot.iso images/boot.iso diff --git a/share/templates.d/99-generic/sw64.tmpl b/share/templates.d/99-generic/sw64.tmpl new file mode 100644 index 0000000..193286c --- /dev/null +++ b/share/templates.d/99-generic/sw64.tmpl @@ -0,0 +1,135 @@ +<%page args="kernels, runtime_img, runtime_base, basearch, inroot, outroot, product, isolabel"/> +<% +configdir="tmp/config_files/sw64" +SYSLINUXDIR="usr/share/syslinux" +PXEBOOTDIR="pxeboot" +STAGE2IMG="isoft/sw64/root-image.fs.sfs" +BOOTDIR="isolinux" +KERNELDIR=PXEBOOTDIR +LORAXDIR="usr/share/lorax/" + +## Don't allow spaces or escape characters in the iso label +def valid_label(ch): + return ch.isalnum() or ch == '_' + +isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel) + +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 isoft/sw64 +install ${runtime_img} ${STAGE2IMG} +treeinfo stage2 mainimage isoft/sw64/${runtime_base} + +## install bootloader and config files +mkdir ${BOOTDIR} +install ${SYSLINUXDIR}/isolinux.bin ${BOOTDIR} +install ${SYSLINUXDIR}/vesamenu.c32 ${BOOTDIR} +install ${SYSLINUXDIR}/ldlinux.c32 ${BOOTDIR} +install ${SYSLINUXDIR}/libcom32.c32 ${BOOTDIR} +install ${SYSLINUXDIR}/libutil.c32 ${BOOTDIR} +install ${configdir}/isolinux.cfg ${BOOTDIR} +install ${configdir}/boot.msg ${BOOTDIR} +install ${configdir}/grub.conf ${BOOTDIR} +install usr/share/anaconda/boot/syslinux-splash.png ${BOOTDIR}/splash.png +install boot/memtest* ${BOOTDIR}/memtest + +## configure bootloader +replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg +replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg +replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg + +## install kernels +mkdir ${KERNELDIR} +%for kernel in kernels: + %if kernel.flavor: + ## i386 PAE + installkernel images-xen ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor} + installinitrd images-xen ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img + %else: + ## normal i386, x86_64 + installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz + installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img + %endif +%endfor + +hardlink ${KERNELDIR}/vmlinuz ${BOOTDIR} +hardlink ${KERNELDIR}/initrd.img ${BOOTDIR} +%if basearch == 'x86_64': + treeinfo images-xen kernel ${KERNELDIR}/vmlinuz + treeinfo images-xen initrd ${KERNELDIR}/initrd.img +%endif + +## WHeeeeeeee, EFI. +<% efiargs=""; efigraft=""; efiarch32=None; efiarch64=None %> +%if exists("boot/efi/EFI/*/gcdia32.efi"): + <% efiarch32 = 'IA32' %> +%endif +%if exists("boot/efi/EFI/*/gcdx64.efi"): + <% efiarch64 = 'X64' %> +%endif +%if (efiarch32 or efiarch64) and basearch != 'i386': + <% + efigraft="EFI/BOOT={0}/EFI/BOOT".format(outroot) + images = [("images/efiboot.img", "-isohybrid-gpt-basdat")] + if domacboot: + images.append(("images/macboot.img", "-isohybrid-gpt-hfsplus")) + %> + %for img, hybrid in images: + <% + efiargs += " -eltorito-alt-boot -e {0} -no-emul-boot {1}".format(img, hybrid) + efigraft += " {0}={1}/{0}".format(img,outroot) + %> + treeinfo images-${basearch} ${img|basename} ${img} + %endfor + <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=efiarch32, efiarch64=efiarch64, isolabel=isolabel"/> +%endif + +# Create optional product.img and updates.img +<% filegraft=""; images=["product", "updates"]; compressargs=""; %> +%if basearch == 'i386': + # Limit the amount of memory xz uses on i386 + <% compressargs="--xz -9 --memlimit-compress=3700MiB" %> +%endif +%for img in images: + %if exists("%s/%s/" % (LORAXDIR, img)): + installimg ${compressargs} ${LORAXDIR}/${img}/ isoft/sw64/${img}.img + treeinfo images-${basearch} ${img}.img isoft/sw64/${img}.img + <% filegraft += " images/{0}.img={1}/isoft/sw64/{0}.img".format(img, outroot) %> + %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 boot.iso +runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \ + -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \ + -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \ + -boot-load-size 4 -boot-info-table -no-emul-boot \ + ${efiargs} -R -J -V '${isolabel}' \ + -graft-points \ + .discinfo=${outroot}/.discinfo \ + ${STAGE2IMG}=${outroot}/${STAGE2IMG} \ + ${BOOTDIR}=${outroot}/${BOOTDIR} \ + ${KERNELDIR}=${outroot}/${KERNELDIR} \ + ${efigraft} ${filegraft} +treeinfo images-${basearch} boot.iso images/boot.iso diff --git a/src/pylorax/__init__.py b/src/pylorax/__init__.py index 8700ff5..1b85052 100644 --- a/src/pylorax/__init__.py +++ b/src/pylorax/__init__.py @@ -61,13 +61,13 @@ else: DRACUT_DEFAULT = ["--xz", "--install", "/.buildstamp", "--no-early-microcode", "--add", "fips"] # Used for DNF conf.module_platform_id -DEFAULT_PLATFORM_ID = "platform:f32" +DEFAULT_PLATFORM_ID = "platform:sw64" class ArchData(DataHolder): lib64_arches = ("x86_64", "ppc64le", "s390x", "ia64", "aarch64") bcj_arch = dict(i386="x86", x86_64="x86", ppc64le="powerpc", - arm="arm", armhfp="arm") + arm="arm", armhfp="arm", sw_64="sw64") def __init__(self, buildarch): super(ArchData, self).__init__() @@ -309,7 +309,7 @@ class Lorax(BaseLoraxClass): rb.writepkgsizes(joinpaths(logdir, "final-pkgsizes.txt")) logger.info("creating the runtime image") - runtime = "images/install.img" + runtime = "isoft/sw64/root-image.fs.sfs" compression = self.conf.get("compression", "type") compressargs = self.conf.get("compression", "args").split() # pylint: disable=no-member if self.conf.getboolean("compression", "bcj"): diff --git a/src/pylorax/creator.py b/src/pylorax/creator.py index 7075d32..79d35fd 100644 --- a/src/pylorax/creator.py +++ b/src/pylorax/creator.py @@ -51,7 +51,7 @@ from pylorax.sysutils import joinpaths, remove DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live dmsquash-live-ntfs convertfs pollcdrom qemu qemu-net", "--omit", "plymouth", "--no-hostonly", "--debug", "--no-early-microcode"] -RUNTIME = "images/install.img" +RUNTIME = "isoft/sw64/root-image.fs.sfs" class FakeDNF(object): """ @@ -336,7 +336,7 @@ def make_livecd(opts, mount_dir, work_dir): :param opts: options passed to livemedia-creator :type opts: argparse options :param str mount_dir: Directory tree to compress - :param str work_dir: Output compressed image to work_dir+images/install.img + :param str work_dir: Output compressed image to work_dir+isoft/sw64/root-image.fs.sfs This uses wwood's squashfs live initramfs method: * put the real / into LiveOS/rootfs.img @@ -354,7 +354,7 @@ def make_livecd(opts, mount_dir, work_dir): # Link /images to work_dir/images to make the templates happy if os.path.islink(joinpaths(mount_dir, "images")): os.unlink(joinpaths(mount_dir, "images")) - rc = execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "images"), + rc = execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "isoft/sw64"), joinpaths(mount_dir, "images")]) if rc: raise RuntimeError("Failed to symlink images from mount_dir to work_dir") @@ -529,9 +529,8 @@ def make_live_images(opts, work_dir, disk_img): sys_root = "" squashfs_root_dir = joinpaths(work_dir, "squashfs_root") - liveos_dir = joinpaths(squashfs_root_dir, "LiveOS") - os.makedirs(liveos_dir) - rootfs_img = joinpaths(liveos_dir, "rootfs.img") + os.makedirs(squashfs_root_dir) + rootfs_img = joinpaths(squashfs_root_dir, "root-image.fs") if opts.fs_image or opts.no_virt: # Find the ostree root in the fsimage @@ -573,7 +572,7 @@ def make_live_images(opts, work_dir, disk_img): log.info("Packing live rootfs image") add_pxe_args = [] - live_image_name = "live-rootfs.squashfs.img" + live_image_name = "root-image.fs.sfs" compression, compressargs = squashfs_args(opts) rc = mksquashfs(squashfs_root_dir, joinpaths(work_dir, live_image_name), compression, compressargs) if rc != 0: diff --git a/src/pylorax/mount.py b/src/pylorax/mount.py index 19e399b..a50f5a9 100644 --- a/src/pylorax/mount.py +++ b/src/pylorax/mount.py @@ -67,7 +67,7 @@ class IsoMountpoint(object): else: self.repo = None self.stage2 = os.path.exists(self.mount_dir+"/LiveOS/squashfs.img") or \ - os.path.exists(self.mount_dir+"/images/install.img") + os.path.exists(self.mount_dir+"/isoft/sw64/root-image.fs.sfs") try: for kernel, initrd in kernel_list: diff --git a/src/pylorax/treebuilder.py b/src/pylorax/treebuilder.py index cbb8872..9335735 100644 --- a/src/pylorax/treebuilder.py +++ b/src/pylorax/treebuilder.py @@ -42,6 +42,7 @@ templatemap = { 'aarch64': 'aarch64.tmpl', 'arm': 'arm.tmpl', 'armhfp': 'arm.tmpl', + "sw_64": 'sw64.tmpl' } def generate_module_info(moddir, outfile=None): -- 2.33.0