.. # ******************************************************************************* # Copyright (c) 2025 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. # # This program and the accompanying materials are made available under the # terms of the Apache License Version 2.0 which is available at # https://www.apache.org/licenses/LICENSE-2.0 # # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* .. _comp_doc_os_community_autosd: .. os: AutoSD :id: os__autosd :level: community :maintainer: odra Red Hat AutoSD ############## AutoSD is the upstream binary distribution that serves as the public, in-development preview and functional precursor of the Red Hat In-Vehicle Operating System (OS). AutoSD is downstream of CentOS Stream, so it retains most of the CentOS Stream code with a few divergences, such as an optimized automotive-specific kernel rather than CentOS Stream's kernel package. Red Hat In-Vehicle OS is based on both AutoSD and RHEL, both of which are downstreams of CentOS Stream. Target Maintainers/Integration Assistance ----------------------------------------- GitHub Handles of the target maintainers. - Leonardo Rossetti - @odra Integration Assistance ---------------------- The following fulfills :need:`aou_req__platform__integration_assistance` +----------------+-----------------------------+ | .. centered:: Leonardo Rossetti | +----------------+-----------------------------+ | Github Handler | @odra | +----------------+-----------------------------+ | Slack Handler | @lrossett | +----------------+-----------------------------+ Integration Manual ------------------ The following fulfills :need:`aou_req__platform__os_integration_manual` Build Instructions ^^^^^^^^^^^^^^^^^^ Building an AutoSD image can be done by using "aib": https://gitlab.com/CentOS/automotive/src/automotive-image-builder Sample usage: .. code:: bash export OCI_IMAGE=localhost/score:latest export AIB_DISTRO=autosd10-sig aib build-builder --distro ${AIB_DISTRO} aib build --target qemu --distro ${AIB_DISTRO} image.aib.yml ${OCI_IMAGE} aib to-disk-image ${OCI_IMAGE} autosd-score.qcow2 As an alternative, you can replace the bare metal "aib" usage with a bash script that runs the tool inside an OCI container: .. code:: bash curl -o auto-image-builder.sh "https://gitlab.com/CentOS/automotive/src/automotive-image-builder/-/raw/main/auto-image-builder.sh" chmod +x auto-image-builder.sh You can then replace the usage of "aib" with "auto-image-builder.sh" (requires sudo): .. code:: bash export OCI_IMAGE=localhost/score:latest export AIB_DISTRO=autosd10-sig # set the container storage to the local "_builder" directory to avoid permissions issues export AIB_LOCAL_CONTAINER_STORAGE=$PWD/_build/containers-storage sudo -E ./auto-image-builder.sh build-builder --distro ${AIB_DISTRO} sudo -E ./auto-image-builder.sh build --target qemu --distro ${AIB_DISTRO} image.aib.yml ${OCI_IMAGE} sudo -E ./auto-image-builder.sh to-disk-image ${OCI_IMAGE} autosd-score.qcow2 If using QEMU, you can run the image using the following command: .. code:: bash /usr/bin/qemu-system-x86_64 \ -drive file=/usr/share/OVMF/OVMF_CODE_4M.fd,if=pflash,format=raw,unit=0,readonly=on \ -drive file=/usr/share/OVMF/OVMF_VARS_4M.fd,if=pflash,format=raw,unit=1,snapshot=on,readonly=off \ -enable-kvm \ -m 2G \ -smp $(nproc) \ -machine q35 \ -cpu host \ -device virtio-net-pci,netdev=n0 \ -netdev user,id=n0,hostfwd=tcp::2222-:22 \ -daemonize \ -display none \ -drive file=disk.qcow2,index=0,media=disk,format=qcow2,if=virtio,id=rootdisk,snapshot=off Toolchain ^^^^^^^^^ Upstream documentation: https://github.com/eclipse-score/inc_os_autosd/tree/main/toolchain A Bazel toolchain defintion is provided for users to build their Bazel modules and components with AutoSD's tooling (compilers, libraries, etc). Sample usage (MODULE.bazel file): .. code:: starlark # Use local path during development, or git_override for published versions local_path_override( module_name = "os_autosd", path = "/path/to/inc_os_autosd/" ) bazel_dep(name = "os_autosd", version = "1.0.0") # Configure AutoSD 9 GCC toolchain autosd_10_gcc = use_extension("@os_autosd//toolchain/autosd_10_gcc:extensions.bzl", "autosd_10_gcc_extension") autosd_10_gcc.configure( c_flags = ["-Wall", "-Wno-error=deprecated-declarations", "-Werror", "-fPIC"], cxx_flags = ["-Wall", "-Wno-error=deprecated-declarations", "-Werror", "-fPIC"], ) use_repo(autosd_10_gcc, "autosd_10_gcc_repo") register_toolchains("@autosd_10_gcc_repo//:gcc_toolchain_linux_x86_64") **NOTE:** AutoSD's tooling does not support cross compilation. Mixed Critical Orchestration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Upstream documentation: https://sigs.centos.org/automotive/features-and-concepts/con_mixed-criticality/ Mixed Critical Orchestration, aka MCO, can be achieved with the following components: * Systemd: the init system that is responsible for workload orchestration * Eclise BlueChi: extends Systemd to enable multi-node and multi domain orchestration * QM: Quality management environment that is composed of two sub-systems: a dedicated rootfs partition + container isolation ASIL and QM connectivity is done either via an IPC socket or shared memory (/dev/shm). .. image:: _assets/autosd-mco.png :align: center Bug Interface ------------- The following fulfills :need:`aou_req__platform__bug_interface` +------------------------------------+---------------------------------------------------------------------------+ | | +------------------------------------+---------------------------------------------------------------------------+ | CentOS SIG Automotive Mailing List | https://lists.centos.org/hyperkitty/list/automotive-sig@lists.centos.org/ | +------------------------------------+---------------------------------------------------------------------------+ | Gitlab Issue Tracker | https://gitlab.com/CentOS/automotive/sig | +------------------------------------+---------------------------------------------------------------------------+ | CentOS SIG Matrix Channel | https://app.element.io/#/room/#centos-automotive-sig:fedoraproject.org | +------------------------------------+---------------------------------------------------------------------------+ | Eclipse SDV Slack Channel | #autosd (https://sdvworkinggroup.slack.com/archives/C0986LJ9EJH) | +------------------------------------+---------------------------------------------------------------------------+