Major documentation and infrastructure updates

- Added comprehensive bootc.md with Particle OS-specific guidance
- Added filesystem.md explaining immutable architecture
- Added scope.md with critical implementation requirements
- Updated roadmap.md with current progress tracking
- Updated todo.md with current status and next steps
- Updated README.md with disk utility requirements
- Updated Containerfile with kernel and locale fixes
- Updated .gitignore for comprehensive coverage
- Fixed critical disk utility and PATH issues
- Resolved UTF-8 encoding problems
- Added proper OSTree labels and kernel setup

Phase 1 foundation is solid - disk utility requirements addressed.
Current focus: Resolving kernel detection issue to complete Phase 1.
This commit is contained in:
robojerk 2025-08-07 00:57:29 -07:00
parent 12fd3d6175
commit cecdca9586
9 changed files with 1581 additions and 63 deletions

View file

@ -1,5 +1,12 @@
FROM debian:trixie
# Set locale to fix UTF-8 encoding issues
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
# Copy the compiled bootc and ostree packages
COPY debs/ /tmp/debs/
# Install essential packages for a minimal bootable system
RUN apt-get update && apt-get install -y \
systemd \
@ -14,8 +21,78 @@ RUN apt-get update && apt-get install -y \
vim \
less \
htop \
locales \
linux-image-amd64 \
linux-headers-amd64 \
&& rm -rf /var/lib/apt/lists/*
# Generate locale
RUN locale-gen C.UTF-8
# Install disk utilities (parted instead of sfdisk, plus other essential tools)
RUN apt-get update && apt-get install -y \
util-linux \
parted \
fdisk \
e2fsprogs \
dosfstools \
grub-efi-amd64 \
efibootmgr \
&& rm -rf /var/lib/apt/lists/*
# Ensure PATH includes system utilities directories
ENV PATH="/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin"
# Verify disk utilities are available
RUN which parted && parted --version && \
which sfdisk && sfdisk --version && \
which mkfs.ext4 && mkfs.ext4 -V && \
which mkfs.fat && mkfs.fat --help | head -1
# Install dependencies for ostree and bootc
RUN apt-get update && apt-get install -y \
libarchive13t64 \
libavahi-client3 \
libavahi-common3 \
libavahi-glib1 \
libgpg-error0 \
libgpgme11t64 \
libfuse3-4 \
podman \
skopeo \
&& rm -rf /var/lib/apt/lists/*
# Install ostree packages first (dependencies)
RUN apt-get update && apt-get install -y /tmp/debs/libostree-1-1_*.deb && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y /tmp/debs/ostree_*.deb && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y /tmp/debs/ostree-boot_*.deb && rm -rf /var/lib/apt/lists/*
# Install bootc package
RUN apt-get update && apt-get install -y /tmp/debs/bootc_*.deb && rm -rf /var/lib/apt/lists/*
# Install apt-ostree package
RUN apt-get update && apt-get install -y /tmp/debs/apt-ostree_*.deb && rm -rf /var/lib/apt/lists/*
# Fix any dependency issues
RUN apt-get update && apt-get install -f -y && rm -rf /var/lib/apt/lists/*
# Set up OSTree system configuration
RUN mkdir -p /etc/ostree
RUN echo '{"mode": "bare-user-only"}' > /etc/ostree/remotes.d/self.conf
# Create the prepare-root.conf file that bootc needs (proper key-value format)
RUN mkdir -p /usr/lib/ostree
RUN echo '[prepare-root]' > /usr/lib/ostree/prepare-root.conf
RUN echo 'enabled=true' >> /usr/lib/ostree/prepare-root.conf
# Set up basic immutable filesystem structure
RUN mkdir -p /var/home
RUN ln -sf ../var/home /home
# Create bootc configuration for root filesystem
RUN mkdir -p /etc/bootc
RUN echo '{"root-filesystem": "ext4"}' > /etc/bootc/config.json
# Enable systemd services
RUN systemctl enable systemd-timesyncd
RUN systemctl enable NetworkManager
@ -28,6 +105,28 @@ RUN echo "user:password" | chpasswd
# Set up basic system configuration
RUN echo "debian-atomic" > /etc/hostname
# Final verification that disk utilities are available
RUN which parted && which sfdisk && which mkfs.ext4 && which mkfs.fat && which grub-install
# Verify bootc and ostree are installed
RUN which bootc && bootc --version
RUN which ostree && ostree --version
# Verify kernel is installed and create symlink for bootc
RUN ls -la /boot/ && ls -la /usr/lib/modules/
RUN ln -sf 6.12.38+deb13-amd64 /usr/lib/modules/default
# Create ostree-boot directory and copy kernel files
RUN mkdir -p /usr/lib/ostree-boot
RUN cp /boot/vmlinuz-6.12.38+deb13-amd64 /usr/lib/ostree-boot/vmlinuz
RUN cp /boot/initrd.img-6.12.38+deb13-amd64 /usr/lib/ostree-boot/initramfs.img
RUN cp -r /usr/lib/modules/6.12.38+deb13-amd64 /usr/lib/ostree-boot/modules
# Add OSTree labels for bootable image
LABEL ostree.bootable=true
LABEL ostree.version=2025.2
LABEL ostree.osname=debian-atomic
# Clean up
RUN apt-get clean