diff --git a/kiwi-builder-image/Dockerfile b/kiwi-builder-image/Dockerfile index 99328b7..4ff28c9 100644 --- a/kiwi-builder-image/Dockerfile +++ b/kiwi-builder-image/Dockerfile @@ -1,5 +1,6 @@ -#!BuildTag: kiwi-builder:10.1 -FROM registry.suse.com/bci/kiwi:10.1.10 +#!BuildTag: %%IMG_PREFIX%%kiwi-builder:10.1.16.0 +#!BuildTag: %%IMG_PREFIX%%kiwi-builder:10.1.16.0-%RELEASE% +FROM registry.suse.com/bci/kiwi:10.1.16 MAINTAINER SUSE LLC (https://www.suse.com/) # Define labels according to https://en.opensuse.org/Building_derived_containers @@ -11,7 +12,7 @@ LABEL org.opencontainers.image.version="%PACKAGE_VERSION%" LABEL org.opencontainers.image.url="https://www.suse.com/solutions/edge-computing/" LABEL org.opencontainers.image.created="%BUILDTIME%" LABEL org.opencontainers.image.vendor="SUSE LLC" -LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:10.1" +LABEL org.opensuse.reference="%%IMG_REPO%%/%%IMG_PREFIX%%kiwi-builder:10.1.16.0" LABEL org.openbuildservice.disturl="%DISTURL%" LABEL com.suse.supportlevel="%%SUPPORT_LEVEL%%" LABEL com.suse.eula="SUSE Combined EULA February 2024" @@ -20,10 +21,6 @@ LABEL com.suse.image-type="application" LABEL com.suse.release-stage="released" # endlabelprefix -# Install required packages for Kiwi to function as expected -# Should be provided via https://github.com/SUSE/BCI-dockerfile-generator/pull/1770 -# RUN zypper in -y gawk && zypper clean -a - # Configure Kiwi to use kpartx RUN echo -e "mapper:\n - part_mapper: kpartx" > /etc/kiwi.yml diff --git a/kiwi-builder-image/README b/kiwi-builder-image/README index bdfa204..b74c156 100644 --- a/kiwi-builder-image/README +++ b/kiwi-builder-image/README @@ -8,32 +8,40 @@ Please ensure that you're running this on a registered SLE Micro 6.0 system, and Next, download the podman image: -# podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 +# podman pull %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 Make a local output directory (where the images will reside): # mkdir output +Then, to build a standard "Base" image, run the following in podman: + +# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 build-image + +To build a "Base" SelfInstall ISO, you can add additional flags, for example: + +# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 build-image -p Base-SelfInstall + Then, to build a standard "Default" image, run the following in podman: -# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image +# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 build-image -p Default -To build a SelfInstall ISO, you can add additional flags, for example: +To build a "Default" SelfInstall ISO, you can add additional flags, for example: -# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall +# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 build-image -p Default-SelfInstall To build an image with a RealTime kernel, e.g. a RAW disk image ("Default"), use the following: -# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Base-RT +# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 build-image -p Base-RT To build an image that supports a large block/sectorsize (4096), use the "-b" flag, for example: -# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image -p Default-SelfInstall -b +# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 build-image -p Default-SelfInstall -b # mkdir mydefs/ # cp /path/to/SL-Micro.kiwi mydefs/ # cp /path/to/config.sh mydefs/ -# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10 build-image +# podman run --privileged -v /etc/zypp/repos.d:/micro-sdk/repos/ -v ./output:/tmp/output -v ./mydefs/:/micro-sdk/defs/ -it %%IMG_REPO%%/%%IMG_PREFIXkiwi-builder:10.1.16.0 build-image All output will be in the local $(pwd)/output directory, for example: diff --git a/kiwi-builder-image/build-image.sh b/kiwi-builder-image/build-image.sh index 0725537..b0df0ba 100644 --- a/kiwi-builder-image/build-image.sh +++ b/kiwi-builder-image/build-image.sh @@ -21,43 +21,45 @@ # # Set image build defaults, blocksize is an empty string -PROFILE="Default" +PROFILE="Base" LARGEBLOCK=false # Print usage usage(){ - cat <<-EOF - ============================== - SLE Micro 6.0 Kiwi SDK Builder - ============================== + cat <<-EOF + ============================== + SLE Micro 6.0 Kiwi SDK Builder + ============================== - Usage: ${0} [-p ] [-b] + Usage: ${0} [-p ] [-b] - Profile Options (-p): - * Default: RAW Disk Image with kernel-default - * Default-SelfInstall: SelfInstall ISO with kernel-default - * Base-RT: RAW Disk Image with kernel-rt - * Base-RT-SelfInstall: SelfInstall ISO with kernel-rt + Profile Options (-p): + * Base: RAW Disk Image with podman + * Base-SelfInstall: SelfInstall ISO with podman + * Default: RAW Disk Image with podman and kvm + * Default-SelfInstall: SelfInstall ISO with podman and kvm + * Base-RT: RAW Disk Image with kernel-rt + * Base-RT-SelfInstall: SelfInstall ISO with kernel-rt - 4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image. + 4096 Blocksize (-b): If specified, use a 4096 blocksize (rather than 512) when generating the image. - NOTE: If both options are omitted, the "Default" profile with a standard "512" blocksize is used. - EOF + NOTE: If both options are omitted, the "Base" profile with a standard "512" blocksize is used. +EOF } # Grab CLI options and handle while getopts 'p:bh' OPTION; do - case "${OPTION}" in - p) - PROFILE="${OPTARG}" - ;; - b) - LARGEBLOCK=true - ;; - ?) - usage && exit 2 - ;; - esac + case "${OPTION}" in + p) + PROFILE="${OPTARG}" + ;; + b) + LARGEBLOCK=true + ;; + ?) + usage && exit 2 + ;; + esac done # To avoid wasting time, perform the loop creation test first, and exit with a warning to re-run. @@ -88,4 +90,4 @@ if [ $RESULT -eq 0 ]; then echo -e "\n\nINFO: Image build successful, generated images are available in the 'output' directory." else echo -e "\n\nERROR: Failed to build the image, please see above logs." -fi \ No newline at end of file +fi