diff --git a/.gitignore b/.gitignore index 0f017d0..74383c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ SOURCES/lorax-templates-rhel-9.0-33.tar.gz +lorax-templates-rhel-10.0-52.tar.gz diff --git a/80-rhel/live/config_files/x86_v2/grub2-bios.cfg b/80-rhel/live/config_files/x86_v2/grub2-bios.cfg new file mode 100644 index 0000000..73d0a56 --- /dev/null +++ b/80-rhel/live/config_files/x86_v2/grub2-bios.cfg @@ -0,0 +1,39 @@ +set default="1" + +function load_video { + insmod all_video +} + +load_video +set gfxpayload=keep +insmod gzio +insmod part_gpt +insmod ext2 +insmod chain + +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 { + linux @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet rhgb + initrd @INITRDPATH@ +} +menuentry 'Test this media & start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os { + linux @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet + initrd @INITRDPATH@ +} +submenu 'Troubleshooting -->' { + menuentry 'Start @PRODUCT@ @VERSION@ in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os { + linux @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image nomodeset vga=791 quiet rhgb + initrd @INITRDPATH@ + } + menuentry 'Boot first drive' --class fedora --class gnu-linux --class gnu --class os { + chainloader (hd0)+1 + } + menuentry 'Boot second drive' --class fedora --class gnu-linux --class gnu --class os { + chainloader (hd1)+1 + } +} diff --git a/80-rhel/live/config_files/x86_v2/grub2-efi.cfg b/80-rhel/live/config_files/x86_v2/grub2-efi.cfg new file mode 100644 index 0000000..3906958 --- /dev/null +++ b/80-rhel/live/config_files/x86_v2/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 rhgb + 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 rhgb + initrdefi @INITRDPATH@ + } +} diff --git a/80-rhel/live/live-install.tmpl b/80-rhel/live/live-install.tmpl index ef514ee..cfa9325 100644 --- a/80-rhel/live/live-install.tmpl +++ b/80-rhel/live/live-install.tmpl @@ -6,7 +6,7 @@ installpkg efibootmgr installpkg grub2-efi-aa64-cdboot shim-aa64 %endif -%if basearch == "x86_64": +%if basearch in ("x86_64", "x86_64_v2"): installpkg grub2-tools-efi installpkg efibootmgr installpkg shim-x64 grub2-efi-x64-cdboot diff --git a/80-rhel/live/x86_v2.tmpl b/80-rhel/live/x86_v2.tmpl new file mode 100644 index 0000000..346588f --- /dev/null +++ b/80-rhel/live/x86_v2.tmpl @@ -0,0 +1,122 @@ +<%page args="kernels, runtime_img, basearch, inroot, outroot, product, isolabel, extra_boot_args"/> +<% +configdir="tmp/config_files/x86" +PXEBOOTDIR="images/pxeboot" +KERNELDIR=PXEBOOTDIR +GRUB2DIR="boot/grub2" +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 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 + +%if basearch == 'x86_64_v2': + treeinfo images-xen kernel ${KERNELDIR}/vmlinuz + treeinfo images-xen initrd ${KERNELDIR}/initrd.img +%endif + +## configure grub2 config file +mkdir ${GRUB2DIR} +install ${configdir}/grub2-bios.cfg ${GRUB2DIR}/grub.cfg +replace @VERSION@ ${product.version} ${GRUB2DIR}/grub.cfg +replace @PRODUCT@ '${product.name}' ${GRUB2DIR}/grub.cfg +replace @KERNELPATH@ /${KERNELDIR}/vmlinuz ${GRUB2DIR}/grub.cfg +replace @INITRDPATH@ /${KERNELDIR}/initrd.img ${GRUB2DIR}/grub.cfg +replace @ISOLABEL@ '${isolabel}' ${GRUB2DIR}/grub.cfg +replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${GRUB2DIR}/grub.cfg +replace @EXTRA@ '${extra_boot_args}' ${GRUB2DIR}/grub.cfg + + +## 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): + <%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=""; %> +%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-common/*"): + install ${f} ${f|basename} + <% filegraft += " {0}={1}/{0}".format(basename(f), outroot) %> +%endfor + +# Add the livecd-iso-to-disk script if installed +<% f = "usr/bin/livecd-iso-to-disk" %> +%if exists(f): + install ${f} ${LIVEDIR}/${f|basename} +%endif + +## Make images/eltoritio.img +runcmd grub2-mkimage -O i386-pc-eltorito -d ${inroot}/usr/lib/grub/i386-pc \ + -o ${outroot}/images/eltorito.img \ + -p /${GRUB2DIR} \ + iso9660 biosdisk +treeinfo images-${basearch} eltorito.img images/eltorito.img + +## make boot.iso +runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \ + -R -J -V '${isolabel}' \ + --grub2-mbr ${inroot}/usr/lib/grub/i386-pc/boot_hybrid.img \ + -partition_offset 16 \ + -appended_part_as_gpt \ + -append_partition 2 C12A7328-F81F-11D2-BA4B-00A0C93EC93B ${outroot}/images/efiboot.img \ + -iso_mbr_part_type EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 \ + -c boot.cat --boot-catalog-hide \ + -b images/eltorito.img \ + -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ + -eltorito-alt-boot \ + -e '--interval:appended_partition_2:all::' -no-emul-boot \ + -graft-points \ + ${KERNELDIR}=${outroot}/${KERNELDIR} \ + ${LIVEDIR}=${outroot}/${LIVEDIR} \ + ${filegraft} \ + ${GRUB2DIR}=${outroot}/${GRUB2DIR} \ + ${GRUB2DIR}/i386-pc=${inroot}/usr/lib/grub/i386-pc \ + images/eltorito.img=${outroot}/images/eltorito.img \ + EFI/BOOT=${outroot}/EFI/BOOT +treeinfo images-${basearch} boot.iso images/boot.iso diff --git a/80-rhel/runtime-install.tmpl b/80-rhel/runtime-install.tmpl index 8f2f3b8..2106964 100644 --- a/80-rhel/runtime-install.tmpl +++ b/80-rhel/runtime-install.tmpl @@ -61,7 +61,7 @@ installpkg glibc-all-langpacks installpkg shim-aa64 installpkg qcom-firmware %endif -%if basearch == "x86_64": +%if basearch in ("x86_64", "x86_64_v2"): installpkg grub2-tools-efi>=${GRUB2VER} installpkg efibootmgr installpkg shim-x64 @@ -140,7 +140,7 @@ installpkg mt-st smartmontools installpkg hdparm installpkg rdma-core installpkg rng-tools -%if basearch in ("x86_64", "aarch64"): +%if basearch in ("x86_64", "x86_64_v2", "aarch64"): installpkg dmidecode %endif installpkg nvme-cli diff --git a/80-rhel/x86_v2.tmpl b/80-rhel/x86_v2.tmpl new file mode 100644 index 0000000..8b7e12b --- /dev/null +++ b/80-rhel/x86_v2.tmpl @@ -0,0 +1,118 @@ +<%page args="kernels, runtime_img, runtime_base, basearch, inroot, outroot, product, isolabel"/> +<% +configdir="tmp/config_files/x86" +PXEBOOTDIR="images/pxeboot" +STAGE2IMG="images/install.img" +GRUB2DIR="boot/grub2" +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 images +install ${runtime_img} ${STAGE2IMG} +treeinfo stage2 mainimage images/${runtime_base} + +## install kernels +mkdir ${KERNELDIR} +%for kernel in kernels: + installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz + installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img +%endfor + +%if basearch == 'x86_64_v2': + treeinfo images-xen kernel ${KERNELDIR}/vmlinuz + treeinfo images-xen initrd ${KERNELDIR}/initrd.img +%endif + +## configure grub2 config file +mkdir ${GRUB2DIR} +install ${configdir}/grub2-bios.cfg ${GRUB2DIR}/grub.cfg +replace @VERSION@ ${product.version} ${GRUB2DIR}/grub.cfg +replace @PRODUCT@ '${product.name}' ${GRUB2DIR}/grub.cfg +replace @KERNELPATH@ /${KERNELDIR}/vmlinuz ${GRUB2DIR}/grub.cfg +replace @INITRDPATH@ /${KERNELDIR}/initrd.img ${GRUB2DIR}/grub.cfg +replace @ISOLABEL@ '${isolabel}' ${GRUB2DIR}/grub.cfg +replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${GRUB2DIR}/grub.cfg + + +## WHeeeeeeee, EFI. +<% 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): + <%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=""; %> +%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 + +# 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-common/*"): + install ${f} ${f|basename} + <% filegraft += " {0}={1}/{0}".format(basename(f), outroot) %> +%endfor + +## Make images/eltoritio.img +runcmd grub2-mkimage -O i386-pc-eltorito -d ${inroot}/usr/lib/grub/i386-pc \ + -o ${outroot}/images/eltorito.img \ + -p /${GRUB2DIR} \ + iso9660 biosdisk +treeinfo images-${basearch} eltorito.img images/eltorito.img + +## make boot.iso +runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \ + -R -J -V '${isolabel}' \ + --grub2-mbr ${inroot}/usr/lib/grub/i386-pc/boot_hybrid.img \ + -partition_offset 16 \ + -appended_part_as_gpt \ + -append_partition 2 C12A7328-F81F-11D2-BA4B-00A0C93EC93B ${outroot}/images/efiboot.img \ + -iso_mbr_part_type EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 \ + -c boot.cat --boot-catalog-hide \ + -b images/eltorito.img \ + -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ + -eltorito-alt-boot \ + -e '--interval:appended_partition_2:all::' -no-emul-boot \ + -graft-points \ + .discinfo=${outroot}/.discinfo \ + ${STAGE2IMG}=${outroot}/${STAGE2IMG} \ + ${KERNELDIR}=${outroot}/${KERNELDIR} \ + ${filegraft} \ + ${GRUB2DIR}=${outroot}/${GRUB2DIR} \ + ${GRUB2DIR}/i386-pc=${inroot}/usr/lib/grub/i386-pc \ + images/eltorito.img=${outroot}/images/eltorito.img \ + EFI/BOOT=${outroot}/EFI/BOOT +treeinfo images-${basearch} boot.iso images/boot.iso diff --git a/lorax-templates-almalinux.spec b/lorax-templates-almalinux.spec index 231d855..034bcd5 100644 --- a/lorax-templates-almalinux.spec +++ b/lorax-templates-almalinux.spec @@ -1,6 +1,6 @@ Name: lorax-templates-almalinux Version: 10.0 -Release: 52%{?dist} +Release: 52%{?dist}.alma.1 Summary: AlmaLinux 10 build templates for lorax and livemedia-creator License: GPLv2+ @@ -44,5 +44,8 @@ cp -a 80-rhel/* $RPM_BUILD_ROOT/%{templatedir} %{templatedir}/* %changelog +* Fri Sep 13 2024 Eduard Abdullin - 10.0-52.alma.1 +- Add configuration for AlmaLinux 10 x86_64_v2 + * Wed Aug 21 2024 Eduard Abdullin - 10.0-52 - Initial build for AlmaLinux 10 diff --git a/sources b/sources index 3fed9e2..96f0e60 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (lorax-templates-rhel-10.0-52.tar.gz) = 4ea157c43045fadc42c8c0eb0099785984c859c8cb10c1ac8d49b777221c1e9de9ff75c749661c68ddecb36d21e1cd6c963dda04f66e49d0863a450cce296f18 +SHA512 (lorax-templates-rhel-10.0-52.tar.gz) = ee4c5f6d4750b5ac4fb9c1e99f32aac4c7b7e85c4735551c4ce3309a8c4c2f0d72b8054a085518f514c0cd7b92ed8d3601738ac54e7fbcb1c689f0a7ac9fc275