simple-cli/scripts/create-minimal-ostree.sh
joe 9e9d4ea8d2
Some checks failed
Build Simple CLI / build (push) Failing after 1s
Integrate Particle-OS tools into simple-cli
- Add apt-ostree, deb-bootupd, and bootc packages to tools/
- Update Containerfile to install Particle-OS tools with dependencies
- Add tool verification script and updated welcome message
- Update justfile with new build and test recipes
- Add comprehensive tool testing and bootable image generation
- Successfully integrate 2/3 tools (apt-ostree and bootupd working)
- Note: bootc package contains only documentation, not binary

Ready for bootable image generation and QEMU testing!
2025-08-15 07:56:10 -07:00

124 lines
3.3 KiB
Bash
Executable file

#!/bin/bash
# Create Minimal OSTree Deployment Script
# Creates essential OSTree structure without copying large system files
set -euo pipefail
echo "🌱 Creating Minimal OSTree Deployment for Simple-CLI"
echo "====================================================="
# Check if ostree is available
if ! command -v ostree >/dev/null 2>&1; then
echo "❌ Error: ostree command not found"
echo " Install with: sudo apt install ostree"
exit 1
fi
echo "✅ OSTree tools available, proceeding..."
# Use a different working directory to avoid /tmp space issues
WORK_DIR="$HOME/ostree-deployment"
echo "🔧 Creating working directory: $WORK_DIR"
rm -rf "$WORK_DIR"
mkdir -p "$WORK_DIR"
# Create OSTree repository
REPO_DIR="$WORK_DIR/repo"
echo "📦 Initializing OSTree repository: $REPO_DIR"
ostree init --repo="$REPO_DIR" --mode=bare
# Create minimal deployment structure
DEPLOY_DIR="$WORK_DIR/deploy"
echo "🏗️ Creating minimal deployment structure: $DEPLOY_DIR"
mkdir -p "$DEPLOY_DIR"
# Create the atomic filesystem layout
echo "🔗 Creating atomic filesystem layout..."
cd "$DEPLOY_DIR"
# Create essential directories (minimal set)
mkdir -p usr/bin usr/sbin usr/lib usr/lib64
mkdir -p boot var/home var/log var/cache var/tmp
mkdir -p etc run
# Create symlinks for atomic layout
ln -sf usr/bin bin
ln -sf usr/sbin sbin
ln -sf usr/lib lib
ln -sf usr/lib64 lib64
ln -sf var/home home
echo "✅ Atomic filesystem layout created"
# Create minimal system files instead of copying everything
echo "📋 Creating minimal system files..."
# Create a simple init script
cat > usr/bin/init << 'EOF'
#!/bin/bash
echo "Simple-CLI OSTree System Starting..."
echo "Boot performance optimizations active"
echo "System ready for development"
exec /bin/bash
EOF
chmod +x usr/bin/init
# Create minimal /etc structure
mkdir -p etc/systemd/system
cat > etc/systemd/system.conf << 'EOF'
[Manager]
DefaultTimeoutStartSec=15s
DefaultTimeoutStopSec=15s
DefaultRestartSec=100ms
EOF
# Create minimal /boot structure
mkdir -p boot/grub
cat > boot/grub/grub.cfg << 'EOF'
# Minimal GRUB configuration for Simple-CLI OSTree
set timeout=1
set default=0
menuentry "Simple CLI OSTree" {
set root=(hd0,msdos1)
linux /boot/vmlinuz-6.12.41+deb13-amd64 root=/dev/sda1 rw console=ttyS0 quiet splash fastboot
initrd /boot/initrd.img-6.12.41+deb13-amd64
}
EOF
# Create deployment marker
touch run/ostree-booted
echo "✅ Minimal system files created"
# Create OSTree commit
echo "💾 Creating OSTree commit..."
ostree commit \
--repo="$REPO_DIR" \
--branch=simple-cli/main \
--subject="Simple-CLI Minimal OSTree deployment" \
--body="Minimal OSTree deployment with atomic filesystem layout" \
"$DEPLOY_DIR"
echo "✅ OSTree commit created"
# Show commit info
echo ""
echo "📊 OSTree commit information:"
ostree --repo="$REPO_DIR" log simple-cli/main | head -10
echo ""
echo "🎯 Minimal OSTree deployment created successfully!"
echo "📁 Repository: $REPO_DIR"
echo "📁 Deployment: $DEPLOY_DIR"
echo ""
echo "📋 Files created:"
find "$DEPLOY_DIR" -type f | head -20
echo ""
echo "🚀 Next steps:"
echo " 1. This creates the basic OSTree structure"
echo " 2. For full system, need to integrate with simple-cli container"
echo " 3. Use bootc-image-builder to create bootable image"
echo " 4. Test boot performance in QEMU"