aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* refactor: remove archsetup references, make installer standaloneCraig Jennings2026-01-252-20/+7
| | | | | | | - Remove copy_archsetup function and calls from ZFS/Btrfs paths - Update SSH hardening messages to generic advice - Change sanoid references to tips without archsetup dependency - Improve filesystem dialog descriptions
* Remove session-context.org (session complete)Craig Jennings2026-01-251-105/+0
|
* Phase 4.3 complete: btrfs validation testingCraig Jennings2026-01-252-0/+58
| | | | | | | - Non-LUKS tests all pass (single, mirror, stripe) - LUKS reboot automation attempted but blocked (encrypt hook limitation) - Added manual LUKS verification task to todo.org - Session notes updated
* Add LUKS testing infrastructure and documentationCraig Jennings2026-01-256-105/+307
| | | | | | | | | | | | - Add setup_luks_testing_keyfile() for automated LUKS testing - Modify configure_crypttab() and configure_luks_initramfs() for keyfile support - Fix configure_btrfs_initramfs() to preserve encrypt hook when LUKS enabled - Add TESTING=yes to LUKS test configs - Create docs/TESTING-STRATEGY.org documenting testing approach LUKS automated reboot testing remains a work-in-progress due to complexity of sending passphrase to initramfs encrypt hook. Non-LUKS tests all pass: btrfs-single, btrfs-mirror, btrfs-stripe.
* Add ISO naming task, update session contextCraig Jennings2026-01-252-20/+109
| | | | | | | | - Add TODO for ISO naming convention change (date after project name) - Update session context with test results: - btrfs-single, btrfs-mirror, btrfs-stripe: PASS - btrfs-luks, btrfs-mirror-luks: reboot test blocked by passphrase prompt - Sync fix validated for non-encrypted btrfs
* Update test config and documentationCraig Jennings2026-01-253-107/+96
| | | | | | - Add NO_ENCRYPT=yes to btrfs-single.conf for unattended testing - Add offline Arch Wiki documentation section to RESCUE-GUIDE.txt - Update todo.org with completed tasks and new items
* Add reboot survival and rollback verification testsCraig Jennings2026-01-251-6/+223
| | | | | | | | | - Add start_vm_from_disk() to boot installed system without ISO - Add stop_vm keep_vars parameter to preserve EFI boot entries - Add verify_reboot_survival() to check system boots from disk - Add verify_rollback() to test snapshot/rollback functionality - Support different SSH passwords for live ISO vs installed system - Integrate reboot/rollback checks into test flow
* Fix GRUB boot for btrfs with subvolumesCraig Jennings2026-01-251-11/+21
| | | | | | | | | | - Store GRUB modules on EFI partition (FAT32) to avoid btrfs subvolume path prefix issues (/@/boot/grub not found) - Create symlink /boot/grub -> /efi/grub for grub-btrfs compatibility - Add sync after grub-mkconfig to ensure FAT32 write completion - Add sync before unmounting to prevent data loss on VM shutdown - Update snapper-firstboot to use /efi/grub/grub.cfg path - Update multi-disk GRUB functions for consistency
* Fix LUKS encryption for btrfs (single and multi-disk)Craig Jennings2026-01-243-24/+61
| | | | | | | - Use -d - flag for cryptsetup stdin key input (matches easy-arch) - Change ((i++)) to ((++i)) to avoid set -e exit on 0 increment - Add btrfs-mirror-luks test config - Update status protocol with sound notifications
* Phase 3: Add multi-disk btrfs support (RAID0/RAID1)Craig Jennings2026-01-245-37/+357
| | | | | | | | - RAID1 (mirror) and RAID0 (stripe) for 2+ disks - Multi-disk LUKS with single passphrase prompt - EFI redundancy: GRUB installed on all disks - Pacman hook syncs GRUB updates across EFI partitions - btrfs initramfs hook for multi-device assembly at boot
* Sync templates, update session contextCraig Jennings2026-01-242-44/+33
|
* Fix LUKS btrfs installation and reduce ISO sizeCraig Jennings2026-01-243-60/+61
| | | | | | | | | | | | | - Fix GRUB cryptodisk: configure_grub() heredoc was overwriting LUKS settings added by configure_luks_grub(). Moved LUKS GRUB config (GRUB_ENABLE_CRYPTODISK=y, cryptdevice cmdline) into configure_grub() after the heredoc writes the base config. - Fix ISO bloat: archsetup copy was including vm-images (17GB). Changed from cp -r to rsync with exclusions for vm-images, test-results, .qcow2, and .iso files. ISO now 2.0GB. - btrfs-luks VM test now passes.
* Phase 2.8: Add LUKS encryption for btrfsCraig Jennings2026-01-245-15/+213
| | | | | | | | | | | | | - Add LUKS functions to btrfs.sh (create/open/close container) - Add crypttab configuration for boot - Add encrypt hook to mkinitcpio HOOKS - Add cryptdevice parameter to GRUB cmdline - Add get_btrfs_encryption_choice and get_luks_passphrase prompts - Add LUKS_PASSPHRASE to config variables - Update show_summary and print_btrfs_summary for encryption status - Add btrfs-luks.conf test config VM test pending.
* Update session context: Phase 2.7 completeCraig Jennings2026-01-241-19/+27
|
* Fix btrfs GRUB boot and snapper firstbootCraig Jennings2026-01-241-84/+93
| | | | | | | | | | - Add GRUB serial console configuration for headless/VM testing - Add GRUB_BTRFS_OVERRIDE_BOOT_PARTITION_DETECTION for btrfs - Fix snapper-firstboot script (use echo instead of HEREDOC) - Add dbus.service dependency to firstboot service - Remove duplicate rootflags from GRUB_CMDLINE_LINUX VM test verified: GRUB boots, all subvolumes mount, snapper works.
* Fix btrfs bugs from VM testingCraig Jennings2026-01-234-68/+107
| | | | | | | | | | | - Fix GRUB config path (remove GRUB_BTRFS_GRUB_DIRNAME, use default) - Create snapper config manually (D-Bus not available in chroot) - Create genesis snapshot with btrfs command (not snapper) - Add btrfs-single.conf test config - Update test-install.sh to copy lib/ directory - Update test-install.sh to handle btrfs verification VM test now passes for btrfs single-disk installation.
* Phase 2.1: Implement btrfs supportCraig Jennings2026-01-236-81/+656
| | | | | | | | | | | - Create lib/btrfs.sh with full btrfs installation functions - Subvolume layout matching ZFS datasets (10 subvols) - Snapper configuration with timeline policy - GRUB + grub-btrfs for snapshot boot menu - Update disk.sh for filesystem-aware partition type - Update archangel with install_btrfs() path - Update build.sh to include lib/btrfs.sh - Update plan with Phase 2.7 (test) and 2.8 (LUKS)
* Update session context: Phase 1 completeCraig Jennings2026-01-231-29/+34
|
* Phase 1.5: Rename to archangelCraig Jennings2026-01-233-12/+14
| | | | | | | | | | | - Rename install-archzfs → archangel - Rename install-archzfs.conf.example → archangel.conf.example - Update build.sh to use new names - Update script header with dual-filesystem description - Update log file names to archangel-* The installer is now called "archangel" reflecting its expanded scope: snapshot-based recovery for both ZFS and Btrfs filesystems.
* Phase 1.4: Add filesystem selection promptCraig Jennings2026-01-234-12/+82
| | | | | | | | | | | | | - Add FILESYSTEM variable to config (zfs or btrfs) - Add select_filesystem() function with fzf support - Update gather_input() to prompt for filesystem in interactive mode - Add validation for FILESYSTEM in unattended mode - Btrfs selection errors with "not yet implemented" - Update banner to show "Archangel" branding - Update config example with FILESYSTEM option Groundwork for btrfs support - filesystem choice is now captured, installation logic gates on FILESYSTEM variable.
* Phase 1.1 complete: VM test passed, lib refactor validatedCraig Jennings2026-01-231-6/+17
|
* Update session context with VM testing progressCraig Jennings2026-01-231-49/+43
|
* Fix set -e compatibility in lib functionsCraig Jennings2026-01-234-11/+17
| | | | | | | | | - Replace [[ ]] && error pattern with if/then/fi - Pattern causes exit when condition is false with set -e - Fixed in: common.sh, config.sh, disk.sh, install-archzfs Discovered during VM testing: the && short-circuit returns exit code 1 when condition is false, triggering set -e to abort.
* Fix build.sh to include lib/ directory in ISOCraig Jennings2026-01-231-0/+13
| | | | | | - Copy custom/lib/ to /usr/local/bin/lib/ in airootfs - Add file permissions for lib/*.sh files - Required for refactored install-archzfs to work
* Phase 1.1: Create lib/ directory structure for archangel refactorCraig Jennings2026-01-236-82/+839
| | | | | | | | | | | - Add custom/lib/common.sh: output, validation, fzf prompts, disk utils - Add custom/lib/config.sh: argument parsing, config loading, validation - Add custom/lib/disk.sh: partitioning, EFI management, disk selection - Add custom/lib/zfs.sh: pool, datasets, ZFSBootMenu, services, hooks - Update install-archzfs to source libs - Remove duplicated output/config functions from main script Prepares codebase for btrfs filesystem support (Phase 2).
* Add btrfs implementation planCraig Jennings2026-01-232-0/+215
| | | | | | - Create PLAN-archangel-btrfs.org with 6-phase implementation - Phases: Refactor, Btrfs, Multi-disk, Testing, CLI tools, Docs - Add TODO referencing the plan
* Expand testing validation checks in btrfs researchCraig Jennings2026-01-231-28/+71
| | | | | | | - Add reboot survival checks (catches misconfigured services) - Rollback tests must include reboot for full validation - Document ZFSBootMenu rollback bug (needs filing) - Expand failure recovery and encryption checks
* Add archsetup --chroot task, update session contextCraig Jennings2026-01-232-80/+85
| | | | | | | - Add TODO [#B] for archsetup --chroot mode to enable full workstation setup during install-archangel chroot phase - Document required changes: skip systemctl start, ping checks, tmpfs mount - Update session context with archangel naming decision
* session: Code review workflow and btrfs expansion researchCraig Jennings2026-01-231-56/+78
|
* Research: Btrfs expansion and multi-filesystem supportCraig Jennings2026-01-232-37/+467
| | | | | | | | | | | | | | | | Comprehensive research for expanding project to support both ZFS and Btrfs: - Feature parity analysis (ZFS vs Btrfs equivalents) - Btrfs limitations: RAID 5/6 unstable, no native encryption (use LUKS) - Recommended subvolume layout: @, @home, @snapshots, @var_log, @var_cache - Snapshot stack: snapper + snap-pac + grub-btrfs + btrfs-assistant - Multi-disk support: raid1 (mirror), raid10 only - Installer architecture proposal with modular lib/ structure - Testing strategy and VM test matrix - Project rename recommendation: archsnap Cloned 8 reference repos: grub-btrfs, easy-arch, arch-btrfs-installation, btrfs-assistant, snap-pac, btrbk, buttermanager, alis
* Add code review workflow and project cleanup tasksCraig Jennings2026-01-233-0/+449
| | | | | | | | | | | - Create docs/project-workflows/code-review.org with comprehensive code review checklist based on Code Review Pyramid framework - Add 14 new tasks to todo.org from senior developer code review: - Priority A: README GRUB refs, missing LICENSE, skeleton script - Priority B: Stale files, Makefile lint, documentation gaps - Priority C: Style consistency, .editorconfig, test docs - Add Makefile targets to todo.org: deps, lint, deploy - Create docs/session-context.org for session tracking
* Remove session context after wrap-upCraig Jennings2026-01-231-52/+0
|
* session: Bare metal ZFSBootMenu validation on ratioCraig Jennings2026-01-231-0/+34
| | | | | Validated install-archzfs on Framework Desktop with 2-disk NVMe mirror. ZFSBootMenu installed on both EFI partitions with redundant boot entries.
* session: ZFSBootMenu implementation and testing completeCraig Jennings2026-01-232-27/+85
| | | | | Implemented and tested ZFSBootMenu bootloader replacement. All VM tests passed (single disk, mirror, raidz1). ISO copied to Ventoy drive.
* Replace GRUB with ZFSBootMenu bootloaderCraig Jennings2026-01-2213-564/+1232
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a major change that replaces the GRUB bootloader with ZFSBootMenu, providing native ZFS boot environment support. Key changes: - EFI partition reduced from 1GB to 512MB (only holds ZFSBootMenu) - EFI now mounts at /efi instead of /boot - Kernel and initramfs live on ZFS root (enables snapshot boot with matching kernel) - Downloads pre-built ZFSBootMenu EFI binary from get.zfsbootmenu.org - Creates EFI boot entries for all disks in multi-disk configurations - Syncs ZFSBootMenu to all EFI partitions for redundancy - Sets org.zfsbootmenu:commandline on zroot/ROOT for kernel cmdline inheritance - Sets bootfs pool property for default boot environment - AMD GPU workarounds (pg_mask, cwsr_enable) added to kernel cmdline when AMD detected Deleted GRUB snapshot tooling (no longer needed): - custom/grub-zfs-snap - custom/40_zfs_snapshots - custom/zz-grub-zfs-snap.hook - custom/zfs-snap-prune Updated helper scripts: - zfssnapshot: removed grub-zfs-snap call, shows ZFSBootMenu tip - zfsrollback: removed grub-zfs-snap call, notes auto-detection Tested configurations: - Single disk installation - 2-disk mirror (mirror-0) - 3-disk RAIDZ1 (raidz1-0) - All boot correctly with ZFSBootMenu
* Document Strix Halo VPE/CWSR freeze issues and workaroundsCraig Jennings2026-01-222-0/+255
| | | | | | | | - Add instructions for applying pg_mask=0 and cwsr_enable=0 workarounds - Document that kernel 6.18.x has critical bugs, stay on 6.15.x-6.17.x - Add session docs, mkinitcpio fixes, and Donato Capitella video transcript - Add PRINCIPLES.org for behavioral lessons learned - Update protocols.org from template
* Clean up session context and add .stignoreCraig Jennings2026-01-222-50/+2
|
* Simplify session startup instructions in protocols.orgCraig Jennings2026-01-221-2/+1
|
* Remove autodetect from mkinitcpio HOOKS documentationCraig Jennings2026-01-221-5/+7
| | | | | autodetect during chroot install detects live ISO hardware, not target machine. Could leave out NVMe/AHCI drivers.
* Add session notes for ratio boot fix and retrospective workflowCraig Jennings2026-01-221-0/+36
| | | | | Documented boot fix session including firmware requirement, GRUB configuration, and behavioral principles for future sessions.
* Add retrospective workflow and PRINCIPLES.org for continuous improvementCraig Jennings2026-01-223-14/+140
| | | | | | | | | - docs/PRINCIPLES.org: Behavioral lessons from retrospectives - docs/retrospectives/: Directory for retrospective records - docs/protocols.org: Add PRINCIPLES.org to session startup reading list Establishes pattern for learning from problem-solving sessions and capturing behavioral (not just technical) lessons.
* Update ratio session doc: kernel 6.15.2 now default with clean GRUB menuCraig Jennings2026-01-221-0/+66
| | | | | | | - Created custom GRUB entries for cleaner boot menu - Set kernel 6.15.2 as default, LTS as fallback - Pinned linux package in pacman.conf - Documented UUID gotcha with mirrored NVMe boot partitions
* Fix ratio boot issues: firmware, mkinitcpio, and document ZFS rollback dangersCraig Jennings2026-01-227-0/+794
| | | | | | | | | | | | | | | | | Root cause: Missing/outdated linux-firmware broke AMD Strix Halo GPU init. Fixed by installing linux-firmware 20260110-1. Changes: - install-archzfs: Fix mkinitcpio config (remove archiso.conf, fix preset) - todo.org: Add ZFS rollback + /boot mismatch issue, recommend ZFSBootMenu - docs/2026-01-22-ratio-boot-fix-session.org: Full troubleshooting session - docs/2026-01-22-mkinitcpio-config-boot-failure.org: Bug report - assets/: Supporting documentation and video transcript Key learnings: - AMD Strix Halo requires linux-firmware 20260110+ - ZFS rollback with /boot on EFI partition can break boot - zpool import -R can permanently change mountpoints
* Fix ZFS boot failures: service conflicts, cachefile, and GRUB duplicate rootCraig Jennings2026-01-211-3/+10
| | | | | | | | | | | | | | | | | | Three bugs were preventing installed systems from booting: 1. ZFS package preset (50-zfs.preset) enables zfs-import-cache by default, overriding our attempt to use zfs-import-scan. Now explicitly disable zfs-import-cache before enabling zfs-import-scan. 2. zfs-import-scan has ConditionFileNotEmpty=!/etc/zfs/zpool.cache which prevents it from running if cachefile exists. Now remove cachefile after setting cachefile=none. 3. GRUB_CMDLINE_LINUX contained root=ZFS=... but grub-mkconfig also auto-detects ZFS root, causing duplicate root= parameters. Removed manual root= since grub-mkconfig handles it correctly. All 22 tests pass (19 sanity + 3 installation configs).
* Reorganize todo.org: flatten hierarchy and sort by priorityCraig Jennings2026-01-211-150/+94
| | | | | | | | | - Move all tasks to same level (no nested headers) - Add "Idea from:" attribution for external sources - Sort tasks by priority (A, B, C, D) - Expand build logging task with archsetup UX reference - Clarify multi-variant builds as very low priority - Trim Resolved section for brevity
* Reorganize todo.org and add architectural/test improvementsCraig Jennings2026-01-211-309/+267
| | | | | | | | | | | | - Move completed items to Resolved section - Add RAID configuration tests (mirror, raidz) - Add pre-flight validation to install-archzfs - Add task to extract install-archzfs into testable functions - Add negative/failure test cases - Add install-archzfs --dry-run mode Improvements based on quality engineering principles: fail fast, testable architecture, error case coverage.
* Restore file ownership after build and rename todo.orgCraig Jennings2026-01-212-0/+24
| | | | | | | - Add chown step to build.sh to restore ownership to invoking user after mkarchiso completes (fixes root-owned out/work/profile dirs) - Rename TODO.org to todo.org (lowercase) - Add todo item for post-install reboot countdown timer
* Use zfs-import-scan instead of zfs-import-cache for bootCraig Jennings2026-01-212-28/+12
| | | | | | | | | | | | | | | Switch to the recommended pool import method that uses blkid to scan for pools instead of relying on zpool.cache. This eliminates the complexity of managing cachefile paths with altroot during installation. Changes: - Remove cachefile setup from create_zfs_pool() and configure_zfs_services() - Enable zfs-import-scan.service instead of zfs-import-cache.service - Set cachefile=none on the pool since it's not needed - Update full-test.sh to verify zfs-import-scan is enabled This approach is recommended per the Arch Wiki and doesn't require the cachefile to be present in the initramfs.
* Add initramfs and reboot verification testsCraig Jennings2026-01-201-0/+52
| | | | | | | - Check zpool.cache is present in initramfs (catches cachefile bugs) - Add reboot test: issue reboot, wait for system to come back - Verify ZFS pool healthy after reboot - Ensures the installed system can survive a reboot cycle
* Fix ZFS boot failure: set cachefile property after pool creationCraig Jennings2026-01-203-37/+63
| | | | | | | - Add zpool set cachefile=/etc/zfs/zpool.cache after pool creation - Without this, initramfs ZFS hook can't import pool at boot - Causes "cannot import '(null)': no such pool available" error - Add cachefile property test to full-test.sh