- You have cloned the carbide repo from github
- Ubuntu2404 Host or VM - Make sure you have 150GB+ of disk space
A linux VM or host is required in order to complete the steps below. This will not work on MacOS. Instructions
assume an apt based distro such as Ubuntu 24.04
apt-get install build-essential direnv mkosi uidmap curl fakeroot git docker.io docker-buildx sccache protobuf-compiler libopenipmi-dev libudev-dev libboost-dev libgrpc-dev libprotobuf-dev libssl-dev libtss2-dev kea-dev systemd-boot systemd-ukify- Add the correct hook for your shell
- Install rustup -
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh(select Option 1) - Start a new shell to pick up changes made from direnv and rustup.
- Clone carbide -
git clone git@github.com:NVIDIA/carbide-core-snapshot.git carbide cd carbidedirenv allowcd $REPO_ROOT/pxegit clone https://github.com/systemd/mkosi.gitcd mkosi && git checkout 26673f6cd $REPO_ROOT/pxe/ipxegit clone https://github.com/ipxe/ipxe.git upstreamcd upstream && git checkout d7e58c5sudo systemctl enable docker.socketcd $REPO_ROOTcargo install cargo-make cargo-cacheecho "kernel.apparmor_restrict_unprivileged_userns=0" | sudo tee /etc/sysctl.d/99-userns.confsudo usermod -aG docker <username>reboot
NOTE
In order to download the required HBN container, you must have access to PID Library The PID library contains an attachment HBN-LTS-2-4-3-complete.tar.gz which you will need to download into your home directory.
NOTE Execute these tasks in order. All commands are run from the top of the carbide directory
docker build --file dev/docker/Dockerfile.build-container-x86_64 -t carbide-buildcontainer-x86_64 .docker build --file dev/docker/Dockerfile.runtime-container-x86_64 -t carbide-runtime-container-x86_64 .cargo make --cwd pxe --env SA_ENABLEMENT=1 build-boot-artifacts-x86-host-sa
docker build --build-arg "CONTAINER_RUNTIME_X86_64=alpine:latest" -t boot-artifacts-x86_64 -f dev/docker/Dockerfile.release-artifacts-x86_64 .docker build --build-arg CONTAINER_RUNTIME_X86_64=carbide-runtime-container-x86_64 -t machine-validation-runner -f dev/docker/Dockerfile.machine-validation-runner .
docker build --build-arg CONTAINER_RUNTIME_X86_64=carbide-runtime-container-x86_64 -t machine-validation-config -f dev/docker/Dockerfile.machine-validation-config .docker build --build-arg "CONTAINER_RUNTIME_X86_64=carbide-runtime-container-x86_64" --build-arg "CONTAINER_BUILD_X86_64=carbide-build-container-x86_64" -f dev/docker/Dockerfile.release-container-sa-x86_64 -t carbide .docker build --file dev/docker/Dockerfile.build-artifacts-container-cross-aarch64 -t build-artifacts-container-cross-aarch64 .After downloading HBN-LTS-2-4-3-complete.tar.gz
tar -zxf HBN-LTS-2-4-3-complete.tar.gz`
cd HBN-LTS-2-4-3
cp hbn-lts-2-4-3.tar /tmp/doca_hbn.tar
cd doca_container_configs_v2.10.81
zip -r ../doca_container_configs.zip .
cp doca_container_configs.zip /tmpcargo make --cwd pxe --env SA_ENABLEMENT=1 build-boot-artifacts-bfb-sa
docker build --build-arg "CONTAINER_RUNTIME_AARCH64=alpine:latest" -t boot-artifacts-aarch64 -f dev/docker/Dockerfile.release-artifacts-aarch64 .NOTE The CONTAINER_RUNTIME_AARCH64=alpine:latest is not a mistake. We bundle the aarch64 binaries into an x86 container.