deb-bootc-image-builder/changelog.txt
robojerk cd1c3b3bb0
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
Update TODO with critical bootable image issues and development roadmap
- 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.
2025-08-27 20:47:50 -07:00

132 lines
5.8 KiB
Text

# Overseer Project - Debian Boot Architecture Fix Changelog
## 2024-12-19 - Debian Boot Architecture Implementation
### Phase 1: GRUB TTY Fix & Debian Layout Correction
#### Initial Analysis
- **Problem Identified**: GRUB installation failing with "Error: short-name resolution enforced but cannot prompt without a TTY"
- **Root Cause**: Container environment cannot provide TTY for GRUB device resolution prompts
- **Architecture Validation**: Fedora-style partition layout (ESP + Boot + Root) is correct for atomic systems
- **Partition Scheme**: 3-partition layout confirmed optimal - ESP (FAT32), Boot (ext4), Root (ext4)
#### Implementation Attempts
**Attempt 1: Basic TTY Flag Removal**
- **Action**: Removed `--tty` flag from podman run commands
- **Result**: TTY error persisted - flag removal insufficient
- **Error**: "Error: short-name resolution enforced but cannot prompt without a TTY"
**Attempt 2: Environment Variable Override**
- **Action**: Added `DEBIAN_FRONTEND=noninteractive`, `GRUB_DISABLE_OS_PROBER=true`
- **Result**: TTY error persisted - environment variables insufficient
- **Error**: Same TTY resolution error
**Attempt 3: Comprehensive Non-Interactive Flags**
- **Action**: Added `--force`, `--no-nvram`, `--skip-fs-probe`, `--no-boot-directory-check`
- **Result**: TTY error persisted - flag combinations insufficient
- **Error**: Same TTY resolution error
**Attempt 4: Device Map Creation**
- **Action**: Created explicit device map `(hd0) /dev/loop0` before GRUB installation
- **Result**: TTY error persisted - device mapping insufficient
- **Error**: Same TTY resolution error
**Attempt 5: Alternative GRUB Installation Methods**
- **Action**: Implemented three fallback methods with minimal flags
- **Result**: All methods failed with same TTY error
- **Error**: Same TTY resolution error
**Attempt 6: Explicit Device Specification (Your Suggested Fix)**
- **Action**: Used `grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot /dev/loop0`
- **Result**: Still failed with TTY error - explicit device specification insufficient
- **Error**: "Error: short-name resolution enforced but cannot prompt without a TTY"
- **Analysis**: Issue is deeper than device specification - GRUB requires interactive TTY for device resolution regardless of flags
#### What Worked
**Kernel File Copying Pipeline**
- **Function**: `copyKernelFiles()` successfully copies kernel files from OSTree location to `/boot` partition
- **Source**: `/usr/lib/ostree-boot/` in container image
- **Target**: `/mnt/boot/` on separate boot partition
- **Files Copied**: `vmlinuz-*`, `initrd.img-*`, `config-*`, `System.map-*`
- **Result**: Kernel files accessible to bootloader in correct location
**Partition Management**
- **GPT Partition Table**: Successfully created with parted
- **Filesystem Formatting**: FAT32 (ESP), ext4 (Boot), ext4 (Root)
- **Mount Point Management**: Correct mounting order and cleanup
- **Permission Handling**: Fixed OSTree boot directory creation with sudo
**OSTree System Detection**
- **Detection Logic**: Successfully identifies OSTree components
- **Components Found**: `usr/lib/ostree-boot`, `usr/lib/systemd`, `usr/bin/bootc`, `usr/bin/bootupd`
- **Fallback Logic**: Gracefully handles non-OSTree systems
#### What Failed
**GRUB Installation**
- **UEFI Target**: Failed with exit status 125 (TTY resolution error)
- **BIOS Target**: Failed with exit status 125 (TTY resolution error)
- **All Methods**: Failed regardless of flag combinations or environment variables
- **Root Cause**: Fundamental container environment limitation - GRUB requires interactive TTY for device resolution
**GRUB Configuration Generation**
- **grub-mkconfig**: Failed with same TTY error
- **update-grub**: Failed with same TTY error
- **Result**: No GRUB configuration files generated
#### Final Implementation
**Working Script**: `create-corrected-bootable-image.go`
- **Language**: Go (compiles successfully)
- **Partition Layout**: Fedora-style optimal for atomic systems
- **Kernel File Handling**: Complete pipeline from OSTree to boot partition
- **Error Handling**: Comprehensive logging and graceful degradation
- **Fallback Strategy**: Creates minimal bootable image when GRUB fails
**Fallback Behavior**
- **GRUB Failure**: Detected and logged
- **Minimal Image**: Created with kernel files and boot instructions
- **Boot Configuration**: `boot.txt` with manual boot instructions
- **Result**: Functional image with kernel files, no automatic bootloader
#### Technical Details
**Container Environment Issues**
- **Podman Version**: Using container image `238208cf481a`
- **Privilege Level**: `--privileged` with device mounting
- **TTY Allocation**: Cannot provide interactive TTY for GRUB prompts
- **Device Resolution**: GRUB cannot resolve device names without user input
**Partition Specifications**
- **BIOS Boot**: 1MB (unmounted)
- **EFI System**: 501MB FAT32 mounted at `/boot/efi`
- **Boot Partition**: 1GB ext4 mounted at `/boot`
- **Root Partition**: Remaining space ext4 mounted at `/`
**File System Operations**
- **Copy Method**: `cp -a` for rootfs content
- **Permission Fix**: `chown -R root:root` after copy
- **Directory Creation**: `mkdir -p` with sudo for proper ownership
- **Cleanup**: Reverse mount order unmounting with defer
#### Current Status
**Functional Components**
- Image creation pipeline: Working
- Partition management: Working
- OSTree detection: Working
- Kernel file copying: Working
- Error handling: Working
- Fallback strategy: Working
**Non-Functional Components**
- GRUB installation: Failed (TTY limitation)
- GRUB configuration: Failed (TTY limitation)
- Automatic boot: Not available
**Production Readiness**
- **Development**: Ready for testing and iteration
- **Production**: Requires external bootloader or GRUB alternative
- **Limitation**: Images contain kernel files but no automatic boot mechanism