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:
parent
12fd3d6175
commit
cecdca9586
9 changed files with 1581 additions and 63 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue