| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
- Live ISO Avahi implemented in 906cc6f (archzfs.local works)
- Added TODO to implement Avahi on installed systems
- Update session context
|
| |
|
|
|
|
|
| |
- 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 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
|
| |
|
|
|
| |
Documents automated sanity test, build-release workflow, and all
fixes made during this session.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
| |
Documents changes made this session including zfs scripts, grub fix,
build-release workflow, and technical notes on os-prober.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
| |
40% was too small on console, showing only ~2 lines.
70% gives roughly 2/3 of screen for snapshot selection.
|
| |
|
|
|
| |
Required for zfsrollback interactive snapshot selection to work
on freshly installed systems before archsetup runs.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
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 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
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
Add get_encryption_choice() to ask user whether to enable encryption
during interactive install. Remove --no-encrypt CLI flag in favor of
config file NO_ENCRYPT option for unattended installs. Update tests
to rely on config file setting instead of flag.
Also: fix ISO label to ARCHZFS for stable GRUB entries, add TODO items.
|
| | |
|
| |
|
|
|
|
| |
- Mark recovery tools task as DONE in TODO.org
- Update session context with completed work
- Add session history entry to NOTES.org
|
| |
|
|
|
|
|
| |
Removed safecopy, ms-sys, dislocker, and nwipe as they are only
available in the AUR and cannot be installed during mkarchiso build.
These tools are still documented in RESCUE-GUIDE.txt with AUR
installation instructions for users who need them.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Packages added:
- iotop: disk I/O monitor by process
- ncdu: interactive disk usage analyzer
- tree: directory tree viewer
- speedtest-cli: internet speed test
- mosh: mobile shell (survives disconnects)
- aria2: multi-protocol downloader with resume
- tmate: terminal sharing for remote assistance
- sshuttle: VPN over SSH
- pass: password manager
Rescue guide expanded:
- Section 5: iotop for finding disk I/O culprits
- Section 6: ncdu and tree for disk space analysis
- Section 7: speedtest-cli, mosh, aria2, tmate, sshuttle
- Section 8: pass password manager access
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Packages added:
- mtr: combined ping + traceroute
- iperf3: bandwidth testing
- iftop: live bandwidth monitor by connection
- nethogs: bandwidth monitor by process
- ethtool: NIC configuration and diagnostics
- tcpdump: packet capture
- bind: dig/nslookup DNS tools
- nmap: network scanner
- wireshark-cli: tshark packet analysis
Rescue guide section 7 expanded with scenarios for:
- Network path analysis with mtr
- Bandwidth testing with iperf3
- Live monitoring with iftop and nethogs
- Interface diagnostics with ethtool
- Packet capture with tcpdump
- Network scanning with nmap
- Deep packet analysis with tshark
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Packages added:
- partimage: legacy partition imaging
- f2fs-tools: Flash-Friendly FS support
- exfatprogs: exFAT filesystem tools
- emacs: editor
Rescue guide sections 6-8:
- Disk Operations: partclone, fsarchiver, nwipe, filesystem tools
- Network Troubleshooting: connectivity, sshfs, file transfers
- Encryption & GPG: symmetric/asymmetric decryption, LUKS, eCryptfs
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Packages added:
- memtester: userspace memory testing
- stress-ng: CPU/memory/IO stress testing
- lm_sensors: temperature/fan/voltage monitoring
- lshw: detailed hardware inventory
- dmidecode: SMBIOS/DMI system information
- nvme-cli: NVMe drive management
- hdparm: HDD/SSD parameter tuning
Rescue guide Section 5 covers:
- SMART disk health monitoring
- Memory testing with memtester
- System stress testing
- Temperature monitoring with sensors
- Hardware inventory commands
- Disk benchmarking
- Bad block checking
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Packages added: chntpw, ntfs-3g, dislocker, hivex
Rescue guide section 4 covers:
- Mounting NTFS partitions (including hibernated)
- Reset/blank Windows passwords with chntpw
- Unlock disabled accounts, promote to admin
- Access BitLocker drives with dislocker
- Copy files from non-booting Windows
- Edit Windows registry with hivex
- Offline malware scanning with ClamAV
- Disable Fast Startup from Linux
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Packages added: os-prober, syslinux, ms-sys
Rescue guide section 3 covers:
- Chroot into broken system (including ZFS)
- Reinstall GRUB (UEFI and Legacy)
- Fix UEFI boot entries with efibootmgr
- Rebuild initramfs with mkinitcpio
- Dual-boot GRUB/Windows with os-prober
- Restore Windows MBR with ms-sys
- ZFS-specific boot issues (hostid, hooks)
- Emergency GRUB command line boot
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Packages added: ddrescue, testdisk, foremost, sleuthkit, safecopy, smartmontools
Rescue guide section 2 covers:
- SMART health assessment
- ddrescue for cloning failing drives
- PhotoRec/TestDisk for file/partition recovery
- Foremost for file carving
- Filesystem repair (ext4, NTFS, XFS, FAT)
- Mounting disk images
- Safecopy for very damaged media
|
| |
|
|
|
|
|
| |
- Add tealdeer, pv, rsync, mbuffer, lsof to ISO packages
- Pre-populate tealdeer cache during build for offline tldr
- Create RESCUE-GUIDE.txt with comprehensive ZFS recovery section
- Copy rescue guide to /root/ on ISO
|
| | |
|