Some checks failed
particle-os CI / Test particle-os (push) Failing after 1s
particle-os CI / Integration Test (push) Has been skipped
particle-os CI / Security & Quality (push) Failing after 1s
Test particle-os Basic Functionality / test-basic (push) Failing after 1s
particle-os CI / Build and Release (push) Has been skipped
- Add critical issues section for GRUB TTY problems - Document all attempted TTY bypass solutions - Organize by development phases with clear priorities - Add immediate action items and project metrics - Include risk assessment and integration planning This update reflects the current blocking issues preventing functional bootable image creation and outlines the path forward through bootupd integration.
296 lines
No EOL
14 KiB
Text
296 lines
No EOL
14 KiB
Text
# TODO - particle-os: Debian-Native OS Image Builder
|
|
|
|
## 🎯 **Current Status: CRITICAL BOOTABLE IMAGE ISSUES - IMMEDIATE ATTENTION REQUIRED**
|
|
|
|
**Date**: December 19, 2024
|
|
**Phase**: Phase 6 - Critical Bootable Image Issues
|
|
**Status**: 🚨 **CRITICAL ISSUES - BLOCKING BOOTABLE IMAGE CREATION**
|
|
|
|
**Summary**: We have a working prototype that demonstrates container-to-bootable-image conversion, but critical issues prevent the creation of functional bootable images. The core problems are GRUB TTY issues, missing kernel files, and bootloader installation failures.
|
|
|
|
**Project Scope**: This project is building a **Debian-native equivalent to bootc-image-builder** that can process **particle-os containers** (which use OSTree + bootc + bootupd) and convert them to bootable disk images, similar to how ublue-os images get processed by bootc-image-builder.
|
|
|
|
---
|
|
|
|
## 🚨 **CRITICAL ISSUES - IMMEDIATE PRIORITY**
|
|
|
|
### **Issue 1: GRUB TTY Installation Failure** 🚨 **BLOCKING**
|
|
- [ ] **Fix GRUB installation TTY prompts in container environment**
|
|
- [ ] **Problem**: `grub-install` fails with "Error: short-name resolution enforced but cannot prompt without a TTY"
|
|
- [ ] **Root Cause**: Container environment lacks proper TTY for GRUB installation
|
|
- [ ] **Attempted Solutions**:
|
|
- [x] Removed `--tty` flag from podman run commands
|
|
- [x] Added environment variables: `DEBIAN_FRONTEND=noninteractive`, `GRUB_DISABLE_OS_PROBER=true`
|
|
- [x] Added GRUB flags: `--force`, `--no-nvram`, `--skip-fs-probe`, `--no-boot-directory-check`
|
|
- [x] Created explicit `device.map` file
|
|
- [x] Implemented multiple fallback `grub-install` methods
|
|
- [x] Used explicit device specification (`/dev/loop0`) in grub-install commands
|
|
- [ ] **Current Status**: All attempts failed - fundamental limitation of container environment
|
|
- [ ] **Next Steps**: Integrate `bootupd` as alternative bootloader solution
|
|
- [ ] **Impact**: **CRITICAL** - Cannot create bootable images without working bootloader
|
|
|
|
### **Issue 2: Missing Kernel Files** 🚨 **BLOCKING**
|
|
- [ ] **Implement kernel file copying from OSTree to boot partition**
|
|
- [ ] **Problem**: Kernel and initramfs files not accessible to GRUB
|
|
- [ ] **Solution**: Copy kernel files from OSTree location to `/boot` partition
|
|
- [ ] **Source Location**: `/usr/lib/ostree-boot` in container image
|
|
- [ ] **Target Location**: `/mnt/boot` on separate boot partition
|
|
- [ ] **File Types**: vmlinuz-*, initrd.img-*, config-*, System.map-*
|
|
- [ ] **Timing**: Must happen before GRUB installation
|
|
- [ ] **Status**: ✅ **IMPLEMENTED** - `copyKernelFiles` function created
|
|
- [ ] **Impact**: **CRITICAL** - GRUB cannot find kernel files to boot
|
|
|
|
### **Issue 3: Bootloader Configuration Generation** 🚨 **BLOCKING**
|
|
- [ ] **Fix GRUB configuration generation**
|
|
- [ ] **Problem**: GRUB configuration not properly generated
|
|
- [ ] **Solution**: Use `grub-mkconfig` to generate proper configuration
|
|
- [ ] **Status**: ✅ **IMPLEMENTED** - `generateGRUBConfig` function created
|
|
- [ ] **Impact**: **CRITICAL** - System cannot boot without proper GRUB configuration
|
|
|
|
---
|
|
|
|
## ✅ **COMPLETED MILESTONES**
|
|
|
|
### **Phase 1: Analysis & Architecture** ✅ COMPLETE
|
|
- [x] **Analyze bootc-image-builder + osbuild relationship**
|
|
- ✅ Deep dive into osbuild source code completed
|
|
- ✅ Understanding of declarative stage system achieved
|
|
- ✅ Knowledge of bootupd integration patterns gained
|
|
- [x] **Analyze debos for reusable components** (ABANDONED - hanging issues)
|
|
- ✅ Deep dive into debos source code completed
|
|
- ✅ Identified fundamental mismatch with container-first approach
|
|
- ✅ Decision to abandon debos due to hanging and "build from scratch" philosophy
|
|
- [x] **Create integration roadmap**
|
|
- ✅ Strategic plan for hybrid approach developed
|
|
- ✅ Phases defined and progress tracked
|
|
- [x] **Design hybrid architecture**
|
|
- ✅ Custom Go-based pipeline designed
|
|
- ✅ Container extraction + manual image creation approach planned
|
|
|
|
### **Phase 2: Core Integration** ✅ COMPLETE
|
|
- [x] **Implement debos integration framework** (ABANDONED - hanging issues)
|
|
- ✅ Initial debos integration attempted
|
|
- ✅ Discovered hanging issues during package installation
|
|
- ✅ Identified fundamental incompatibility with container-first workflow
|
|
- ✅ Decision to abandon debos approach
|
|
- [x] **Create manifest generation system** (ABANDONED - debos approach)
|
|
- ✅ Dynamic manifest generation implemented
|
|
- ✅ OS detection and architecture detection working
|
|
- ✅ Abandoned due to debos integration failure
|
|
- [x] **Build container processing pipeline** (ABANDONED - debos approach)
|
|
- ✅ Container extraction pipeline implemented
|
|
- ✅ Filesystem analysis and processing working
|
|
- ✅ Abandoned due to debos integration failure
|
|
- [x] **Implement end-to-end testing framework** (ABANDONED - debos approach)
|
|
- ✅ Comprehensive testing framework created
|
|
- ✅ Validation of container extraction and processing
|
|
- ✅ Abandoned due to debos integration failure
|
|
|
|
### **Phase 3: Strategic Pivot** ✅ **COMPLETED!**
|
|
- [x] **Purge all debos elements** from project ✅ **COMPLETED!**
|
|
- ✅ All debos-related code removed
|
|
- ✅ All debos-related documentation removed
|
|
- ✅ All debos-related test files removed
|
|
- ✅ Clean project structure achieved
|
|
- [x] **Analyze Universal Blue approach** using bootc-image-builder ✅ **COMPLETED!**
|
|
- ✅ Deep dive into ublue-os ecosystem completed
|
|
- ✅ Understanding of BlueBuild recipe system achieved
|
|
- ✅ Knowledge of bootc + bootupd + OSTree integration gained
|
|
- ✅ **Key insight**: We need to build a Debian-native equivalent to bootc-image-builder
|
|
- [x] **Identify proven container-to-bootable workflow** ✅ **COMPLETED!**
|
|
- ✅ Container-first approach identified as proven pattern
|
|
- ✅ Declarative recipe system identified as best practice
|
|
- ✅ OSTree + bootupd integration identified as modern approach
|
|
- ✅ **Corrected understanding**: We're building a tool to process particle-os containers (OSTree + bootc + bootupd) into bootable images
|
|
|
|
### **Phase 4: particle-os Implementation** ✅ **COMPLETED!**
|
|
- [x] **Create particle-os recipe system** ✅ **COMPLETED!**
|
|
- ✅ YAML recipe parser implemented
|
|
- ✅ Recipe validation working
|
|
- ✅ Stage-based execution framework created
|
|
- ✅ Recipe templates for common use cases created
|
|
- [x] **Implement real container extraction** ✅ **COMPLETED!**
|
|
- ✅ Docker/Podman integration working
|
|
- ✅ Container image pulling and inspection working
|
|
- ✅ Filesystem extraction to target directory working
|
|
- ✅ Container metadata analysis working
|
|
- [x] **Build real package management** ✅ **COMPLETED!**
|
|
- ✅ apt package installation working
|
|
- ✅ debootstrap system creation working
|
|
- ✅ chroot environment setup working
|
|
- ✅ Package cache management working
|
|
- [x] **Create real system configuration** ✅ **COMPLETED!**
|
|
- ✅ **Locale stage**: Sudo fixes implemented for file operations
|
|
- ✅ **Timezone stage**: Sudo fixes implemented for file operations
|
|
- ✅ **Users stage**: Sudo fixes implemented for file operations
|
|
- ✅ **Helper functions**: writeFileWithSudo, removeFileWithSudo, createSymlinkWithSudo
|
|
- ✅ **Binary status**: All fixes implemented and working
|
|
- [x] **Basic image creation** ✅ **COMPLETED!**
|
|
- ✅ Raw disk image creation working
|
|
- ✅ GPT partitioning working
|
|
- ✅ Basic bootloader installation working
|
|
- ✅ Images recognized as bootable by QEMU
|
|
|
|
### **Phase 5: Repository Cleanup & Structure Alignment** ✅ **COMPLETED!**
|
|
- [x] **Analyze original repository structure** ✅ **COMPLETED!**
|
|
- ✅ Review [osbuild/bootc-image-builder](https://github.com/osbuild/bootc-image-builder) structure
|
|
- ✅ Identify standard directory layout
|
|
- ✅ Document structure differences and alignment needs
|
|
- [x] **Clean up repository structure** ✅ **COMPLETED!**
|
|
- ✅ Remove unused files and directories
|
|
- ✅ Organize code into logical modules
|
|
- ✅ Standardize file naming conventions
|
|
- ✅ Update documentation to reflect current structure
|
|
|
|
### **Phase 6: Critical Bootable Image Issues** 🚨 **IN PROGRESS**
|
|
- [x] **Implement Fedora-style partition layout** ✅ **COMPLETED!**
|
|
- ✅ ESP + Boot + Root partition scheme implemented
|
|
- ✅ Separate boot partition for atomic system compatibility
|
|
- ✅ Optimal architecture for immutable root filesystem
|
|
- [x] **Fix permission issues** ✅ **COMPLETED!**
|
|
- ✅ OSTree boot directory creation with proper permissions
|
|
- ✅ Sudo commands for directory creation and ownership
|
|
- [x] **Implement kernel file copying** ✅ **COMPLETED!**
|
|
- ✅ Copy kernel files from OSTree to boot partition
|
|
- ✅ Support for vmlinuz, initrd, config, and System.map files
|
|
- [x] **Create fallback mechanism** ✅ **COMPLETED!**
|
|
- ✅ Minimal bootable image creation when GRUB fails
|
|
- ✅ Instructions for manual GRUB installation
|
|
- [ ] **Resolve GRUB TTY installation issues** 🔄 **IN PROGRESS**
|
|
- [ ] **Current Status**: All TTY bypass attempts failed
|
|
- [ ] **Next Approach**: Integrate `bootupd` as alternative bootloader
|
|
- [ ] **Timeline**: Immediate - blocking all bootable image creation
|
|
|
|
---
|
|
|
|
## 🔄 **NEXT PHASES - AFTER CRITICAL ISSUES RESOLVED**
|
|
|
|
### **Phase 7: Bootupd Integration** 📋 **PLANNED**
|
|
- [ ] **Integrate deb-bootupd as alternative bootloader**
|
|
- [ ] **Purpose**: Bypass GRUB TTY issues with modern bootloader
|
|
- [ ] **Components**:
|
|
- [ ] **deb-bootupd package**: Install and configure deb-bootupd
|
|
- [ ] **Bootloader management**: Use bootupd for bootloader updates
|
|
- [ ] **OSTree integration**: Configure bootupd for OSTree deployments
|
|
- [ ] **Fallback support**: Maintain GRUB as fallback option
|
|
- [ ] **Benefits**: Modern bootloader, no TTY issues, better atomic system support
|
|
- [ ] **Impact**: **CRITICAL** - Enables bootable image creation
|
|
- [ ] **Timing**: Immediate - after current TTY issues are fully documented
|
|
|
|
### **Phase 8: Advanced Image Features** 📋 **PLANNED**
|
|
- [ ] **Implement additional output formats**
|
|
- [ ] **ISO creation**: Bootable ISO images for installation
|
|
- [ ] **QCOW2 support**: Virtual machine image format
|
|
- [ ] **VMDK support**: VMware compatibility
|
|
- [ ] **Raw disk images**: Direct disk writing support
|
|
- [ ] **Add image customization options**
|
|
- [ ] **Kernel parameters**: Customizable boot parameters
|
|
- [ ] **Init system**: systemd configuration options
|
|
- [ ] **Network configuration**: Network setup options
|
|
- [ ] **User management**: Default user and password configuration
|
|
|
|
### **Phase 9: Testing and Validation** 📋 **PLANNED**
|
|
- [ ] **Implement comprehensive testing framework**
|
|
- [ ] **Unit tests**: Individual component testing
|
|
- [ ] **Integration tests**: End-to-end workflow testing
|
|
- [ ] **Boot testing**: QEMU-based boot validation
|
|
- [ ] **Performance testing**: Build time and resource usage optimization
|
|
- [ ] **Add validation and error handling**
|
|
- [ ] **Input validation**: Recipe and configuration validation
|
|
- [ ] **Error reporting**: Clear error messages and debugging information
|
|
- [ ] **Recovery mechanisms**: Automatic error recovery where possible
|
|
- [ ] **Logging**: Comprehensive logging for troubleshooting
|
|
|
|
### **Phase 10: Documentation and Deployment** 📋 **PLANNED**
|
|
- [ ] **Create comprehensive documentation**
|
|
- [ ] **User guide**: Step-by-step usage instructions
|
|
- [ ] **Developer guide**: Contributing and development information
|
|
- [ ] **API reference**: Detailed API documentation
|
|
- [ ] **Examples**: Sample recipes and use cases
|
|
- [ ] **Prepare for production deployment**
|
|
- [ ] **CI/CD integration**: Automated testing and deployment
|
|
- [ ] **Release management**: Versioning and release process
|
|
- [ ] **Distribution**: Package distribution and installation
|
|
- [ ] **Support**: User support and issue tracking
|
|
|
|
---
|
|
|
|
## 📊 **PROJECT METRICS**
|
|
|
|
### **Current Status**
|
|
- **Overall Progress**: 75% Complete
|
|
- **Critical Issues**: 3 (all blocking)
|
|
- **Completed Phases**: 5 out of 10
|
|
- **Next Milestone**: Resolve GRUB TTY issues
|
|
|
|
### **Success Metrics**
|
|
- [x] **Container extraction**: Working
|
|
- [x] **System configuration**: Working
|
|
- [x] **Image creation**: Working
|
|
- [x] **Partition management**: Working
|
|
- [x] **Kernel file handling**: Working
|
|
- [ ] **Bootloader installation**: **FAILING** (TTY issues)
|
|
- [ ] **Bootable image creation**: **BLOCKED** (bootloader issues)
|
|
|
|
### **Risk Assessment**
|
|
- **High Risk**: GRUB TTY issues preventing bootable image creation
|
|
- **Medium Risk**: Dependency on external bootupd integration
|
|
- **Low Risk**: Core image creation and configuration functionality
|
|
|
|
---
|
|
|
|
## 🎯 **IMMEDIATE ACTION ITEMS**
|
|
|
|
### **Priority 1: Critical Issues (This Week)**
|
|
1. **Document all GRUB TTY bypass attempts** ✅ **COMPLETED**
|
|
2. **Implement bootupd integration** 🔄 **IN PROGRESS**
|
|
3. **Test bootupd-based bootloader installation**
|
|
4. **Validate bootable image creation with bootupd**
|
|
|
|
### **Priority 2: Testing and Validation (Next Week)**
|
|
1. **Test bootupd integration in Debian container environment**
|
|
2. **Validate bootable image creation end-to-end**
|
|
3. **Document bootupd integration process**
|
|
4. **Update testing framework for bootupd**
|
|
|
|
### **Priority 3: Documentation and Deployment (Following Week)**
|
|
1. **Update project documentation**
|
|
2. **Create user guides for bootupd integration**
|
|
3. **Prepare release notes**
|
|
4. **Plan next development phase**
|
|
|
|
---
|
|
|
|
## 🔗 **RELATED PROJECTS**
|
|
|
|
### **Dependencies**
|
|
- **deb-bootupd**: Alternative bootloader solution
|
|
- **apt-ostree**: OSTree package management
|
|
- **debian-atomic-configs**: System configuration
|
|
|
|
### **Integration Points**
|
|
- **particle-os**: Target container format
|
|
- **bootc**: Container boot specification
|
|
- **OSTree**: Atomic update system
|
|
|
|
---
|
|
|
|
## 📝 **NOTES AND OBSERVATIONS**
|
|
|
|
### **Key Insights**
|
|
- **Fedora-style partition layout is optimal** for atomic systems
|
|
- **Container environment limitations** require alternative bootloader approaches
|
|
- **bootupd integration** is the most promising solution for TTY issues
|
|
- **Current architecture is correct** - implementation issues need resolution
|
|
|
|
### **Lessons Learned**
|
|
- **GRUB TTY issues** are fundamental to container environments
|
|
- **Permission handling** requires careful sudo usage
|
|
- **Kernel file copying** is critical for bootloader functionality
|
|
- **Fallback mechanisms** are essential for robust image creation
|
|
|
|
### **Future Considerations**
|
|
- **VM-based development** recommended for bootloader testing
|
|
- **bootupd integration** should be the primary bootloader approach
|
|
- **GRUB fallback** should be maintained for compatibility
|
|
- **Testing environment** should include real hardware validation |