# Particle-OS Base Containerfile # Starts with debian:trixie-slim and sets up the foundation # This is the base layer that all other images will build upon FROM debian:trixie-slim # Set environment variables ENV DEBIAN_FRONTEND=noninteractive ENV LANG=C.UTF-8 ENV LC_ALL=C.UTF-8 # Update package lists and install essential packages RUN apt-get update && apt-get install -y \ # Essential system packages systemd \ systemd-sysv \ dbus \ sudo \ curl \ wget \ gnupg \ ca-certificates \ # Locale support locales \ # Basic utilities vim-tiny \ less \ procps \ # Network utilities iproute2 \ net-tools \ # Time synchronization systemd-timesyncd \ # CRITICAL: Disk utilities for bootc deployment (from scope.md) util-linux \ parted \ e2fsprogs \ dosfstools \ grub-efi-amd64 \ efibootmgr \ # Additional filesystem utilities fdisk \ gdisk \ && rm -rf /var/lib/apt/lists/* # Configure locales RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && \ locale-gen ENV LANG=en_US.UTF-8 ENV LANGUAGE=en_US:en ENV LC_ALL=en_US.UTF-8 # CRITICAL: Fix PATH environment issues (from scope.md) # Ensure PATH includes /usr/sbin and /sbin for disk utilities ENV PATH="/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin" # Create OSTree-compliant filesystem structure RUN mkdir -p /ostree && \ mkdir -p /sysroot && \ mkdir -p /boot && \ mkdir -p /usr/lib/ostree-boot && \ mkdir -p /usr/lib/modules && \ mkdir -p /usr/lib/kernel && \ mkdir -p /usr/lib/firmware && \ mkdir -p /etc/ostree && \ mkdir -p /var/lib/ostree && \ mkdir -p /var/home && \ ln -sf ../var/home /home # Set up basic system configuration RUN echo "root:particle" | chpasswd && \ echo "particle ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/particle # Create particle user RUN useradd -m -s /bin/bash particle && \ echo "particle:particle" | chpasswd && \ usermod -aG sudo particle # CRITICAL: Verify disk utilities are available and working RUN which sfdisk && sfdisk --version && \ which parted && parted --version && \ which mkfs.ext4 && mkfs.ext4 -V && \ which mkfs.fat && mkfs.fat --help && \ which grub-install && grub-install --version && \ which efibootmgr && efibootmgr --version # Set working directory WORKDIR /root # Label the image with OSTree-compliant labels LABEL org.opencontainers.image.title="Particle-OS Base" LABEL org.opencontainers.image.description="Base Debian image for Particle-OS with bootc deployment utilities" LABEL org.opencontainers.image.version="0.1.0" LABEL org.opencontainers.image.vendor="Particle-OS Project" LABEL org.opencontainers.image.source="https://github.com/your-org/particle-os" LABEL org.opencontainers.image.revision="0.1.0" LABEL org.opencontainers.image.created="2024-01-01T00:00:00Z" LABEL org.opencontainers.image.licenses="MIT" LABEL org.opencontainers.image.ref.name="particle-os-base" # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD systemctl is-system-running || exit 1 # Default command CMD ["/bin/bash"]