aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Fix downloads path (lowercase)Craig Jennings2026-01-201-2/+2
|
* Fix mDNS, hostname, and build safetyCraig Jennings2026-01-202-6/+128
| | | | | | | | - Add safe_cleanup_work_dir() to prevent /dev corruption on interrupted builds - Fix shadow file: use sed to modify root entry instead of replacing file - Add /etc/hosts and /etc/nsswitch.conf for proper hostname/mDNS resolution - Add inetutils package for hostname command - Add sanity tests for password, avahi, mdns, and hostname
* Update session contextCraig Jennings2026-01-201-58/+30
|
* Fix full-test.sh exiting after first passed testCraig Jennings2026-01-201-1/+1
| | | | | | | | Bug: ((TESTS_PASSED++)) returns exit code 1 when TESTS_PASSED is 0, because post-increment evaluates the old value (0) which is falsy. With set -e, this caused the script to exit after the first test passed. Fix: Use pre-increment ((++TESTS_PASSED)) which returns the new value.
* Add Avahi mDNS validation to test scriptsCraig Jennings2026-01-202-2/+25
| | | | | | | | | | sanity-test.sh (live ISO): - Check avahi-daemon is enabled - Check avahi-daemon is running test-install.sh (installed system): - Check avahi and nss-mdns packages installed - Check avahi-daemon service enabled
* Add Avahi mDNS to installed systems for network discoveryCraig Jennings2026-01-192-21/+9
| | | | | | | | Install avahi and nss-mdns packages, enable avahi-daemon service. Matches archsetup's implementation for consistency. After installation, systems are accessible as <hostname>.local (e.g., ratio.local, framework.local) for easier SSH access.
* Fix hostid mismatch bug that prevented booting installed systemsCraig Jennings2026-01-192-32/+67
| | | | | | | | | | | | | | | | | | Root cause: The `hostid` command returns a value even without /etc/hostid, but `zgenhostid` generates a DIFFERENT random value. The install script was calling `hostid` for the GRUB kernel parameter, then later calling `zgenhostid` to create /etc/hostid - resulting in a mismatch. ZFS refuses to auto-import pools when spl.spl_hostid doesn't match /etc/hostid, causing "Failed to mount /sysroot" at boot. Fix: Generate hostid with zgenhostid FIRST (in configure_bootloader), then read the consistent value for the GRUB kernel parameter. The configure_zfs_services function now just copies the already-existing /etc/hostid to the installed system. Verified in VM: GRUB and /etc/hostid both show identical values after installation.
* Add TODO for Avahi on installed systems, mark live ISO Avahi as doneCraig Jennings2026-01-192-99/+56
| | | | | | - Live ISO Avahi implemented in 906cc6f (archzfs.local works) - Added TODO to implement Avahi on installed systems - Update session context
* Add Avahi mDNS for easy SSH access, fix ISP firmware pathCraig Jennings2026-01-193-63/+115
| | | | | | | - Add avahi and nss-mdns packages to live ISO - Enable avahi-daemon.service for mDNS discovery - Set hostname to "archzfs" so machines are accessible at archzfs.local - Fix ISP firmware path in install-archzfs: remove /mnt prefix for chroot
* Add wireless-regdb for proper WiFi regulatory complianceCraig Jennings2026-01-191-1/+2
|
* Add AMD ISP firmware to initramfs for APUs with camerasCraig Jennings2026-01-191-0/+17
|
* Sync templates, add session contextCraig Jennings2026-01-192-0/+95
|
* Fix journald on ZFS: wait for mounts, enable persistent storageCraig Jennings2026-01-191-0/+17
|
* Add wget to target system packagesCraig Jennings2026-01-191-1/+2
|
* Add comprehensive installation tests and ZFS script deploymentCraig Jennings2026-01-197-10/+614
| | | | | | | - Add scripts/full-test.sh for automated install testing (single, mirror, raidz1) - Add --full-test option to build-release workflow - Install zfssnapshot and zfsrollback to target system during install - Simplify .gitignore to exclude entire vm/ directory
* Update session context with full workflow detailsCraig Jennings2026-01-191-54/+110
| | | | | Documents automated sanity test, build-release workflow, and all fixes made during this session.
* Add --yes flag for fully automated distributionCraig Jennings2026-01-191-7/+14
| | | | | | | | New --yes/-y flag skips the dd confirmation prompt, allowing build-release to run completely unattended for CI/CD workflows. The ARCHZFS label on the drive is sufficient safety - if it has that label, it was created by this process and is the intended target.
* Update build-release for TrueNAS and Framework drivesCraig Jennings2026-01-191-10/+6
| | | | | | | - Use cjennings@truenas.local instead of root (has SSH keys) - Remove removable check for ARCHZFS drives (Framework expansion cards show as internal but are hot-swappable) - Still requires 'yes' confirmation before dd for safety
* Fix build-release for running with sudoCraig Jennings2026-01-191-6/+31
| | | | | | | - Use SUDO_USER to get real user's home directory - Run SSH/SCP as real user to use their SSH keys - Handle TrueNAS SSH failure gracefully (warn and continue) - Track actual TrueNAS success status for summary
* Add automated sanity test for ISO verificationCraig Jennings2026-01-192-20/+336
| | | | | | | | | | | | | | | | | New scripts/sanity-test.sh: - Boots ISO in headless QEMU - Waits for SSH availability - Runs 13 automated verification tests: - ZFS module loaded and working - Custom scripts present (zfsrollback, zfssnapshot, etc.) - fzf installed - LTS kernel running - archsetup directory present - Reports pass/fail with summary - Fully automated - no human input required Updated build-release to use automated sanity test instead of manual verification prompt.
* Fix zfsrollback to process children before parentsCraig Jennings2026-01-191-2/+3
| | | | | | Sort datasets by path depth (deepest first) before rolling back. ZFS requires children to be rolled back before their parents, otherwise rollback can fail or skip datasets.
* Add session context for 2026-01-19Craig Jennings2026-01-191-0/+88
| | | | | Documents changes made this session including zfs scripts, grub fix, build-release workflow, and technical notes on os-prober.
* Add build-release script for ISO build and distributionCraig Jennings2026-01-191-0/+346
| | | | | | | | | | | | | | | Automates the full release workflow: 1. Build ISO (via build.sh) 2. Sanity test (boot in QEMU, manual verification) 3. Distribute to multiple targets: - ~/Downloads/isos (always) - truenas.local:/mnt/vault/isos (if reachable) - ARCHZFS labeled USB drive (detected via blkid, writes via dd) - Ventoy USB drive (detected by label or ventoy/ directory) Options: --skip-build Distribute existing ISO without rebuilding --skip-test Skip the QEMU sanity test
* Fix grub-zfs-snap command substitution syntax errorCraig Jennings2026-01-191-1/+1
| | | | | | | | | Remove backslash escape from grub-probe command substitution so it executes at config generation time instead of writing the literal string "$(grub-probe ...)" into grub.cfg. GRUB's scripting language doesn't support bash-style $() command substitution, causing syntax errors on boot.
* Increase fzf height in zfsrollback to 70%Craig Jennings2026-01-191-3/+3
| | | | | 40% was too small on console, showing only ~2 lines. 70% gives roughly 2/3 of screen for snapshot selection.
* Add fzf to target system packagesCraig Jennings2026-01-191-1/+2
| | | | | Required for zfsrollback interactive snapshot selection to work on freshly installed systems before archsetup runs.
* Add zfssnapshot and zfsrollback scripts to ISOCraig Jennings2026-01-194-1/+307
| | | | | | | | | | | | | | | | Copied from archsetup to make these tools available on the live ISO for rescue scenarios and post-install management. zfssnapshot: - Creates recursive snapshots across all pools - Timestamps with descriptive labels (YYYY-MM-DD_HH-MM-SS_description) - Integrates with grub-zfs-snap for boot menu updates zfsrollback: - Interactive fzf-based snapshot selection - Two modes: single dataset or all matching datasets - Safety warnings showing what will be destroyed - Special genesis rollback warning
* Add TODO for zfsrollback and zfssnapshot scriptsCraig Jennings2026-01-191-0/+66
| | | | | | | | | | These ZFS snapshot management scripts belong in archzfs ISO rather than archsetup because: - Rescue scenarios: rollback from live USB when system won't boot - Standalone utility: works on any ZFS system - ISO always available: no need to install archsetup first Includes example implementations using fzf for interactive selection.
* Add eBPF tracing tools and w3m terminal browserCraig Jennings2026-01-192-0/+166
| | | | | | | | | | | | | Add bpftrace, bcc-tools, and perf for system tracing and profiling. These are Linux's eBPF-based equivalents to DTrace, essential for debugging and performance analysis in rescue scenarios. Add w3m terminal browser alongside existing lynx for better rendering of complex pages. Update RESCUE-GUIDE.txt with new sections covering: - Section 9: System Tracing with bpftrace examples, BCC tools, perf - Section 10: Terminal web browsing with lynx/w3m basics
* Restore Arch Wiki to Priority A, add reader solutionCraig Jennings2026-01-191-8/+38
| | | | | | | | | | | When networking is broken, that's exactly when you need docs most. Added arch-wiki-lite (AUR) as the recommended reader: - wiki-search <term> for CLI searching - Displays articles as plain text in terminal - Added to AUR packages list Also documented Option 2: arch-wiki-docs + w3m with wrapper script.
* Rebalance TODO priorities based on reviewCraig Jennings2026-01-191-10/+42
| | | | | | | | | | | | | | Priority changes: - Arch Wiki offline: A→B (adds 500MB, network usually available) - mkosi research: B→C (current solution works, added detailed analysis) - Avahi discoverability: B→C (nice to have, not critical) - GRUB ISO boot: B→C (advanced feature) - Build logging: B→C (simple but low urgency) Removed vague "Check for methods to abstract" task. Added comprehensive mkosi vs mkarchiso comparison with verdict: keep mkarchiso for now, mkosi useful for future VM images and UKI boot.
* Expand AUR package TODO with implementation plan and package listCraig Jennings2026-01-191-6/+99
| | | | | | | | | | | | | | Detailed implementation plan for building AUR packages into local repo: - Build script infrastructure - Pacman.conf integration - Installation integration AUR packages organized by priority: - Essential: downgrade, yay, informant - ZFS Management: sanoid, syncoid, zrepl - System Maintenance: rate-mirrors, paru, pacman-cleanup-hook, arch-audit - Recovery Tools: ventoy-bin, topgrade, mkinitcpio-firmware - Nice to Have: zfs-auto-snapshot, btop, duf, dust, procs
* Add ideas from arch-linux-live-cd-iso-with-zfs projectCraig Jennings2026-01-191-0/+98
| | | | | | | | | | | | | | | | | | | Reviewed https://github.com/stevleibelt/arch-linux-live-cd-iso-with-zfs and extracted valuable ideas for our project: Priority A: - ZFSBootMenu integration (alternative boot manager for ZFS) Priority B: - Docker/Podman container support for builds - Arch Linux Archive snapshot support (version pinning) - Build logging with tee Priority C: - Multi-variant ISO builds (kernel/DKMS options) - Pre-clone tools and documentation - Environment file configuration (.env pattern) - Dry-run mode for build.sh
* Fix EFI_PART typo causing empty UUID in fstabCraig Jennings2026-01-181-1/+1
| | | | | | | | Used $EFI_PART (undefined) instead of ${EFI_PARTS[0]} when generating fstab, resulting in empty/wrong UUID for /boot mount. This caused "Timed out waiting for device /dev/disk/by-uuid" on boot of newly installed systems.
* Add TODOs for Arch Wiki offline docs and mkosi researchCraig Jennings2026-01-181-0/+17
|
* Add TODO for downgrade package (AUR)Craig Jennings2026-01-181-42/+50
|
* Remove autodetect hook from mkinitcpio for bare metal compatibilityCraig Jennings2026-01-181-2/+4
| | | | | | | | | | | | The autodetect hook filters modules based on currently loaded hardware, which when running from a live ISO means the target system's storage drivers (NVMe, AHCI, etc.) may not be included in the initramfs. This caused boot failures on bare metal with "Timed out waiting for device /dev/disk/by-uuid" because the disk controller wasn't detected. Removing autodetect includes all storage drivers, making the initramfs larger but ensuring compatibility with any hardware configuration.