diff --git a/ironic-image/Dockerfile b/ironic-image/Dockerfile index 1a7f66c..7d3d78b 100644 --- a/ironic-image/Dockerfile +++ b/ironic-image/Dockerfile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 -#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0 -#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE% +#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.1 +#!BuildTag: %%IMG_PREFIX%%ironic:26.1.2.1-%RELEASE% #!BuildVersion: 15.6 ARG SLE_VERSION @@ -8,7 +8,14 @@ FROM registry.suse.com/bci/bci-micro:$SLE_VERSION AS micro FROM registry.suse.com/bci/bci-base:$SLE_VERSION AS base -RUN set -euo pipefail; zypper -n in --no-recommends gcc git make xz-devel shim dosfstools mtools glibc-extra grub2-x86_64-efi grub2; zypper -n clean; rm -rf /var/log/* +#!ArchExclusiveLine: x86_64 +RUN if [ "$(uname -m)" = "x86_64" ];then \ + zypper -n in --no-recommends gcc git make xz-devel shim dosfstools mtools glibc-extra grub2-x86_64-efi grub2; zypper -n clean; rm -rf /var/log/*; \ + fi +#!ArchExclusiveLine: aarch64 +RUN if [ "$(uname -m)" = "aarch64" ];then \ + zypper -n rm kubic-locale-archive-2.31-10.36.noarch openssl-1_1-1.1.1l-150500.17.37.1.aarch64; zypper -n in --no-recommends gcc git make xz-devel openssl-3 mokutil shim dosfstools mtools glibc glibc-extra grub2 grub2-arm64-efi; zypper -n clean; rm -rf /var/log/* ;\ + fi WORKDIR /tmp COPY prepare-efi.sh /bin/ RUN set -euo pipefail; chmod +x /bin/prepare-efi.sh @@ -16,8 +23,16 @@ RUN /bin/prepare-efi.sh COPY --from=micro / /installroot/ RUN sed -i -e 's%^# rpm.install.excludedocs = no.*%rpm.install.excludedocs = yes%g' /etc/zypp/zypp.conf -RUN zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp syslinux ipxe-bootimgs crudini openstack-ironic +#!ArchExclusiveLine: x86_64 +RUN if [ "$(uname -m)" = "x86_64" ];then \ + zypper --installroot /installroot --non-interactive install --no-recommends syslinux python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \ + fi +#!ArchExclusiveLine: aarch64 +RUN if [ "$(uname -m)" = "aarch64" ];then \ + zypper --installroot /installroot --non-interactive install --no-recommends python311-devel python311 python311-pip python-dracclient python311-sushy-oem-idrac python311-proliantutils python311-sushy python3-ironicclient git curl sles-release tar gzip vim gawk dnsmasq dosfstools apache2 apache2-mod_wsgi inotify-tools ipcalc ipmitool iproute2 procps qemu-tools sqlite3 util-linux xorriso tftp ipxe-bootimgs python311-sushy-tools crudini openstack-ironic openstack-ironic-inspector-api; \ + fi + # DATABASE RUN mkdir -p /installroot/var/lib/ironic && \ /installroot/usr/bin/sqlite3 /installroot/var/lib/ironic/ironic.sqlite "pragma journal_mode=wal" && \ @@ -31,8 +46,8 @@ LABEL org.opencontainers.image.description="Openstack Ironic based on the SLE Ba LABEL org.opencontainers.image.url="https://www.suse.com/products/server/" LABEL org.opencontainers.image.created="%BUILDTIME%" LABEL org.opencontainers.image.vendor="SUSE LLC" -LABEL org.opencontainers.image.version="26.1.2.0" -LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.0-%RELEASE%" +LABEL org.opencontainers.image.version="26.1.2.1" +LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%ironic:26.1.2.1-%RELEASE%" LABEL org.openbuildservice.disturl="%DISTURL%" LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" LABEL com.suse.eula="SUSE Combined EULA February 2024" @@ -64,7 +79,15 @@ RUN mkdir -p $GRUB_DIR # IRONIC # RUN cp /usr/share/ipxe/undionly.kpxe /tftpboot/undionly.kpxe -RUN cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi +#!ArchExclusiveLine: x86_64 +RUN if [ "$(uname -m)" = "x86_64" ];then \ + cp /usr/share/ipxe/ipxe-x86_64.efi /tftpboot/ipxe.efi ;\ + fi +#!ArchExclusiveLine: x86_64 +RUN if [ "$(uname -m)" = "aarch64" ]; then\ + cp /usr/share/ipxe/snp-arm64.efi /tftpboot/ipxe.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp-arm64.efi; cp /usr/share/ipxe/snp-arm64.efi /tftpboot/snp.efi ;\ + fi + COPY --from=base /tmp/esp.img /tmp/uefi_esp.img COPY ironic.conf.j2 /etc/ironic/ diff --git a/ironic-image/prepare-efi.sh b/ironic-image/prepare-efi.sh index 84e0808..a293187 100644 --- a/ironic-image/prepare-efi.sh +++ b/ironic-image/prepare-efi.sh @@ -6,22 +6,37 @@ ARCH=$(uname -m) DEST=${2:-/tmp/esp.img} OS=${1:-sles} -BOOTEFI=BOOTX64.efi -GRUBEFI=grubx64.efi +if [ $ARCH = "aarch64" ]; then + BOOTEFI=BOOTAA64.EFI + GRUBEFI=grubaa64.efi +else + BOOTEFI=BOOTX64.efi + GRUBEFI=grubx64.efi +fi dd bs=1024 count=6400 if=/dev/zero of=$DEST mkfs.msdos -F 12 -n 'ESP_IMAGE' $DEST mkdir -p /boot/efi/EFI/BOOT -cp -L /usr/lib64/efi/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI mkdir -p /boot/efi/EFI/$OS -#cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/$GRUBEFI -cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/grub.efi +if [ $ARCH = "aarch64" ]; then + cp -L /usr/share/efi/aarch64/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI + cp -L /usr/share/efi/aarch64/grub.efi /boot/efi/EFI/BOOT/grub.efi + cp /usr/share/grub2/arm64-efi/grub.efi /boot/efi/EFI/$OS/grubaa64.efi +else + cp -L /usr/lib64/efi/shim.efi /boot/efi/EFI/BOOT/$BOOTEFI + #cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/$GRUBEFI + cp /usr/share/grub2/x86_64-efi/grub.efi /boot/efi/EFI/$OS/grub.efi +fi mmd -i $DEST EFI mmd -i $DEST EFI/BOOT mcopy -i $DEST -v /boot/efi/EFI/BOOT/$BOOTEFI ::EFI/BOOT -#mcopy -i $DEST -v /boot/efi/EFI/$OS/$GRUBEFI ::EFI/BOOT -mcopy -i $DEST -v /boot/efi/EFI/$OS/grub.efi ::EFI/BOOT +if [ $ARCH = "aarch64" ]; then + mcopy -i $DEST -v /boot/efi/EFI/BOOT/grub.efi ::EFI/BOOT + mcopy -i $DEST -v /boot/efi/EFI/$OS/$GRUBEFI ::EFI/BOOT +else + mcopy -i $DEST -v /boot/efi/EFI/$OS/grub.efi ::EFI/BOOT +fi mdir -i $DEST ::EFI/BOOT;