### Finding Contributions Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/CONTRIBUTING.md Provides guidance on how to find issues to contribute to within the project. It specifically mentions using GitHub issue labels like 'good first issue' and 'help wanted' as starting points. ```markdown Looking at the existing issues is a great way to find something to contribute on. As this repository uses GitHub issue [labels](https://github.com/bottlerocket-os/bottlerocket/labels), looking through issues labeled ['good first issue'](https://github.com/bottlerocket-os/bottlerocket/labels/good%20first%20issue) or ['help wanted'](https://github.com/bottlerocket-os/bottlerocket/labels/help%20wanted) is a great place to start. ``` -------------------------------- ### Install Build Dependencies on Ubuntu Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Installs essential build tools and libraries required for compiling the Bottlerocket kernel kit on Ubuntu systems. ```shell apt install build-essential openssl libssl-dev pkg-config liblz4-tool ``` -------------------------------- ### Install cargo-make Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Installs the cargo-make tool, which is used to organize build tasks for the Bottlerocket kernel kit. ```shell cargo install cargo-make ``` -------------------------------- ### Install Build Dependencies on Fedora Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Installs necessary build tools and libraries for compiling the Bottlerocket kernel kit on Fedora systems. ```shell yum install make automake gcc openssl openssl-devel pkg-config lz4 perl-FindBin perl-lib ``` -------------------------------- ### NVIDIA MIG Configuration Example Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/sources/nvidia-migmanager/README.md This TOML configuration snippet demonstrates how to set the device partitioning strategy to 'mig' and define specific MIG profiles for different NVIDIA GPU models. The 'mig.profile' section maps GPU models (e.g., 'a100.40gb') to the desired number of MIG instances. ```toml [settings.kubelet-device-plugins.nvidia] device-partitioning-strategy="mig" [settings.kubelet-device-plugins.nvidia.mig.profile] "a100.40gb"="2" "h100.80gb"="4" "h200.141gb"="3" ``` -------------------------------- ### Storewolf: API Data Store Initialization Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Storewolf is a program responsible for setting up the data store for the API during the boot process. It ensures the API's data storage is correctly initialized. ```go A program that sets up the data store for the API upon boot. ``` -------------------------------- ### Publish the Kernel Kit Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Command to publish the locally built kernel kit image to a specified vendor registry. ```shell make publish VENDOR= ``` -------------------------------- ### Build the Kernel Kit Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Command to initiate the build process for the Bottlerocket kernel kit, specifying the target architecture. ```shell make ARCH= ``` -------------------------------- ### Bottlerocket Filename Case Conventions Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/CONTRIBUTING.md Details the filename case conventions used in the Bottlerocket project. This includes rules for file extensions, build configuration files, documentation/license files, and other general files. ```markdown - All extensions are lowercase, - Build related configuration files always start with a capital letter (e.g. `Infra.toml`, `Release.toml`), - All caps is used for documents and licenses (e.g. `PUBLISHING.md`, `TRADEMARKS.md`), - All lower case is used for all other files (e.g. `sample-eksctl.yaml`, `main.rs`). ``` -------------------------------- ### Configure Vendor Registry in Infra.toml Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Defines the container registry for publishing Bottlerocket kernel kits within the Infra.toml configuration file. ```toml [vendor.] registry = "####.dkr.ecr.us-west-2.amazonaws.com" ``` -------------------------------- ### Configure Docker for OCI Artifacts Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Enables BuildKit and containerd-snapshotter features in Docker's daemon configuration for compatibility with OCI Images. ```json { "features": { "buildkit": true, "containerd-snapshotter": true } } ``` -------------------------------- ### Licensing Information Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/CONTRIBUTING.md Informs contributors about the project's licensing and where to find the copyright information. It also mentions that contributions will require confirmation of licensing. ```markdown See the [COPYRIGHT](COPYRIGHT) file for our project's licensing. We will ask you to confirm the licensing of your contribution. ``` -------------------------------- ### Bottlerocket Kernel Configuration Files Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/packages/kernel-6.1/README.md These files contain the full kernel configuration for specific Bottlerocket architectures. Any differences found using the testing script should be submitted as a pull request. ```text config-full-bottlerocket-aarch64 config-full-bottlerocket-x86_64 ``` -------------------------------- ### Code of Conduct Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/CONTRIBUTING.md References the project's adoption of the Amazon Open Source Code of Conduct and provides links for further information or contact. ```markdown This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact opensource-codeofconduct@amazon.com with any additional questions or comments. ``` -------------------------------- ### GitHub Branch and Tag Structure Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/CONTRIBUTING.md Explains Bottlerocket's branching strategy for active development and releases. Active development is on the 'develop' branch, while releases are marked with tags mirroring SemVer. Patching is done via branches cut for specific minor release lines. ```markdown Active development occurs under the `develop` branch. Bottlerocket uses both tags and branches for release alignment. Numbered releases are always associated with [tags that mirror the full SemVer 3-digit version number](https://github.com/bottlerocket-os/bottlerocket/tags) (e.g. `1.7.2`). [Branches are for patching only](https://github.com/bottlerocket-os/bottlerocket/branches/all): if a patch is required, a branch will be cut for that minor release line (e.g. `1.7.x`). As a consequence, some previous minor versions may not have a branch if they never required a subsequent patch. ``` -------------------------------- ### Build Bottlerocket Kernel Kit Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/README.md Builds the Bottlerocket kernel kit. Supports specifying the architecture for cross-compilation. Refer to BUILDING.md for more details. ```shell make ``` ```shell make ARCH= ``` -------------------------------- ### Shimpei: OCI Hook Wrapper Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Shimpei is an OCI-compatible shim wrapper for `oci-add-hooks`. Its sole purpose is to invoke `oci-add-hooks` with additional `--hook-config-path` and `--runtime-path` parameters that cannot be supplied by containerd. ```go An OCI compatible shim wrapper around `oci-add-hooks`. Its sole purpose is to call `oci-add-hooks` with the additional `--hook-config-path` and `--runtime-path` parameters that can't be provided by containerd. ``` -------------------------------- ### Login to AWS ECR Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md Authenticates Docker with AWS Elastic Container Registry (ECR) to push kernel kit images. ```shell aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin ####.dkr.ecr.us-west-2.amazonaws.com ``` -------------------------------- ### nvidia-migmanager.service Integration Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/sources/nvidia-migmanager/README.md This snippet illustrates how the nvidia-migmanager binary is invoked by its systemd service. The service ensures that the migmanager runs to apply the configured MIG settings upon system startup or relevant events. ```rust // This is a conceptual representation as the actual service file is not provided. // The nvidia-migmanager binary is called by nvidia-migmanager.service. // Example systemd service unit (conceptual): // [Unit] // Description=NVIDIA MIG Manager Service // After=network.target // // [Service] // ExecStart=/usr/local/bin/nvidia-migmanager // Restart=on-failure // // [Install] // WantedBy=multi-user.target ``` -------------------------------- ### Sundog: Runtime Setting Generation Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Sundog is a program executed during boot that generates settings dependent on runtime system information. It identifies settings requiring generation via API metadata and invokes specified helper programs. ```go A program run during boot that generates any settings that depend on runtime system information. It finds settings that need generation by way of metadata in the API, and calls helper programs specified by that metadata. ``` -------------------------------- ### Bottlerocket Kernel Configuration Files Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/packages/kernel-6.12/README.md These files represent the full kernel configurations for aarch64 and x86_64 architectures. Any differences found using the testing script should be submitted as a Pull Request to this package. ```text config-full-bottlerocket-aarch64 ``` ```text config-full-bottlerocket-x86_64 ``` -------------------------------- ### Prairiedog: Boot Operations Handler Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Prairiedog is a program that manages various operations related to the boot process. It handles essential tasks required for a successful system startup. ```go A program that handles various boot related operations. ``` -------------------------------- ### Thar-be-settings: System Configuration File Generation Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Thar-be-settings is a program that generates system configuration files. It replaces template variables within these files with settings obtained from the API. ```go A program that writes out system configuration files, replacing template variables with settings from the API. ``` -------------------------------- ### Ghostdog: Ephemeral Disk Management Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Ghostdog is a program specifically designed for managing ephemeral disks. It handles the lifecycle and configuration of temporary storage volumes. ```go A program used to manage ephemeral disks. ``` -------------------------------- ### Host-ctr: Managing Host Containers Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Host-ctr is the program initiated by `host-containers@.service` for each host container. Its primary function is to launch the specified host container within the 'host' instance of containerd, distinct from the 'user' instance used for Kubernetes pods. ```go The program started by `host-containers@.service` for each host container. Its job is to start the specified host container on the “host” instance of containerd, which is separate from the “user” instance of containerd used for Kubernetes pods. ``` -------------------------------- ### Schnauzer: Templated Setting Generation Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Schnauzer is a setting generator invoked by sundog to construct setting values that incorporate template variables referencing other settings. This enables dynamic configuration based on inter-setting dependencies. ```go A setting generator called by sundog to build setting values that contain template variables referencing other settings. ``` -------------------------------- ### Early Boot Configuration Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Early-boot-config is executed during the boot process to read platform-specific data, such as EC2 user data. It then transmits requested configuration details to the API. ```go A program run at boot to read platform-specific data, such as EC2 user data, and send requested configuration to the API. ``` -------------------------------- ### Configure Twoliter.toml for Private Kernel Kit Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md This TOML configuration specifies a custom vendor pointing to your container registry and defines the Bottlerocket kernel kit dependency with a specific version and vendor. This allows you to test your custom kernel builds. ```toml [vendor.my-vendor] registry = "####.dkr.ecr.us-west-2.amazonaws.com" [[kit]] name = "bottlerocket-kernel-kit" # Name of your ECR repo version = "2.x.y" # your version tag you want to test vendor = "my-vendor" ``` -------------------------------- ### Updog: Bottlerocket OS Update Client Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Updog is an update client that interacts with a specified TUF updates repository to upgrade or downgrade Bottlerocket hosts to different image versions. It manages the versioning and deployment of OS updates. ```go An update client that interfaces with a specified TUF updates repository to upgrade or downgrade Bottlerocket hosts to different image versions. ``` -------------------------------- ### Test Kernel Configuration Changes Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/packages/kernel-6.1/README.md This script helps ensure that kernel configurations for different Bottlerocket flavors and architectures do not change inadvertently. It requires the path to a source RPM (srpm) as input. ```bash # From the top-level bottlerocket-kernel-kit directory: $ ./tools/latest-kernel-full-config.sh -r ./path/to/srpm ``` -------------------------------- ### Netdog: Network Configuration Management Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Netdog is a program invoked by wicked to retrieve and write network configuration details from DHCP. It facilitates the management of network settings obtained via DHCP. ```go A program called by wicked to retrieve and write out network configuration from DHCP. ``` -------------------------------- ### Test Kernel Configuration Changes Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/packages/kernel-6.12/README.md This script helps ensure that kernel configurations for different Bottlerocket flavors and architectures do not change inadvertently. It takes the path to an SRPM file as input and generates a full kernel configuration for comparison. ```bash # From the top-level bottlerocket-kernel-kit directory: $ ./tools/latest-kernel-full-config.sh -r ./path/to/srpm ``` -------------------------------- ### GPT Partition Header Priority Bits Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md GPT partition headers contain a structure of bits that define priority, remaining tries, and previous boot success status. Signpost manipulates these bits, and GRUB uses them to select the appropriate boot partition set. ```rust A structure of bits in GPT partition headers that specifies priority, tries remaining, and whether the partition booted successfully before. signpost sets these and GRUB uses them to determine which partition set to boot. ``` -------------------------------- ### Setting Generator: Default Value Creation Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md A setting generator is a binary executable responsible for creating the default value for a given setting. These generators ensure that settings have a defined initial state. ```rust A binary that generates the default value of a setting. ``` -------------------------------- ### Security Issue Notifications Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/CONTRIBUTING.md Instructs users on how to report potential security issues. It directs users to the AWS/Amazon Security vulnerability reporting page and explicitly advises against creating public GitHub issues for security concerns. ```markdown If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public GitHub issue. ``` -------------------------------- ### Block-party: Linux Block Device Information Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Block-party is a library designed to retrieve information about Linux block devices. It provides a convenient way to access details about storage devices. ```rust A library that helps retrieve information about Linux block devices. ``` -------------------------------- ### Update Twoliter Lock File Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/BUILDING.md After modifying the Twoliter.toml file to change the vendor or version of the kernel kit, you must run this command to update the Twoliter.lock file, ensuring your project uses the specified dependencies. ```bash ./tools/twoliter/twoliter update ``` -------------------------------- ### Metricdog: Health Ping Service Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Metricdog is a program responsible for sending anonymous health pings. It contributes to monitoring the overall health status of the system. ```go A program that sends anonymous health pings. ``` -------------------------------- ### Logdog: Log Collection Utility Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Logdog is a utility designed for collecting logs, particularly useful when diagnosing issues. It aids in gathering diagnostic information when problems arise. ```go A program that one can use to collect logs when things go wrong. ``` -------------------------------- ### Corndog: Kernel Sysctl Configuration Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Corndog is a program responsible for setting kernel sysctl values based on API-defined settings. It ensures that kernel parameters are configured according to the system's API specifications. ```go A program that sets kernel sysctl values based on API settings. ``` -------------------------------- ### Buildsys: Container-based Build Tool Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Buildsys is a build tool that executes package and image builds within containers. It is invoked by cargo-make and utilizes an SDK Docker image for the build process. ```bash cargo-make starts the build of each package, each of which calls buildsys, which in turn starts a Docker-based build using the SDK image. ``` -------------------------------- ### Bork: Sundog Setting Generator Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Bork is a setting generator utilized by sundog to produce the random seed for updog. This seed determines the host's position in the update sequence. ```go A setting generator called by sundog to generate the random seed for updog, determining where the host falls in the update order. ``` -------------------------------- ### API Data Model Definition Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md The API system utilizes a data model specific to each variant. This model is employed by other programs for serializing and deserializing requests, ensuring type safety. ```rust The API system has a data model defined for each variant, and this model is used by other programs to serialize and deserialize requests while maintaining safety around data types. ``` -------------------------------- ### Signpost: GPT Header Manipulation Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Signpost is a program used for modifying the GPT header of the OS disk. It adjusts fields within the header that GRUB relies on to determine the boot partition set. ```go A program used to manipulate the GPT header of the OS disk; fields in the header are used by GRUB to determine the partition set we should boot from. ``` -------------------------------- ### Shibaken: User-data Public Key Population Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Shibaken is a setting generator used by sundog to populate the admin container's user-data with public keys retrieved from IMDS, specifically when operating within AWS environments. ```go A setting generator called by sundog to populate the admin container's user-data with public keys from IMDS, when running in AWS. ``` -------------------------------- ### Pluto: Kubernetes Networking Settings Generator Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Pluto is a setting generator called by sundog to identify networking settings required by Kubernetes. It assists in configuring network parameters essential for Kubernetes operations. ```go A setting generator called by sundog to find networking settings required by Kubernetes. ``` -------------------------------- ### Host Containers: System Maintenance Containers Source: https://github.com/bottlerocket-os/bottlerocket-kernel-kit/blob/develop/GLOSSARY.md Host containers are containers that operate within a separate containerd instance from user containers spawned by orchestrators like Kubernetes. They are utilized for system maintenance and connectivity tasks. ```rust Containers that run in a separate instance of containerd than "user" containers spawned by an orchestrator (e.g. Kubernetes). Used for system maintenance and connectivity. ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.