- ✅ 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!
164 lines
No EOL
5.7 KiB
Markdown
164 lines
No EOL
5.7 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
# 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 `dmesg` and `journalctl` for 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
|
|
# 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:**
|
|
```bash
|
|
# 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)**
|
|
|
|
```bash
|
|
# 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:**
|
|
1. **Use Ubuntu Questing** for native bootc development
|
|
2. **Use containerized builds** for Ubuntu Noble production systems
|
|
3. **Test thoroughly** with apt-ostree OCI images
|
|
|
|
### **For Production Deployment:**
|
|
1. **Ubuntu Questing**: Native bootc installation
|
|
2. **Ubuntu Noble**: Containerized bootc with proper volume mounts
|
|
3. **Older LTS**: Containerized approach only
|
|
|
|
### **For apt-ostree Integration:**
|
|
1. **Test bootc compatibility** with apt-ostree OCI images
|
|
2. **Validate signature verification** works correctly
|
|
3. **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. |