Skip to content

packages: add managed and unmanaged subpackages in release#944

Open
sky1122 wants to merge 1 commit into
bottlerocket-os:developfrom
sky1122:mini
Open

packages: add managed and unmanaged subpackages in release#944
sky1122 wants to merge 1 commit into
bottlerocket-os:developfrom
sky1122:mini

Conversation

@sky1122

@sky1122 sky1122 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Description of changes:
Refactor the release package into a shared base with two mutually exclusive subpackages (release-managed and
release-unmanaged), selected automatically by the first-party-stack image feature.

The base release package contains the minimal set of shared systemd units, configs, and mounts used by both managed and unmanaged variants. The release-managed subpackage extends the base via systemd drop-ins (adding dependencies on reboot-if-required, settings-applier, and repart-data masking) and includes all managed-only services, mounts, templates, and configs. The release-unmanaged subpackage provides a minimal configuration for variants without the first-party management stack.

In some systemd config and rules there are few things I didn't delete because I'm not sure, but happy to hear any feedback.

Testing done:

  • aws-k8s-1.33-fips variant
fips related service
bash-5.2# systemctl status fipscheck.target
● fipscheck.target - FIPS integrity check
     Loaded: loaded (/x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/system/fipscheck.target; enabled; preset: enabled)
     Active: active since Mon 2026-06-22 23:46:50 UTC; 8min ago

Notice: journal has been rotated since unit was started, output may be incomplete.
bash-5.2# systemctl status check-kernel-integrity.service
● check-kernel-integrity.service - Run FIPS kernel integrity check
     Loaded: loaded (/x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/system/check-kernel-integrity.service; enabled; preset: enabled)
    Drop-In: /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/system/service.d
             └─00-aws-config.conf, 00-fips-go.conf, 10-requires-tmp.conf
     Active: active (exited) since Mon 2026-06-22 23:46:49 UTC; 8min ago
   Main PID: 404 (code=exited, status=0/SUCCESS)
        CPU: 55ms

Notice: journal has been rotated since unit was started, output may be incomplete.
bash-5.2# systemctl status check-fips-modules.service
● check-fips-modules.service - Run FIPS crypto module check
     Loaded: loaded (/x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/system/check-fips-modules.service; enabled; preset: enabled)
    Drop-In: /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/system/service.d
             └─00-aws-config.conf, 00-fips-go.conf
             /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/system/check-fips-modules.service.d
             └─000-sha1.conf, 001-sha224.conf, 002-sha256.conf, 003-sha384.conf, 004-sha512.conf, 005-sha3-224.conf, 006-sha3-256.conf, 007-sha3-384.conf, 008-sha3-512.conf, 009-crc32c.conf, 010-crct10dif.conf, 011-ghash.conf, 012-xxhash64.conf, 013-ghash_clmulni_intel.conf, 014-sha1-ssse3.conf, 015-sha256-ssse3.conf, 016-sha512-ssse3.conf, 017-cipher_null.conf, 018-des3_ede.conf, 019-aes.conf, 020-cfb.conf, 021-dh.conf, 022-ecdh.conf, 023-aesni-intel.conf, 024-ecb.conf, 025-cbc.conf, 026-ctr.conf, 027-xts.conf, 028-gcm.conf, 029-ccm.conf, 030-authenc.conf, 031-hmac.conf, 032-cmac.conf, 033-ofb.conf, 034-cts.conf, 035-lzo.conf, 036-essiv.conf, 037-seqiv.conf, 038-drbg.conf, 039-aead.conf, 040-cryptomgr.conf, 041-crypto_user.conf, 042-rsa.conf
             /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/system/service.d
             └─10-requires-tmp.conf
     Active: active (exited) since Mon 2026-06-22 23:46:50 UTC; 8min ago
   Main PID: 606 (code=exited, status=0/SUCCESS)
        CPU: 220ms

Notice: journal has been rotated since unit was started, output may be incomplete.
bash-5.2#
  • aws-k8s-1.33 variant
[root@admin]# apiclient get os
{
  "os": {
    "arch": "x86_64",
    "build_id": "8ef015e0-dirty",
    "pretty_name": "Bottlerocket OS 1.61.0 (aws-k8s-1.33)",
    "variant_id": "aws-k8s-1.33",
    "version_id": "1.61.0"
  }
}
systemd is working
bash-5.2# systemctl --failed
  UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.
bash-5.2# exit
exit
[root@admin]# apiclient get os
{
  "os": {
    "arch": "x86_64",
    "build_id": "8ef015e0-dirty",
    "pretty_name": "Bottlerocket OS 1.61.0 (aws-k8s-1.33)",
    "variant_id": "aws-k8s-1.33",
    "version_id": "1.61.0"
  }
}
[root@admin]#
bash-5.2# systemctl cat activate-multi-user.service | grep -E "After|Requires"
After=configured.target
Requires=configured.target
RemainAfterExit=true
After=reboot-if-required.service
Requires=reboot-if-required.service
After=tmp.mount
bash-5.2# systemctl cat drivers.target | grep "Before"
Before=preconfigured.target
Before=settings-applier.service
bash-5.2# systemctl cat drivers.target | grep "Before"
Before=preconfigured.target
Before=settings-applier.service
bash-5.2# systemctl cat prepare-local-fs.service | grep -A1 "repart"
# Stop and mask the repart-data-* oneshots in case they're waiting on non-existent data partitions.
# 'BOTTLEROCKET-DATA' already exists so we can move on.
ExecStart=/usr/bin/systemctl stop repart-data-preferred repart-data-fallback --no-block
ExecStart=/usr/bin/ln -s /dev/null /etc/systemd/system/repart-data-preferred.service
ExecStart=/usr/bin/ln -s /dev/null /etc/systemd/system/repart-data-fallback.service
  • test with aws-dev and variant definition is in below. Create s pre-format EBS volume/snapshot. Lunch and boot a instance with pre-formate EBS volume.
[package]
name = "aws-dev"
version = "0.1.0"
edition = "2021"
publish = false
build = "../build.rs"
# Don't rebuild crate just because of changes to README.
exclude = ["README.md"]

[package.metadata.build-variant.image-features]
first-party-stack = false
xfs-data-partition = true
erofs-root-partition = true
in-place-updates = false
host-containers = false
external-kmod-development = false
encrypted-storage = false

[package.metadata.build-variant.image-layout]
partition-plan = "unified"

[package.metadata.build-variant]
kernel-parameters = [
    "console=ttyS0,115200n8",
    "net.ifnames=0",
    "quiet",
    "systemd.unified_cgroup_hierarchy=1",
]

included-packages = [
# core
    "release",
    "kernel-6.18",
    "containerd-2.2",
    "systemd-257",
    "nftables",
# boot (needed for EC2/UEFI)
    "grub",
    "shim",
# docker
    "docker-cli-29",
    "docker-engine-29",
    "docker-init",
# tools
    "login",
]

[lib]
path = "../variants.rs"

[build-dependencies]
settings-defaults = { path = "../../packages/settings-defaults" }
settings-plugins = { path = "../../packages/settings-plugins" }
settings-migrations = { path = "../../packages/settings-migrations" }
Docker Hello World
bash-5.3# docker run --rm hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

bash-5.3#
systemctl status
bash-5.3# systemctl --failed
  UNIT LOAD ACTIVE SUB DESCRIPTION

0 loaded units listed.

bash-5.3# systemctl status
● localhost
    State: running
    Units: 265 loaded (incl. loaded aliases)
     Jobs: 0 queued
   Failed: 0 units
    Since: Tue 2026-07-07 23:34:47 UTC; 12min ago
  systemd: 257.9
  Tainted: unmerged-bin
   CGroup: /
           ├─init.scope
           │ └─1 /sbin/init systemd.log_target=journal-or-kmsg systemd.log_color=0 systemd.show_status=true
           ├─runtime.slice
           │ └─containerd.service
           │   └─1450 /usr/bin/containerd
           └─system.slice
             ├─docker.service
             │ └─1493 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ├─system-getty.slice
             │ └─getty@tty1.service
             │   └─1389 /sbin/agetty -o "-- \\u" --noreset --noclear - linux
             ├─system-serial\x2dgetty.slice
             │ └─serial-getty@ttyS0.service
             │   ├─1393 bash --login
             │   ├─1841 systemctl status
             │   └─1842 "(pager)"
             ├─systemd-journald.service
             │ └─615 /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/systemd-journald
             ├─systemd-logind.service
             │ └─1454 /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/systemd-logind
             ├─systemd-udevd.service
             │ └─udev
             │   └─657 /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/systemd/systemd-udevd
             └─whippet.service
               ├─653 /usr/bin/whippet
               └─993 /usr/bin/dbus-broker --log 12 --controller 11 --machine-id ec2fe60d50e8614b3befd42254f7f4b2 --max-bytes 536870912 --max-fds 4096 --max-matches 16384
bash-5.3# 
overlay mount status
bash-5.3# mount | grep -E "/local|/var|/opt|/mnt|/tmp"
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,seclabel,size=7960816k,nr_inodes=1048576)
/dev/nvme1n1p1 on /local type xfs (rw,nosuid,nodev,noatime,seclabel,inode64,logbufs=8,logbsize=32k,sunit=8,swidth=8,noquota)
/dev/nvme1n1p1 on /mnt type xfs (rw,nosuid,nodev,noatime,seclabel,inode64,logbufs=8,logbsize=32k,sunit=8,swidth=8,noquota)
/dev/nvme1n1p1 on /opt type xfs (rw,nosuid,nodev,noatime,seclabel,inode64,logbufs=8,logbsize=32k,sunit=8,swidth=8,noquota)
/dev/nvme1n1p1 on /var type xfs (rw,nosuid,nodev,noatime,seclabel,inode64,logbufs=8,logbsize=32k,sunit=8,swidth=8,noquota)
/dev/dm-0 on /local/mnt type erofs (ro,nosuid,nodev,noexec,relatime,seclabel,user_xattr,acl,cache_strategy=readaround)
/dev/dm-0 on /local/opt type erofs (ro,nosuid,nodev,noexec,relatime,seclabel,user_xattr,acl,cache_strategy=readaround)
/dev/dm-0 on /local/var type erofs (ro,nosuid,nodev,noexec,relatime,seclabel,user_xattr,acl,cache_strategy=readaround)
overlay on /x86_64-bottlerocket-linux-gnu/sys-root/usr/lib/modules type overlay (rw,nosuid,nodev,noexec,noatime,context=system_u:object_r:state_t:s0,lowerdir=/lib/modules,upperdir=/var/lib/kernel-modules/.overlay/upper,workdir=/var/lib/kernel-modules/.overlay/work,uuid=on)
partition
bash-5.3# ls -la /dev/disk/by-partlabel/
ls -la /dev/disk/ephemeral/ 2>/dev/null
ls -la /dev/disk/by-volume-type-partuuid/ 2>/dev/null
total 0
drwxr-xr-x.  2 root root 160 Jul  7 23:34 .
drwxr-xr-x. 11 root root 220 Jul  7 23:34 ..
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 BIOS-BOOT -> ../../nvme0n1p1
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 BOTTLEROCKET-BOOT-A -> ../../nvme0n1p3
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 BOTTLEROCKET-DATA -> ../../nvme1n1p1
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 BOTTLEROCKET-HASH-A -> ../../nvme0n1p5
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 BOTTLEROCKET-ROOT-A -> ../../nvme0n1p4
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 EFI-SYSTEM -> ../../nvme0n1p2
total 0
drwxr-xr-x.  2 root root 160 Jul  7 23:34 .
drwxr-xr-x. 11 root root 220 Jul  7 23:34 ..
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 nvme-ebs-16942332-0fc3-414a-9814-86c78baa77d6 -> ../../nvme0n1p2
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 nvme-ebs-1f25261c-1d0f-4685-bafb-4b17c955400b -> ../../nvme1n1p1
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 nvme-ebs-2804000f-0c52-449c-8366-5f3c61c60e4e -> ../../nvme0n1p4
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 nvme-ebs-69483bda-512e-40b2-9c15-1c5d757fbd2a -> ../../nvme0n1p5
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 nvme-ebs-bbae782a-a5d6-4258-bda5-378df33783e4 -> ../../nvme0n1p1
lrwxrwxrwx.  1 root root  15 Jul  7 23:34 nvme-ebs-f04b125d-59a9-480a-9051-addc8bb80f1e -> ../../nvme0n1p3

Terms of contribution:

By submitting this pull request, I agree that this contribution is dual-licensed under the terms of both the Apache License, version 2.0, and the MIT license.

@sky1122 sky1122 requested a review from vigh-m June 12, 2026 16:55

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if we need this since we're not concerned with network initialisation in minios

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm still keep this since this is the one set the fix name for the network interface between the kernel space and user space just in case and we could remove this later if not needed.

Comment thread packages/minios/ebs-volumes.rules Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These rules, packages/minios/ephemeral-ebs-storage.rules, and packages/minios/ephemeral-storage.rules can be dropped or atleast modified since we don't expect to setup EBS volumes with the nested hypervisor.

Comment thread packages/minios/logdog.common.conf Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't expect needing to run logdog from inside the nested hypervisor.

Comment thread packages/minios/minios.spec Outdated
%description
%{summary}.

%package -n %{_cross_os}minios-corndog

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

%package corndog will append %{_cross_os}minios- to the package name. Same for certdog and ghostdog

Comment thread packages/minios/minios.spec Outdated
%description -n %{_cross_os}minios-brush
%{summary}.

%package -n %{_cross_os}minios-whippet

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing Requires for whippet

Comment thread packages/minios/minios.spec Outdated



%package -n %{_cross_os}minios-brush

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as whippet

Comment thread packages/minios/minios.spec Outdated
Comment on lines +205 to +211
%cargo_build --manifest-path %{_builddir}/sources/Cargo.toml \
-p ghostdog \
-p corndog \
-p certdog \
-p brush \
-p whippet \
%{nil}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of rebuilding these sources, can we depend on os-{ghostdog,corndog,etc}?
That way we don't have to build these packages twice

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great idea. I was debating because that will introduce some dead config/template but I think that should be fine.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: There's a lot of extra newlines in this file

Comment thread packages/minios/minios.spec Outdated
Comment on lines +97 to +101
# bootconfig snippets.

# TPM2-related services.

# TPM2-related drop-ins.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These comments can be dropped

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need to include kernel-devel for nested hypervisor

Comment thread packages/minios/minios.spec Outdated

# Other drop-ins.
Source93: release-tmpfiles.conf
Source95: release-systemd-networkd.conf

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Declared but not present or installed

Comment thread packages/minios/minios.spec Outdated
Comment on lines +77 to +78
Source1101: systemd-resolved-service-env.conf
Source1102: systemd-networkd-service-env.conf

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same. Sources are declared but not present in the package files or installed.

@sky1122

sky1122 commented Jun 15, 2026

Copy link
Copy Markdown
Contributor Author

forced push to address feedback. A con for reduce the double compilation will be inevitable pull in some died configuration file.

@sky1122

sky1122 commented Jun 15, 2026

Copy link
Copy Markdown
Contributor Author

forced pushed to fix the changes forget to add in the previous push.

@sky1122 sky1122 force-pushed the mini branch 2 times, most recently from 5293384 to e1d8f67 Compare June 17, 2026 20:50

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a bloker for myself is removing the embedded testing image from here and spec file after the twoliter change merge and finish testing

Comment thread packages/release/release.spec Outdated
Requires: %{_cross_os}libkcapi
Requires: (%{name}-fips if %{_cross_os}image-feature(fips))
Requires: (%{name}-crypt if %{_cross_os}image-feature(encrypted-storage))
Requires: (%{_cross_os}release-managed if %{_cross_os}image-feature(no-unmanaged))

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a reminder for myself this will need to change after twoliter change update

@sky1122 sky1122 marked this pull request as ready for review June 17, 2026 22:42
@sky1122 sky1122 force-pushed the mini branch 2 times, most recently from aba41a5 to 7fa9cd5 Compare June 18, 2026 00:01
@sky1122

sky1122 commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

forced pushed to match with Twoliter PR image feature name; remove rebase wrong twoliter file. The testing image still embedded into the spec file. Will remove once the Twoliter feature name confirm.

Comment thread packages/release-unmanaged/release-unmanaged.spec Outdated
Comment thread packages/release/release.spec
Comment thread Twoliter.toml Outdated
Comment thread packages/release-managed/release-managed.spec Outdated
Comment thread packages/release-managed/release-managed.spec Outdated
Comment thread packages/release-unmanaged/release-unmanaged.spec Outdated
Comment thread packages/release-unmanaged/release-unmanaged.spec Outdated
Comment thread packages/release-unmanaged/release-unmanaged.spec Outdated
Comment thread packages/release-unmanaged/release-unmanaged.spec Outdated
Comment thread packages/release/release.spec Outdated
@ginglis13

Copy link
Copy Markdown
Contributor

Please include inverted testing details as well - i.e., build, launch, test "managed" release instances

@sky1122

sky1122 commented Jun 22, 2026

Copy link
Copy Markdown
Contributor Author

forced pushed to change the spec file to refactored release package into a shared base with managed/unmanaged subpackages selected by first-party-stack image feature, using systemd drop-ins to extend base units for
managed release.

@sky1122 sky1122 force-pushed the mini branch 2 times, most recently from 34b0b3d to 16b7b88 Compare June 23, 2026 20:49
@sky1122

sky1122 commented Jun 23, 2026

Copy link
Copy Markdown
Contributor Author

force pushed(s) to rebase

@sky1122 sky1122 changed the title packages: add minios package packages: add managed and unmanaged subpackages in release Jun 24, 2026
Comment on lines 16 to 17
# Create the filesystem on the partition, if it doesn't exist.
ExecStart=/usr/lib/systemd/systemd-makefs ${DATA_PARTITION_FILESYSTEM} ${DATA_PARTITION_BLOCK_DEVICE}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

correct me if I'm wrong, but I was under the impression that the "unmanaged" image would not have a data partition

@sky1122 sky1122 Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Formatted data partition will come up later provided by others and this one right now just do a no ops so yes I can move this to managed-release only.

Comment on lines +2 to +3
d /var/log/kdump 0700 root root -
T /var/log/kdump - - - - security.selinux=system_u:object_r:secret_t:s0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why don't we include kdump in the unmanaged / guest? I would imagine we'd want insights into kernel panics there

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good point! I will also includ kexec-tools and makedumpfile and then add kdump services/tmpfiles to the base package since the insights into kernel panics are important and they are the chain for that.

Comment thread packages/release/release.spec Outdated
Comment thread packages/release/release.spec Outdated
Comment thread packages/release/release.spec Outdated
Comment thread packages/release/release.spec Outdated
Comment thread packages/release/release.spec Outdated
Comment thread packages/release/release.spec Outdated
Comment thread packages/release/release.spec Outdated
Comment thread packages/release/release.spec Outdated
@sky1122 sky1122 force-pushed the mini branch 2 times, most recently from 5dcedc8 to 81d53db Compare June 30, 2026 22:21
@sky1122

sky1122 commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

force pushed to add xfsprogs and prepare-local-fs.service to base

Requires: %{_cross_os}filesystem
Requires: %{_cross_os}findutils
Requires: %{_cross_os}glibc
Requires: %{_cross_os}grep

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

grep can probably stay in the release-managed package

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will still prefer to keep the grep in both since grep is only 129KB and might be useful.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am unclear on the expected customer use of the unmanaged release package, which makes it hard to judge the extent to which we want to trim and split the packages.
I would question the addition of findutils, kexec-tools and makedumpfile as well since I don't expect a customer running any of the bundled binaries on a nested instance.

@sky1122 sky1122 Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair concern. These are ~585KB total and provide integration-time value. It give us inspect kernel behavior interactively and their usefulness is conditional on changing the runtime. The guest kernel-load path is still being defined across people, so having them on the base image reduces turnaround during bring-up. I think keep through integration still ok and we can revisit as an explicit trimming pass once the use case stabilizes.

Comment thread packages/release/release-unmanaged-tmpfiles.conf Outdated
Comment thread packages/release/release.spec
Comment thread packages/release/release.spec
Refactor the release package into a shared base with two mutually
exclusive subpackages selected by the `first-party-stack` image feature:

- release-managed: extends base units with systemd drop-ins for the
  settings API, updates, and repart-data partition discovery. Requires
  the full first-party stack (os package) and managed-only dependencies.
- release-unmanaged: minimal configuration for variants without the
  first-party management stack. Requires only corndog, certdog,
  ghostdog, and whippet.

The base release package contains shared systemd units in their minimal
form. The managed subpackage layers additional ordering dependencies
(reboot-if-required, settings-applier) and services via drop-in configs
rather than maintaining separate copies of unit files.

Signed-off-by: Jingwei Wang <jweiw@amazon.com>
@sky1122

sky1122 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

forced pushed to address the feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants