- ✅ Real package installation (replaced mock installation) - ✅ Real OSTree commit creation from installed packages - ✅ OCI image creation from both commits and rootfs - ✅ Full bootc compatibility with proper labels - ✅ Comprehensive test suite (test-bootc-apt-ostree.sh) - ✅ Container tool validation (skopeo, podman) - ✅ Updated compatibility reports for Ubuntu Questing - ✅ Fixed OCI schema version and field naming issues - ✅ Temporary directory lifecycle fixes - ✅ Serde rename attributes for OCI JSON compliance Ready for Aurora-style workflow deployment!
5.7 KiB
Bootc Native Build on Ubuntu: Updated Compatibility Report
🎯 Executive Summary
Major Update: libostree 2025.2-1 is now available in Ubuntu's questing-release, dramatically improving the feasibility of native bootc builds on Ubuntu systems. This resolves the core version compatibility issues that previously blocked native bootc deployment.
📊 Current Status Matrix
| Ubuntu Release | libostree Version | bootc Native Build | Recommended Approach |
|---|---|---|---|
| Ubuntu Questing | 2025.2-1 | ✅ FULLY SUPPORTED | Native build with official packages |
| Ubuntu Noble (24.04 LTS) | 2024.5-1build2 | ⚠️ Requires workarounds | Containerized build or source compilation |
| Ubuntu Jammy (22.04 LTS) | 2022.7-1 | ❌ Not supported | Containerized build only |
| Debian Sid | 2025.2-1 | ✅ FULLY SUPPORTED | Native build with official packages |
🚀 Scenario 1: Ubuntu Questing (Recommended)
Status: ✅ FULLY SUPPORTED
With libostree 2025.2-1 available in Ubuntu Questing, native bootc builds are now straightforward:
# Install the required packages
sudo apt update
sudo apt install libostree-dev libostree-1-1 ostree
# Clone and build bootc
git clone https://github.com/containers/bootc.git
cd bootc
cargo build --release
Advantages:
- ✅ No API compatibility issues
- ✅ All bootc features available
- ✅ Official package support
- ✅ No system modifications required
- ✅ Full signature verification support
AppArmor Considerations:
- The
SePolicy::set_null_log()call may need patching for AppArmor systems - Monitor
dmesgandjournalctlfor AppArmor denials - May require custom AppArmor profiles for bootc services
⚠️ Scenario 2: Ubuntu Noble (24.04 LTS)
Status: ⚠️ REQUIRES WORKAROUNDS
Ubuntu Noble has libostree 2024.5-1build2, which is incompatible with bootc's requirements.
Option A: Containerized Build (Recommended)
# Dockerfile.bootc_builder
FROM fedora:latest
RUN dnf install -y \
rust cargo \
pkg-config \
make gcc \
git \
glib2-devel \
libcurl-devel \
openssl-devel \
systemd-devel \
libmount-devel \
libselinux-devel
WORKDIR /usr/src/bootc
RUN git clone https://github.com/containers/bootc.git .
RUN cargo build --release
ENV PATH="/usr/src/bootc/target/release:${PATH}"
CMD ["bootc", "--help"]
Usage:
# Build the container
podman build -f Dockerfile.bootc_builder -t bootc-builder .
# Run bootc commands
sudo podman run --privileged --rm \
-v /dev:/dev -v /sys:/sys -v /run:/run -v /:/host:rw \
bootc-builder bootc install ...
Option B: Source Compilation (Advanced)
# Install build dependencies
sudo apt install build-essential autoconf libtool pkg-config \
libglib2.0-dev libfuse-dev libgpgme-dev libsystemd-dev libmount-dev \
libcurl4-gnutls-dev libssl-dev libselinux1-dev
# Build libostree from source
wget https://github.com/ostreedev/ostree/releases/download/v2025.2/ostree-2025.2.tar.xz
tar xf ostree-2025.2.tar.xz
cd ostree-2025.2
./configure --prefix=/usr
make
sudo make install
# Build bootc
git clone https://github.com/containers/bootc.git
cd bootc
cargo build --release
⚠️ Warning: This replaces system libostree and may break other applications.
🔧 Known Compatibility Issues & Solutions
1. OSTree Version Requirements
| Issue | Ubuntu Questing | Ubuntu Noble | Solution |
|---|---|---|---|
| libostree version | ✅ 2025.2-1 | ❌ 2024.5-1build2 | Use Questing or containerized build |
| Rust crate features | ✅ v2025_2 available | ❌ v2025_2 missing | Upgrade libostree or use container |
2. API Compatibility Issues
| API | Status | Solution |
|---|---|---|
signature_verify_commit_data |
✅ Available in 2025.2 | Use Questing or container |
RepoVerifyFlags |
✅ Available in 2025.2 | Use Questing or container |
SePolicy::set_null_log() |
⚠️ May need AppArmor patch | Comment out for AppArmor systems |
3. Security Framework Differences
| Framework | Ubuntu Default | bootc Design | Impact |
|---|---|---|---|
| SELinux | ❌ Not used | ✅ Primary target | Limited security features |
| AppArmor | ✅ Default | ⚠️ Secondary support | May need custom profiles |
📋 Implementation Recommendations
For Development/Testing:
- Use Ubuntu Questing for native bootc development
- Use containerized builds for Ubuntu Noble production systems
- Test thoroughly with apt-ostree OCI images
For Production Deployment:
- Ubuntu Questing: Native bootc installation
- Ubuntu Noble: Containerized bootc with proper volume mounts
- Older LTS: Containerized approach only
For apt-ostree Integration:
- Test bootc compatibility with apt-ostree OCI images
- Validate signature verification works correctly
- Create AppArmor profiles if needed for production use
🎉 Conclusion
The availability of libostree 2025.2-1 in Ubuntu Questing is a game-changer for native bootc support on Ubuntu systems. This enables:
- ✅ Full native bootc functionality on Ubuntu Questing
- ✅ Complete apt-ostree integration with Aurora-style workflows
- ✅ No API compatibility issues or workarounds needed
- ✅ Production-ready deployment capabilities
For Ubuntu Noble and older LTS releases, the containerized approach provides a practical path forward while maintaining system stability.
Recommendation: Upgrade to Ubuntu Questing for native bootc support, or use containerized builds for LTS releases.