diff mbox series

[isar-cip-core,1/2] kas/opt: Add option for not install kernel

Message ID 1740746806-6557-1-git-send-email-nobuhiro1.iwamatsu@toshiba.co.jp (mailing list archive)
State Changes Requested
Headers show
Series [isar-cip-core,1/2] kas/opt: Add option for not install kernel | expand

Commit Message

Nobuhiro Iwamatsu Feb. 28, 2025, 12:46 p.m. UTC
This adds an option to create an image that does not contain the kernel.

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
---
 .gitlab-ci.yml             | 28 ++++++++++++++++++++++-
 kas/opt/no_kernel.yml      | 17 ++++++++++++++
 scripts/deploy-cip-core.sh | 47 +++++++++++++++++++++++++++-----------
 3 files changed, 78 insertions(+), 14 deletions(-)
 create mode 100644 kas/opt/no_kernel.yml

Comments

Jan Kiszka Feb. 28, 2025, 3:40 p.m. UTC | #1
On 28.02.25 13:46, Nobuhiro Iwamatsu wrote:
> This adds an option to create an image that does not contain the kernel.
> 

What is the use case? How does this relate to kas/opt/kernelci.yml?

> Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
> ---
>  .gitlab-ci.yml             | 28 ++++++++++++++++++++++-
>  kas/opt/no_kernel.yml      | 17 ++++++++++++++
>  scripts/deploy-cip-core.sh | 47 +++++++++++++++++++++++++++-----------
>  3 files changed, 78 insertions(+), 14 deletions(-)
>  create mode 100644 kas/opt/no_kernel.yml
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index 4df521b..a09eedd 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -27,6 +27,7 @@ variables:
>    build_swu_v2: disable
>    swupdate_version: default
>    test_function: swupdate
> +  no_kernel: disable
>  
>  stages:
>    - build
> @@ -67,9 +68,10 @@ default:
>      - if [ "${watchdog}" = "disable" ]; then base_yaml="${base_yaml}:kas/opt/disable-watchdog.yml"; fi
>      - if [ "${security_test}" = "enable" ]; then base_yaml="${base_yaml}:kas/opt/security_test.yml"; fi
>      - if [ "${swupdate_version}" = "2022.12" ]; then base_yaml="${base_yaml}:kas/opt/swupdate-2022.12.yaml"; fi
> +    - if [ "${no_kernel}" = "enable" ]; then base_yaml="${base_yaml}:kas/opt/no_kernel.yml"; fi
>      - echo "Building ${base_yaml}"
>      - kas build ${base_yaml}
> -    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh ${release} ${target} ${extension} ${dtb} ${CI_COMMIT_REF_SLUG} wic; fi
> +    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh ${release} ${target} ${extension} ${no_kernel} ${dtb} ${CI_COMMIT_REF_SLUG} wic; fi
>      - if [ "${build_swu_v2}" = "enable" ]; then
>            mkdir build/previous-image;
>            if [ "${extension}" = "security" ] || [ "${extension}" = "ebg-secure-boot-snakeoil" ]; then
> @@ -221,6 +223,30 @@ build:qemu-arm-test:
>      target:  qemu-arm
>      extension: test
>  
> +build:qemu-amd64-test-nokernel:
> +  extends:
> +    - .build_base
> +  variables:
> +    target:  qemu-amd64
> +    extension: test
> +    no_kernel: enable
> +
> +build:qemu-arm64-test-nokernel:
> +  extends:
> +    - .build_base
> +  variables:
> +    target:  qemu-arm64
> +    extension: test
> +    no_kernel: enable
> +
> +build:qemu-arm-test-nokernel:
> +  extends:
> +    - .build_base
> +  variables:
> +    target:  qemu-arm
> +    extension: test
> +    no_kernel: enable
> +

Do we always need to build and deploy those extra images?

>  build:x86-uefi-secure-boot:
>    extends:
>      - .build_base
> diff --git a/kas/opt/no_kernel.yml b/kas/opt/no_kernel.yml
> new file mode 100644
> index 0000000..2338177
> --- /dev/null
> +++ b/kas/opt/no_kernel.yml
> @@ -0,0 +1,17 @@
> +#
> +# CIP Core, generic profile
> +#
> +# Copyright (c) Toshiba Corporation 2025
> +#
> +# Authors:
> +#  Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
> +#
> +# SPDX-License-Identifier: MIT
> +#
> +
> +header:
> +  version: 14
> +
> +local_conf_header:
> +  kernel-version: |
> +    IMAGE_INSTALL:remove = "linux-image-cip linux-image-cip-rt"

KERNEL_NAME = "", that will also disable the now pointless build of the
kernel.

> diff --git a/scripts/deploy-cip-core.sh b/scripts/deploy-cip-core.sh
> index 6e4dfd7..6cb4968 100755
> --- a/scripts/deploy-cip-core.sh
> +++ b/scripts/deploy-cip-core.sh
> @@ -13,9 +13,10 @@ fi
>  RELEASE=$1
>  TARGET=$2
>  EXTENSION=$3
> -DTB=$4
> -REF=$5
> -DEPLOY=$6
> +NO_KERNEL=$4
> +DTB=$5
> +REF=$6
> +DEPLOY=$7
>  
>  BASE_FILENAME=cip-core-image-cip-core-$RELEASE-$TARGET
>  if [ "${EXTENSION}" != "none" ]; then
> @@ -29,6 +30,23 @@ fi
>  BASE_PATH=build/tmp/deploy/images/$TARGET/$BASE_FILENAME
>  S3_TARGET=s3://download2.cip-project.org/cip-core/$REF/$TARGET/
>  
> +if [ "${NO_KERNEL}" = "enable" ]; then
> +	__BASE_PATH=${BASE_PATH}
> +	BASE_PATH="${BASE_PATH}-nokernel"
> +
> +	echo "Rename from ${BASE_FILENAME}.* to ${BASE_FILENAME}-nokernel.*"
> +
> +	if [ -f "${__BASE_PATH}.tar.gz" ]; then
> +		mv "${__BASE_PATH}.tar.gz" "${BASE_PATH}.tar.gz"
> +	fi
> +	if [ -f "${__BASE_PATH}.swu" ]; then
> +		mv "${__BASE_PATH}.swu" "${BASE_PATH}.swu"
> +	fi
> +	if [ -f "${__BASE_PATH}.wic" ]; then
> +		mv "${__BASE_PATH}.wic" "${BASE_PATH}.wic"
> +	fi
> +fi
> +
>  if [ -f "${BASE_PATH}.wic" ]; then
>  	echo "Uploading artifacts..."
>  	if [ "$DEPLOY" = "swu" ]; then
> @@ -48,17 +66,20 @@ else
>  		aws s3 cp --no-progress --acl public-read "${BASE_PATH}.tar.gz" "${S3_TARGET}"
>  	fi
>  
> -	KERNEL_IMAGE="$BASE_PATH-vmlinu[xz]"
> -	# iwg20m workaround
> -	if [ -f "build/tmp/deploy/images/$TARGET/zImage" ]; then
> -		KERNEL_IMAGE=build/tmp/deploy/images/$TARGET/zImage
> -	fi
> -	# shellcheck disable=SC2086
> -	aws s3 cp --no-progress --acl public-read $KERNEL_IMAGE "${S3_TARGET}"
> -	aws s3 cp --no-progress --acl public-read "${BASE_PATH}-initrd.img" "${S3_TARGET}"
> +	if [ "$NO_KERNEL" = "false" ]; then
> +		KERNEL_IMAGE="$BASE_PATH-vmlinu[xz]"
> +		# iwg20m workaround
> +		if [ -f "build/tmp/deploy/images/$TARGET/zImage" ]; then
> +			KERNEL_IMAGE=build/tmp/deploy/images/$TARGET/zImage
> +		fi
>  
> -	if [ "$DTB" != "none" ]; then
> -		aws s3 cp --no-progress --acl public-read build/tmp/deploy/images/*/"$DTB" "${S3_TARGET}"
> +		# shellcheck disable=SC2086
> +		aws s3 cp --no-progress --acl public-read $KERNEL_IMAGE "${S3_TARGET}"
> +		aws s3 cp --no-progress --acl public-read "${BASE_PATH}-initrd.img" "${S3_TARGET}"
> +
> +		if [ "$DTB" != "none" ]; then
> +			aws s3 cp --no-progress --acl public-read build/tmp/deploy/images/*/"$DTB" "${S3_TARGET}"
> +		fi
>  	fi
>  fi
>  

Jan
Nobuhiro Iwamatsu March 5, 2025, 4:45 a.m. UTC | #2
Hi Jan,

> -----Original Message-----
> From: Jan Kiszka <jan.kiszka@siemens.com>
> Sent: Saturday, March 1, 2025 12:40 AM
> To: iwamatsu nobuhiro(岩松 信洋 ○DITC□DIT○OST)
> <nobuhiro1.iwamatsu@toshiba.co.jp>; cip-dev@lists.cip-project.org
> Subject: Re: [isar-cip-core][PATCH 1/2] kas/opt: Add option for not install
> kernel
> 
> On 28.02.25 13:46, Nobuhiro Iwamatsu wrote:
> > This adds an option to create an image that does not contain the kernel.
> >
> 
> What is the use case? How does this relate to kas/opt/kernelci.yml?
> 

This is not related kas/opt/kernelci.yml. This will be used to create rootfs for CIP/LAVA testing. 
The current recipe creates an image containing the kernel binary. Kernel binaries are not needed in
rootfs for kernel testing. Therefore, we have added an option to remove it.
This is also useful because some users may need rootfs without kernel binaries.

> > Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
> > ---
> >  .gitlab-ci.yml             | 28 ++++++++++++++++++++++-
> >  kas/opt/no_kernel.yml      | 17 ++++++++++++++
> >  scripts/deploy-cip-core.sh | 47
> > +++++++++++++++++++++++++++-----------
> >  3 files changed, 78 insertions(+), 14 deletions(-)  create mode
> > 100644 kas/opt/no_kernel.yml
> >
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4df521b..a09eedd
> > 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -27,6 +27,7 @@ variables:
> >    build_swu_v2: disable
> >    swupdate_version: default
> >    test_function: swupdate
> > +  no_kernel: disable
> >
> >  stages:
> >    - build
> > @@ -67,9 +68,10 @@ default:
> >      - if [ "${watchdog}" = "disable" ]; then
> base_yaml="${base_yaml}:kas/opt/disable-watchdog.yml"; fi
> >      - if [ "${security_test}" = "enable" ]; then
> base_yaml="${base_yaml}:kas/opt/security_test.yml"; fi
> >      - if [ "${swupdate_version}" = "2022.12" ]; then
> > base_yaml="${base_yaml}:kas/opt/swupdate-2022.12.yaml"; fi
> > +    - if [ "${no_kernel}" = "enable" ]; then
> > + base_yaml="${base_yaml}:kas/opt/no_kernel.yml"; fi
> >      - echo "Building ${base_yaml}"
> >      - kas build ${base_yaml}
> > -    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh
> ${release} ${target} ${extension} ${dtb} ${CI_COMMIT_REF_SLUG} wic; fi
> > +    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh
> > + ${release} ${target} ${extension} ${no_kernel} ${dtb}
> > + ${CI_COMMIT_REF_SLUG} wic; fi
> >      - if [ "${build_swu_v2}" = "enable" ]; then
> >            mkdir build/previous-image;
> >            if [ "${extension}" = "security" ] || [ "${extension}" =
> > "ebg-secure-boot-snakeoil" ]; then @@ -221,6 +223,30 @@
> build:qemu-arm-test:
> >      target:  qemu-arm
> >      extension: test
> >
> > +build:qemu-amd64-test-nokernel:
> > +  extends:
> > +    - .build_base
> > +  variables:
> > +    target:  qemu-amd64
> > +    extension: test
> > +    no_kernel: enable
> > +
> > +build:qemu-arm64-test-nokernel:
> > +  extends:
> > +    - .build_base
> > +  variables:
> > +    target:  qemu-arm64
> > +    extension: test
> > +    no_kernel: enable
> > +
> > +build:qemu-arm-test-nokernel:
> > +  extends:
> > +    - .build_base
> > +  variables:
> > +    target:  qemu-arm
> > +    extension: test
> > +    no_kernel: enable
> > +
> 
> Do we always need to build and deploy those extra images?

It will not be necessary every time.
It will need to be built when LTP is updated or when a point release is had in Debian.
The current gitlab pipeline is not that well thought out and I think it needs to be considered.

> 
> >  build:x86-uefi-secure-boot:
> >    extends:
> >      - .build_base
> > diff --git a/kas/opt/no_kernel.yml b/kas/opt/no_kernel.yml new file
> > mode 100644 index 0000000..2338177
> > --- /dev/null
> > +++ b/kas/opt/no_kernel.yml
> > @@ -0,0 +1,17 @@
> > +#
> > +# CIP Core, generic profile
> > +#
> > +# Copyright (c) Toshiba Corporation 2025 # # Authors:
> > +#  Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
> > +#
> > +# SPDX-License-Identifier: MIT
> > +#
> > +
> > +header:
> > +  version: 14
> > +
> > +local_conf_header:
> > +  kernel-version: |
> > +    IMAGE_INSTALL:remove = "linux-image-cip linux-image-cip-rt"
> 
> KERNEL_NAME = "", that will also disable the now pointless build of the
> kernel.

Thank you.
This is simpler and better.

Best regards,
  Nobuhiro
Jan Kiszka March 5, 2025, 5:38 a.m. UTC | #3
On 05.03.25 05:45, nobuhiro1.iwamatsu@toshiba.co.jp wrote:
> Hi Jan,
> 
>> -----Original Message-----
>> From: Jan Kiszka <jan.kiszka@siemens.com>
>> Sent: Saturday, March 1, 2025 12:40 AM
>> To: iwamatsu nobuhiro(岩松 信洋 ○DITC□DIT○OST)
>> <nobuhiro1.iwamatsu@toshiba.co.jp>; cip-dev@lists.cip-project.org
>> Subject: Re: [isar-cip-core][PATCH 1/2] kas/opt: Add option for not install
>> kernel
>>
>> On 28.02.25 13:46, Nobuhiro Iwamatsu wrote:
>>> This adds an option to create an image that does not contain the kernel.
>>>
>>
>> What is the use case? How does this relate to kas/opt/kernelci.yml?
>>
> 
> This is not related kas/opt/kernelci.yml. This will be used to create rootfs for CIP/LAVA testing. 
> The current recipe creates an image containing the kernel binary. Kernel binaries are not needed in
> rootfs for kernel testing. Therefore, we have added an option to remove it.
> This is also useful because some users may need rootfs without kernel binaries.

For my understanding: When is kernelci.yml used, when the kernel-free
image? For kernelci, we also deploy (not right now as upstream's API is
changing), but that was always with the kernel - why there?

> 
>>> Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
>>> ---
>>>  .gitlab-ci.yml             | 28 ++++++++++++++++++++++-
>>>  kas/opt/no_kernel.yml      | 17 ++++++++++++++
>>>  scripts/deploy-cip-core.sh | 47
>>> +++++++++++++++++++++++++++-----------
>>>  3 files changed, 78 insertions(+), 14 deletions(-)  create mode
>>> 100644 kas/opt/no_kernel.yml
>>>
>>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4df521b..a09eedd
>>> 100644
>>> --- a/.gitlab-ci.yml
>>> +++ b/.gitlab-ci.yml
>>> @@ -27,6 +27,7 @@ variables:
>>>    build_swu_v2: disable
>>>    swupdate_version: default
>>>    test_function: swupdate
>>> +  no_kernel: disable
>>>
>>>  stages:
>>>    - build
>>> @@ -67,9 +68,10 @@ default:
>>>      - if [ "${watchdog}" = "disable" ]; then
>> base_yaml="${base_yaml}:kas/opt/disable-watchdog.yml"; fi
>>>      - if [ "${security_test}" = "enable" ]; then
>> base_yaml="${base_yaml}:kas/opt/security_test.yml"; fi
>>>      - if [ "${swupdate_version}" = "2022.12" ]; then
>>> base_yaml="${base_yaml}:kas/opt/swupdate-2022.12.yaml"; fi
>>> +    - if [ "${no_kernel}" = "enable" ]; then
>>> + base_yaml="${base_yaml}:kas/opt/no_kernel.yml"; fi
>>>      - echo "Building ${base_yaml}"
>>>      - kas build ${base_yaml}
>>> -    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh
>> ${release} ${target} ${extension} ${dtb} ${CI_COMMIT_REF_SLUG} wic; fi
>>> +    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh
>>> + ${release} ${target} ${extension} ${no_kernel} ${dtb}
>>> + ${CI_COMMIT_REF_SLUG} wic; fi
>>>      - if [ "${build_swu_v2}" = "enable" ]; then
>>>            mkdir build/previous-image;
>>>            if [ "${extension}" = "security" ] || [ "${extension}" =
>>> "ebg-secure-boot-snakeoil" ]; then @@ -221,6 +223,30 @@
>> build:qemu-arm-test:
>>>      target:  qemu-arm
>>>      extension: test
>>>
>>> +build:qemu-amd64-test-nokernel:
>>> +  extends:
>>> +    - .build_base
>>> +  variables:
>>> +    target:  qemu-amd64
>>> +    extension: test
>>> +    no_kernel: enable
>>> +
>>> +build:qemu-arm64-test-nokernel:
>>> +  extends:
>>> +    - .build_base
>>> +  variables:
>>> +    target:  qemu-arm64
>>> +    extension: test
>>> +    no_kernel: enable
>>> +
>>> +build:qemu-arm-test-nokernel:
>>> +  extends:
>>> +    - .build_base
>>> +  variables:
>>> +    target:  qemu-arm
>>> +    extension: test
>>> +    no_kernel: enable
>>> +
>>
>> Do we always need to build and deploy those extra images?
> 
> It will not be necessary every time.
> It will need to be built when LTP is updated or when a point release is had in Debian.
> The current gitlab pipeline is not that well thought out and I think it needs to be considered.
> 

If we do not pick up the artifacts automatically from a pipeline build,
we can make these variants also manually triggered. But I still need to
understand the apparent overlap with the kernelci builds (which happen
unconditionally so far).

BTW, where is the riscv64 variant?

>>
>>>  build:x86-uefi-secure-boot:
>>>    extends:
>>>      - .build_base
>>> diff --git a/kas/opt/no_kernel.yml b/kas/opt/no_kernel.yml new file
>>> mode 100644 index 0000000..2338177
>>> --- /dev/null
>>> +++ b/kas/opt/no_kernel.yml
>>> @@ -0,0 +1,17 @@
>>> +#
>>> +# CIP Core, generic profile
>>> +#
>>> +# Copyright (c) Toshiba Corporation 2025 # # Authors:
>>> +#  Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
>>> +#
>>> +# SPDX-License-Identifier: MIT
>>> +#
>>> +
>>> +header:
>>> +  version: 14
>>> +
>>> +local_conf_header:
>>> +  kernel-version: |
>>> +    IMAGE_INSTALL:remove = "linux-image-cip linux-image-cip-rt"
>>
>> KERNEL_NAME = "", that will also disable the now pointless build of the
>> kernel.
> 
> Thank you.
> This is simpler and better.
> 
> Best regards,
>   Nobuhiro
Nobuhiro Iwamatsu March 6, 2025, 5:54 a.m. UTC | #4
Hi jan,

> -----Original Message-----
> From: cip-dev@lists.cip-project.org <cip-dev@lists.cip-project.org> On
> Behalf Of Jan Kiszka via lists.cip-project.org
> Sent: Wednesday, March 5, 2025 2:38 PM
> To: iwamatsu nobuhiro(岩松 信洋 ○DITC□DIT○OST)
> <nobuhiro1.iwamatsu@toshiba.co.jp>; cip-dev@lists.cip-project.org
> Subject: Re: [cip-dev] [isar-cip-core][PATCH 1/2] kas/opt: Add option for not
> install kernel
> 
> >>
> >> On 28.02.25 13:46, Nobuhiro Iwamatsu wrote:
> >>> This adds an option to create an image that does not contain the kernel.
> >>>
> >>
> >> What is the use case? How does this relate to kas/opt/kernelci.yml?
> >>
> >
> > This is not related kas/opt/kernelci.yml. This will be used to create rootfs for
> CIP/LAVA testing.
> > The current recipe creates an image containing the kernel binary.
> > Kernel binaries are not needed in rootfs for kernel testing. Therefore, we have
> added an option to remove it.
> > This is also useful because some users may need rootfs without kernel
> binaries.
> 
> For my understanding: When is kernelci.yml used, when the kernel-free image?

I am not exactly sure about kernelci.yml, Arisu, could you explain it?
As far as I can confirm, the current gitlab CI adds getty , ssh and dmesg settings to the rootfs with minimal functionality.

For kernel-free image, I am thinking that the kernel-free image is used for kernel testing by gitlab for CIP/LAVA. 
Of course, they can also be used for other kernel tests. It may be possible to make kernelci the same.

> For kernelci, we also deploy (not right now as upstream's API is changing), but
> that was always with the kernel - why there?
> 

I think that this would depend on the user and the designers of the testing tools.
Some people don't mind using rootfs with an unrelated kernel for testing.
Also, the size of the rootfs will be smaller since it does not contain kernel binaries or drivers.

> >
> >>> Signed-off-by: Nobuhiro Iwamatsu
> <nobuhiro1.iwamatsu@toshiba.co.jp>
> >>> ---
> >>>  .gitlab-ci.yml             | 28 ++++++++++++++++++++++-
> >>>  kas/opt/no_kernel.yml      | 17 ++++++++++++++
> >>>  scripts/deploy-cip-core.sh | 47
> >>> +++++++++++++++++++++++++++-----------
> >>>  3 files changed, 78 insertions(+), 14 deletions(-)  create mode
> >>> 100644 kas/opt/no_kernel.yml
> >>>
> >>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4df521b..a09eedd
> >>> 100644
> >>> --- a/.gitlab-ci.yml
> >>> +++ b/.gitlab-ci.yml
> >>> @@ -27,6 +27,7 @@ variables:
> >>>    build_swu_v2: disable
> >>>    swupdate_version: default
> >>>    test_function: swupdate
> >>> +  no_kernel: disable
> >>>
> >>>  stages:
> >>>    - build
> >>> @@ -67,9 +68,10 @@ default:
> >>>      - if [ "${watchdog}" = "disable" ]; then
> >> base_yaml="${base_yaml}:kas/opt/disable-watchdog.yml"; fi
> >>>      - if [ "${security_test}" = "enable" ]; then
> >> base_yaml="${base_yaml}:kas/opt/security_test.yml"; fi
> >>>      - if [ "${swupdate_version}" = "2022.12" ]; then
> >>> base_yaml="${base_yaml}:kas/opt/swupdate-2022.12.yaml"; fi
> >>> +    - if [ "${no_kernel}" = "enable" ]; then
> >>> + base_yaml="${base_yaml}:kas/opt/no_kernel.yml"; fi
> >>>      - echo "Building ${base_yaml}"
> >>>      - kas build ${base_yaml}
> >>> -    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh
> >> ${release} ${target} ${extension} ${dtb} ${CI_COMMIT_REF_SLUG} wic;
> >> fi
> >>> +    - if [ "${deploy}" = "enable" ]; then
> >>> + scripts/deploy-cip-core.sh ${release} ${target} ${extension}
> >>> + ${no_kernel} ${dtb} ${CI_COMMIT_REF_SLUG} wic; fi
> >>>      - if [ "${build_swu_v2}" = "enable" ]; then
> >>>            mkdir build/previous-image;
> >>>            if [ "${extension}" = "security" ] || [ "${extension}" =
> >>> "ebg-secure-boot-snakeoil" ]; then @@ -221,6 +223,30 @@
> >> build:qemu-arm-test:
> >>>      target:  qemu-arm
> >>>      extension: test
> >>>
> >>> +build:qemu-amd64-test-nokernel:
> >>> +  extends:
> >>> +    - .build_base
> >>> +  variables:
> >>> +    target:  qemu-amd64
> >>> +    extension: test
> >>> +    no_kernel: enable
> >>> +
> >>> +build:qemu-arm64-test-nokernel:
> >>> +  extends:
> >>> +    - .build_base
> >>> +  variables:
> >>> +    target:  qemu-arm64
> >>> +    extension: test
> >>> +    no_kernel: enable
> >>> +
> >>> +build:qemu-arm-test-nokernel:
> >>> +  extends:
> >>> +    - .build_base
> >>> +  variables:
> >>> +    target:  qemu-arm
> >>> +    extension: test
> >>> +    no_kernel: enable
> >>> +
> >>
> >> Do we always need to build and deploy those extra images?
> >
> > It will not be necessary every time.
> > It will need to be built when LTP is updated or when a point release is had in
> Debian.
> > The current gitlab pipeline is not that well thought out and I think it needs to
> be considered.
> >
> 
> If we do not pick up the artifacts automatically from a pipeline build, we can
> make these variants also manually triggered. But I still need to understand the
> apparent overlap with the kernelci builds (which happen unconditionally so
> far).

I have summarized the differences:

- kernelci:
  - not include test (LTP and others)
    kenrelci probably downloads the test binaries when it runs the tests due to LAVA functionality.
  - includes dedicated scripts (ssh, getty and others) and configuration
  - include kernel binaries when built

- no_kenrel (latest patch):
  - nncludes LTP and other testing tools.
  - not included kernel binaries

If kernelci does not use the kernel contained in the rootfs, I believe it is possible to create a common image
that does not contain kernel binaries and test binaries. As for LTP and other test binaries, the same functionality
as kernelci would need to be modified to be available in CIP/LAVA YAML.

> 
> BTW, where is the riscv64 variant?

Ah, I forgot about that. I'll add it with update patch.

Best regards,
  Nobuhiro
diff mbox series

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4df521b..a09eedd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -27,6 +27,7 @@  variables:
   build_swu_v2: disable
   swupdate_version: default
   test_function: swupdate
+  no_kernel: disable
 
 stages:
   - build
@@ -67,9 +68,10 @@  default:
     - if [ "${watchdog}" = "disable" ]; then base_yaml="${base_yaml}:kas/opt/disable-watchdog.yml"; fi
     - if [ "${security_test}" = "enable" ]; then base_yaml="${base_yaml}:kas/opt/security_test.yml"; fi
     - if [ "${swupdate_version}" = "2022.12" ]; then base_yaml="${base_yaml}:kas/opt/swupdate-2022.12.yaml"; fi
+    - if [ "${no_kernel}" = "enable" ]; then base_yaml="${base_yaml}:kas/opt/no_kernel.yml"; fi
     - echo "Building ${base_yaml}"
     - kas build ${base_yaml}
-    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh ${release} ${target} ${extension} ${dtb} ${CI_COMMIT_REF_SLUG} wic; fi
+    - if [ "${deploy}" = "enable" ]; then scripts/deploy-cip-core.sh ${release} ${target} ${extension} ${no_kernel} ${dtb} ${CI_COMMIT_REF_SLUG} wic; fi
     - if [ "${build_swu_v2}" = "enable" ]; then
           mkdir build/previous-image;
           if [ "${extension}" = "security" ] || [ "${extension}" = "ebg-secure-boot-snakeoil" ]; then
@@ -221,6 +223,30 @@  build:qemu-arm-test:
     target:  qemu-arm
     extension: test
 
+build:qemu-amd64-test-nokernel:
+  extends:
+    - .build_base
+  variables:
+    target:  qemu-amd64
+    extension: test
+    no_kernel: enable
+
+build:qemu-arm64-test-nokernel:
+  extends:
+    - .build_base
+  variables:
+    target:  qemu-arm64
+    extension: test
+    no_kernel: enable
+
+build:qemu-arm-test-nokernel:
+  extends:
+    - .build_base
+  variables:
+    target:  qemu-arm
+    extension: test
+    no_kernel: enable
+
 build:x86-uefi-secure-boot:
   extends:
     - .build_base
diff --git a/kas/opt/no_kernel.yml b/kas/opt/no_kernel.yml
new file mode 100644
index 0000000..2338177
--- /dev/null
+++ b/kas/opt/no_kernel.yml
@@ -0,0 +1,17 @@ 
+#
+# CIP Core, generic profile
+#
+# Copyright (c) Toshiba Corporation 2025
+#
+# Authors:
+#  Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
+#
+# SPDX-License-Identifier: MIT
+#
+
+header:
+  version: 14
+
+local_conf_header:
+  kernel-version: |
+    IMAGE_INSTALL:remove = "linux-image-cip linux-image-cip-rt"
diff --git a/scripts/deploy-cip-core.sh b/scripts/deploy-cip-core.sh
index 6e4dfd7..6cb4968 100755
--- a/scripts/deploy-cip-core.sh
+++ b/scripts/deploy-cip-core.sh
@@ -13,9 +13,10 @@  fi
 RELEASE=$1
 TARGET=$2
 EXTENSION=$3
-DTB=$4
-REF=$5
-DEPLOY=$6
+NO_KERNEL=$4
+DTB=$5
+REF=$6
+DEPLOY=$7
 
 BASE_FILENAME=cip-core-image-cip-core-$RELEASE-$TARGET
 if [ "${EXTENSION}" != "none" ]; then
@@ -29,6 +30,23 @@  fi
 BASE_PATH=build/tmp/deploy/images/$TARGET/$BASE_FILENAME
 S3_TARGET=s3://download2.cip-project.org/cip-core/$REF/$TARGET/
 
+if [ "${NO_KERNEL}" = "enable" ]; then
+	__BASE_PATH=${BASE_PATH}
+	BASE_PATH="${BASE_PATH}-nokernel"
+
+	echo "Rename from ${BASE_FILENAME}.* to ${BASE_FILENAME}-nokernel.*"
+
+	if [ -f "${__BASE_PATH}.tar.gz" ]; then
+		mv "${__BASE_PATH}.tar.gz" "${BASE_PATH}.tar.gz"
+	fi
+	if [ -f "${__BASE_PATH}.swu" ]; then
+		mv "${__BASE_PATH}.swu" "${BASE_PATH}.swu"
+	fi
+	if [ -f "${__BASE_PATH}.wic" ]; then
+		mv "${__BASE_PATH}.wic" "${BASE_PATH}.wic"
+	fi
+fi
+
 if [ -f "${BASE_PATH}.wic" ]; then
 	echo "Uploading artifacts..."
 	if [ "$DEPLOY" = "swu" ]; then
@@ -48,17 +66,20 @@  else
 		aws s3 cp --no-progress --acl public-read "${BASE_PATH}.tar.gz" "${S3_TARGET}"
 	fi
 
-	KERNEL_IMAGE="$BASE_PATH-vmlinu[xz]"
-	# iwg20m workaround
-	if [ -f "build/tmp/deploy/images/$TARGET/zImage" ]; then
-		KERNEL_IMAGE=build/tmp/deploy/images/$TARGET/zImage
-	fi
-	# shellcheck disable=SC2086
-	aws s3 cp --no-progress --acl public-read $KERNEL_IMAGE "${S3_TARGET}"
-	aws s3 cp --no-progress --acl public-read "${BASE_PATH}-initrd.img" "${S3_TARGET}"
+	if [ "$NO_KERNEL" = "false" ]; then
+		KERNEL_IMAGE="$BASE_PATH-vmlinu[xz]"
+		# iwg20m workaround
+		if [ -f "build/tmp/deploy/images/$TARGET/zImage" ]; then
+			KERNEL_IMAGE=build/tmp/deploy/images/$TARGET/zImage
+		fi
 
-	if [ "$DTB" != "none" ]; then
-		aws s3 cp --no-progress --acl public-read build/tmp/deploy/images/*/"$DTB" "${S3_TARGET}"
+		# shellcheck disable=SC2086
+		aws s3 cp --no-progress --acl public-read $KERNEL_IMAGE "${S3_TARGET}"
+		aws s3 cp --no-progress --acl public-read "${BASE_PATH}-initrd.img" "${S3_TARGET}"
+
+		if [ "$DTB" != "none" ]; then
+			aws s3 cp --no-progress --acl public-read build/tmp/deploy/images/*/"$DTB" "${S3_TARGET}"
+		fi
 	fi
 fi