aboutsummaryrefslogtreecommitdiff
path: root/todo.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-01-21 00:49:53 -0600
committerCraig Jennings <c@cjennings.net>2026-01-21 00:49:53 -0600
commit9ad87d1805174c9dc7ea92131bdce9c859614b57 (patch)
tree827480f3bfdaa923fdced4e67fd63d37b587b04a /todo.org
parentcb6d684aff1f2321c56c5b1de6c4da539e3a7a64 (diff)
downloadarchangel-9ad87d1805174c9dc7ea92131bdce9c859614b57.tar.gz
archangel-9ad87d1805174c9dc7ea92131bdce9c859614b57.zip
Restore file ownership after build and rename todo.org
- 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
Diffstat (limited to 'todo.org')
-rw-r--r--todo.org655
1 files changed, 655 insertions, 0 deletions
diff --git a/todo.org b/todo.org
new file mode 100644
index 0000000..9f59f01
--- /dev/null
+++ b/todo.org
@@ -0,0 +1,655 @@
+* Open Work
+** TODO [#A] Build AUR packages and include in ISO as local repository
+Build AUR packages during ISO creation and include them in a local pacman repository.
+This allows AUR software to work both in the live environment AND be installable to target systems.
+
+*** Implementation Plan
+
+**** 1. Create build infrastructure
+Add to build.sh or separate script (build-aur.sh):
+#+BEGIN_SRC bash
+build_aur_packages() {
+ local aur_packages=(downgrade yay sanoid informant rate-mirrors)
+ local repo_dir="$PROJECT_DIR/aur-packages"
+ local build_dir="/tmp/aur-build"
+
+ mkdir -p "$repo_dir" "$build_dir"
+
+ for pkg in "${aur_packages[@]}"; do
+ info "Building AUR package: $pkg"
+ git clone --depth 1 "https://aur.archlinux.org/${pkg}.git" "$build_dir/${pkg}"
+ (cd "$build_dir/${pkg}" && makepkg -s --noconfirm --needed)
+ cp "$build_dir/${pkg}"/*.pkg.tar.zst "$repo_dir/"
+ done
+
+ # Create/update repo database
+ repo-add "$repo_dir/aur.db.tar.gz" "$repo_dir"/*.pkg.tar.zst
+}
+#+END_SRC
+
+**** 2. Add local repo to ISO's pacman.conf
+In profile/pacman.conf, add:
+#+BEGIN_SRC ini
+[aur]
+SigLevel = Optional TrustAll
+Server = file:///usr/share/aur-packages
+#+END_SRC
+
+**** 3. Copy repo into ISO
+In build.sh, copy aur-packages/ to profile/airootfs/usr/share/aur-packages/
+
+**** 4. Add packages to packages.x86_64
+Once in local repo, packages can be listed normally and pacman will find them.
+
+**** 5. Make available during installation
+In install-archzfs, copy local repo to target or mount it:
+#+BEGIN_SRC bash
+# Copy AUR repo to target for installation
+cp -r /usr/share/aur-packages /mnt/usr/share/
+# Add repo to target's pacman.conf temporarily
+#+END_SRC
+
+*** AUR Packages to Include
+
+**** Essential (Priority A)
+| Package | Description | Why needed |
+|---------+-------------+------------|
+| downgrade | Roll back to previous package versions | Essential for recovery when updates break |
+| yay | AUR helper | Users can install additional AUR packages |
+| informant | Check Arch news before upgrading | Prevents breaking changes from surprises |
+| arch-wiki-lite | Offline Arch Wiki with CLI reader | Documentation when network is down |
+
+**** ZFS Management (Priority A)
+| Package | Description | Why needed |
+|---------+-------------+------------|
+| sanoid | ZFS snapshot policy management | Automated snapshot creation/pruning |
+| syncoid | ZFS replication tool (part of sanoid) | Backup to remote systems |
+| zrepl | ZFS replication daemon | Alternative to sanoid for replication |
+
+**** System Maintenance (Priority B)
+| Package | Description | Why needed |
+|---------+-------------+------------|
+| rate-mirrors | Fast Arch mirror selection | Better than reflector for speed |
+| paru | Alternative AUR helper (Rust) | Some prefer over yay |
+| pacman-cleanup-hook | Auto-remove old package cache | Disk space management |
+| arch-audit | CVE security monitoring | Check for vulnerable packages |
+
+**** Recovery Tools (Priority B)
+| Package | Description | Why needed |
+|---------+-------------+------------|
+| ventoy-bin | Create multiboot USB drives | Useful rescue tool |
+| topgrade | Universal upgrade tool | Update everything at once |
+| mkinitcpio-firmware | Suppress firmware warnings | Cleaner initramfs builds |
+
+**** Nice to Have (Priority C)
+| Package | Description | Why needed |
+|---------+-------------+------------|
+| zfs-auto-snapshot | Automatic ZFS snapshots | Simple cron-based snapshots |
+| btop | Modern resource monitor | Better than htop |
+| duf | Modern disk usage viewer | Better than df |
+| dust | Modern du replacement | Intuitive disk usage |
+| procs | Modern ps replacement | Better process viewer |
+
+*** Considerations
+- Build must run on Arch Linux (or in Arch container)
+- Some AUR packages have dependencies that are also AUR - need to handle build order
+- Package versions will be frozen at ISO build time
+- Consider caching built packages to speed rebuilds
+- May want to GPG sign the local repo for security
+
+*** Size Estimate
+Most AUR packages are small (<5MB each). Estimate ~50-100MB for full suite.
+Significantly less than pre-cloning git repos.
+
+** TODO [#A] Install Arch Wiki on ISO for offline package help
+Include offline Arch Wiki on the ISO for package documentation and troubleshooting.
+Invaluable for rescue scenarios when networking is broken - exactly when you need docs most.
+
+*** Reader Options
+
+**** Option 1: arch-wiki-lite (AUR) - Recommended
+Purpose-built CLI reader for offline Arch Wiki.
+#+BEGIN_SRC bash
+$ wiki-search zfs
+$ wiki-search mkinitcpio
+#+END_SRC
+- Searches articles by keyword
+- Displays content as plain text in terminal
+- Add to our AUR package build list
+
+**** Option 2: arch-wiki-docs (official) + text browser
+- Package installs HTML to /usr/share/doc/arch-wiki/html/
+- Use w3m, lynx, or elinks to browse
+- Would need wrapper script for searching:
+#+BEGIN_SRC bash
+#!/bin/bash
+# archwiki - search and display offline Arch Wiki
+WIKI_DIR="/usr/share/doc/arch-wiki/html"
+SEARCH="$1"
+MATCHES=$(find "$WIKI_DIR" -iname "*${SEARCH}*" -type f)
+if [[ -n "$MATCHES" ]]; then
+ echo "$MATCHES" | fzf --preview 'w3m -dump {}' | xargs w3m
+fi
+#+END_SRC
+
+*** Implementation
+1. Add arch-wiki-lite to AUR package list (leverages existing AUR infrastructure)
+2. Also install arch-wiki-docs for complete HTML version
+3. Add w3m for HTML viewing as backup
+4. Document in RESCUE-GUIDE.txt
+
+*** Size
+- arch-wiki-docs: ~500MB compressed
+- arch-wiki-lite: ~200MB (text only, smaller)
+- Could include both for ~600MB total
+
+** DONE [#B] Add zfsrollback and zfssnapshot scripts to ISO
+CLOSED: [2026-01-19 Sun]
+Include dedicated ZFS snapshot management scripts in the archzfs ISO rather than archsetup.
+These tools belong here since they're useful for rescue scenarios and post-install management.
+
+*** Scripts to create
+
+**** zfssnapshot
+Create manual or automated snapshots with consistent naming:
+#+BEGIN_SRC bash
+#!/bin/bash
+# zfssnapshot - Create ZFS snapshots with optional retention
+# Usage: zfssnapshot <dataset> [label]
+# Example: zfssnapshot zroot/ROOT/arch pre-upgrade
+
+DATASET="$1"
+LABEL="${2:-manual}"
+TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
+SNAPNAME="${DATASET}@${LABEL}_${TIMESTAMP}"
+
+zfs snapshot "$SNAPNAME"
+echo "Created snapshot: $SNAPNAME"
+#+END_SRC
+
+Features to consider:
+- Recursive snapshots (-r flag)
+- Pre-defined labels (pre-upgrade, daily, hourly)
+- Integration with pacman hooks for automatic pre-upgrade snapshots
+- Quiet mode for cron/systemd usage
+
+**** zfsrollback
+Interactive rollback with safety checks:
+#+BEGIN_SRC bash
+#!/bin/bash
+# zfsrollback - Safely rollback to a previous ZFS snapshot
+# Usage: zfsrollback [dataset]
+# Without args, shows all snapshots and prompts for selection
+
+# List snapshots with fzf for selection
+SNAP=$(zfs list -t snapshot -o name,creation -s creation | \
+ fzf --header "Select snapshot to rollback to")
+
+# Confirm before destructive operation
+echo "WARNING: This will destroy all data created after the snapshot"
+read -p "Rollback to $SNAP? [y/N] " confirm
+[[ "$confirm" == "y" ]] && zfs rollback -r "$SNAP"
+#+END_SRC
+
+Features to consider:
+- Show snapshot diff (what will be lost)
+- Create safety snapshot before rollback
+- Boot environment awareness (warn if rolling back root)
+- Clone instead of rollback option (preserve current state)
+
+*** Implementation
+1. Create scripts in custom/zfssnapshot and custom/zfsrollback
+2. Add to build.sh to copy to /usr/local/bin/
+3. Add file_permissions entries in profiledef.sh
+4. Document in RESCUE-GUIDE.txt
+5. Consider systemd timers for automated snapshots
+
+*** Why in archzfs instead of archsetup
+- Rescue scenarios: rollback from live USB when system won't boot
+- Standalone utility: works on any ZFS system, not just archsetup installs
+- ISO always available: no need to install archsetup first
+- Simpler: self-contained scripts vs. dependency on archsetup
+
+** TODO [#B] Set up CI/CD pipeline for automated ISO builds
+*** Options to evaluate
+- Self-hosted on TrueNAS (primary target)
+ - Gitea + Gitea Actions or Drone CI
+ - Jenkins in a jail/VM
+ - Woodpecker CI (lightweight Drone fork)
+- GitHub Actions (if repo mirrored to GitHub)
+- GitLab CI (self-hosted or gitlab.com)
+
+*** Requirements
+- Arch Linux build environment (container or VM)
+- Sudo/root access for mkarchiso
+- ~10GB disk space per build
+- Caching for pacman packages to speed builds
+
+*** Considerations
+- Trigger builds on push to main
+- Scheduled builds (weekly?) to catch upstream updates
+- Store artifacts (ISO) with retention policy
+- Notifications on build failure
+- Test automation (boot ISO in QEMU, run checks)
+
+*** TrueNAS-specific tips
+- Use a jail or VM for the CI runner
+- Consider bhyve VM with Arch Linux for native builds
+- Mount dataset for build artifacts and cache
+- Snapshot before/after builds for easy cleanup
+
+** DONE [#C] Consider Avahi for USB boot disk discoverability
+CLOSED: [2026-01-19 Sun]
+Make the live ISO discoverable on the network by name (e.g., archzfs.local) when booted.
+This would make SSH access easier without needing to find the IP address.
+
+Implemented in commit 0bd172a:
+- Added avahi and nss-mdns packages to ISO
+- Enabled avahi-daemon.service
+- Set hostname to "archzfs"
+- Live ISO now accessible as root@archzfs.local
+
+** DONE [#B] Add Avahi mDNS to installed systems
+CLOSED: [2026-01-19 Sun]
+Matches archsetup's implementation: install avahi + nss-mdns, enable avahi-daemon.
+
+Added to install-archzfs:
+- Packages: avahi, nss-mdns (in pacstrap)
+- Service: avahi-daemon enabled
+
+After installation, system will be accessible as <hostname>.local on the local network.
+Example: ratio.local, framework.local, etc.
+
+** TODO [#C] Consider adding bootable archzfs ISO to GRUB boot menu
+Store the archzfs ISO on disk and add a GRUB menu entry to boot it directly - no USB drive needed for recovery/reinstall.
+
+*** Benefits
+- Always have a rescue environment available
+- Can reinstall or rollback without external media
+- Useful for remote/headless servers
+
+*** Challenges
+1. Storage location - ISO is 5GB. Can't live on ZFS (GRUB can't read it). Options:
+ - EFI partition (currently 1GB - would need to be larger)
+ - Dedicated recovery partition (ext4 or FAT32)
+ - Second EFI partition just for the ISO
+
+2. GRUB loopback boot - Arch ISOs support this with the right kernel params:
+ #+BEGIN_SRC
+ menuentry "Archzfs Recovery" {
+ loopback loop /path/to/archzfs.iso
+ linux (loop)/arch/boot/x86_64/vmlinuz-linux archisolabel=ARCHZFS
+ initrd (loop)/arch/boot/x86_64/initramfs-linux.img
+ }
+ #+END_SRC
+
+3. Keeping it updated - Would need a mechanism to update the ISO when rebuilding
+
+*** Questions to resolve
+- Is this for recovery scenarios, or would you actually reinstall from it?
+- Would you want this integrated into the installer (auto-create recovery partition)?
+- Or just document how to set it up manually?
+
+** TODO [#C] Research mkosi as alternative to mkarchiso
+Investigate whether mkosi (systemd project) offers advantages over mkarchiso.
+
+*** Comparison
+| Aspect | mkarchiso | mkosi |
+|--------|-----------|-------|
+| Purpose | Live ISO images | Disk images, containers, ISOs |
+| Config | Shell scripts + file structure | Declarative TOML files |
+| Output | ISO9660 (USB/CD) | GPT disk images, tarballs, ISOs |
+| Boot | GRUB/syslinux/systemd-boot | UKI (Unified Kernel Images) |
+| Distros | Arch only | Arch, Fedora, Debian, Ubuntu |
+| Build env | Host or chroot | Container-native, reproducible |
+
+*** Where mkosi shines
+- Reproducible builds - designed for CI/CD, hermetic builds
+- Unified Kernel Images - modern secure boot (kernel+initrd+cmdline in one signed EFI)
+- VM images - can output raw disk images directly (great for QEMU testing)
+- Declarative - TOML config instead of shell scripts
+
+*** Where mkarchiso is better for us
+- Arch ecosystem - all docs, examples, community use it
+- ZFS live environment - archiso has the hooks we need
+- Proven - we know it works for our use case
+
+*** Verdict
+Keep mkarchiso for now. mkosi could be valuable for:
+- VM test images instead of booting ISOs
+- Future UKI boot (more secure boot chain)
+- Reproducibility when CI/CD becomes important
+
+*** References
+- https://wiki.archlinux.org/title/Mkosi
+- https://github.com/systemd/mkosi
+
+** Ideas from arch-linux-live-cd-iso-with-zfs project
+Reference: /home/cjennings/code/arch-linux-live-cd-iso-with-zfs
+GitHub: https://github.com/stevleibelt/arch-linux-live-cd-iso-with-zfs
+
+*** TODO [#A] Integrate ZFSBootMenu as alternative boot manager
+ZFSBootMenu is a powerful boot manager specifically designed for ZFS root systems.
+It provides boot environment selection, snapshot rollback from boot menu, and recovery options.
+
+Benefits:
+- Boot directly into any ZFS snapshot
+- Rollback to previous boot environment without booting first
+- Better ZFS-native boot experience than GRUB
+- Single EFI file (~15MB) that can be updated independently
+
+Implementation:
+- Download portable EFI from https://get.zfsbootmenu.org/efi
+- Include in ISO's /root/software/zfsbootmenu/
+- Add update script for post-installation updates
+- Consider as GRUB alternative or supplement
+
+Reference: https://zfsbootmenu.org/
+
+*** TODO [#B] Add Docker/Podman container support for builds
+The reference project uses containers with minimal capabilities instead of full root/privileged mode.
+This improves security and reproducibility.
+
+Capabilities needed for mkarchiso:
+- DAC_OVERRIDE
+- SYS_ADMIN
+- SYS_CHROOT
+- SYS_MODULE
+- Device: /dev/loop-control
+
+Benefits:
+- Reproducible builds across different host systems
+- No need to install archiso on host
+- Cleaner build environment
+- Easier CI/CD integration
+
+*** TODO [#B] Support building against Arch Linux Archive snapshots
+When archzfs lags behind the main Arch repos, builds can fail due to kernel version mismatch.
+The reference project supports pinning to historical repo snapshots.
+
+Implementation:
+- Add -r/--repo-date flag to build.sh
+- Use archive.archlinux.org for historical packages
+- Example: ./build.sh -r 2026/01/15 or ./build.sh -r week
+
+This solves the common problem of ZFS packages not being available for the latest kernel.
+
+*** TODO [#C] Add build logging with tee
+Capture all build output to a log file for debugging and CI artifact collection.
+
+Implementation:
+#+BEGIN_SRC bash
+exec &> >(tee "build-$(date +%Y%m%d-%H%M%S).log")
+#+END_SRC
+
+Also useful: Check log for known error patterns (e.g., DKMS failures) and fail fast.
+
+Note: Simple to implement but low urgency.
+
+*** TODO [#C] Support multi-variant ISO builds
+The reference project builds 8 variants automatically:
+- linux vs linux-lts kernel
+- DKMS vs native ZFS packages
+- Default vs experimental archzfs repos
+
+Could be useful for offering users choice between stability and bleeding-edge.
+Lower priority since we currently focus on linux-lts + DKMS for maximum compatibility.
+
+*** TODO [#C] Pre-clone useful tools and documentation into ISO
+The reference project bundles Git repos (without .git dirs) into /root:
+- archinstall (official installer)
+- downgrade (package rollback)
+- ZFS howtos and documentation
+- Recovery scripts
+
+Already partially implemented (have rescue tools), but could expand with:
+- Pre-cloned arch-linux-configuration scripts
+- ZFS administration cheatsheets
+- Offline troubleshooting guides
+
+*** TODO [#C] Add environment file configuration (.env pattern)
+Allow build customization via .env file instead of command-line flags.
+Useful for CI/CD and reproducible builds.
+
+Example .env:
+#+BEGIN_SRC
+KERNEL=linux-lts
+USE_DKMS=1
+BE_VERBOSE=0
+PACKAGES_TO_ADD=git,vim
+PACKAGES_TO_REMOVE=b43-fwcutter
+#+END_SRC
+
+*** TODO [#C] Add dry-run mode to build.sh
+Support --dry-run flag that shows what would be done without executing.
+Useful for testing configuration changes and debugging.
+
+** TODO [#C] Add 1-minute countdown timer before automatic reboot after installation
+Display a countdown timer (1 minute) with red text after installation completes, before automatically rebooting the system.
+Gives user time to review the installation summary and cancel if needed.
+
+*** Implementation
+In install-archzfs, after displaying the completion message:
+#+BEGIN_SRC bash
+# Red text countdown before reboot
+echo -e "\n\033[0;31mSystem will reboot in 60 seconds. Press Ctrl+C to cancel.\033[0m"
+for i in {60..1}; do
+ printf "\r\033[0;31mRebooting in %2d seconds...\033[0m" "$i"
+ sleep 1
+done
+echo
+reboot
+#+END_SRC
+
+* Resolved
+** DONE [#B] Add config file information to README
+Config file format documented in README.org with full reference and examples.
+
+** DONE [#B] Add CI/CD test infrastructure
+Added Makefile, test-install.sh, and test configs for automated VM testing.
+
+** CANCELLED [#C] Consider Dialog-Based Interface for Status, Information, and Questions
+Using fzf instead.
+
+** DONE [#C] Consider fzf interface for choices
+Implemented fzf for timezone, locale, keymap, disk, RAID, and WiFi selection.
+** DONE [#A] Create comprehensive project documentation (README.org)
+CLOSED: [2026-01-18 Sun 02:01]
+- State "DONE" from "TODO" [2026-01-18 Sun 02:01]
+*** Proposed sections in order
+1. Overview - What this project is
+2. Features - Key capabilities
+3. Quick Start - Minimal steps to build/boot/install
+4. Prerequisites - Arch Linux host, sudo, dependencies
+5. Building the ISO - build.sh usage and output
+6. Project Structure - File/script locations and descriptions
+7. Testing with VMs - test-vm.sh options, SSH access, multi-disk
+8. Development Workflow - Rollback to genesis, re-run VM, iterative testing
+9. Installation Walkthrough - fzf interface, RAID options, each step explained
+10. Bare Metal Installation - Laptop/server installs, WiFi, SSH access after reboot
+11. Post-Installation - Genesis snapshot, rollback script, archsetup
+12. Keeping Up-to-Date - Rebuilding for new kernel/ZFS versions
+13. Troubleshooting - Common pitfalls, known issues, tips
+14. Links - archzfs.com, ZFS documentation, Arch Wiki
+15. License - GPL
+
+*** Also needed
+- Add GPL header to all scripts (build.sh, install-archzfs, test-vm.sh)
+- Create LICENSE file in project root
+
+** DONE [#C] Add date/timestamp to install-archzfs log
+Log filename now includes timestamp: /tmp/install-archzfs-YYYY-MM-DD-HH-MM-SS.log
+Also includes header with start time inside the log file.
+
+** DONE [#B] Add common recovery tools to archzfs ISO
+CLOSED: [2026-01-18 Sat]
+Make the ISO double as a general-purpose recovery disk.
+See custom/RESCUE-GUIDE.txt for comprehensive documentation of all tools.
+
+*** Research Sources
+- [[https://www.system-rescue.org/Detailed-packages-list/][SystemRescue Package List]] - Arch-based rescue distro with 1000+ packages
+- [[https://alternativeto.net/software/hiren39s-bootcd/][Hiren's BootCD Alternatives]] - Popular rescue disk comparisons
+- [[https://www.chntpw.com/][chntpw]] - Windows password reset tool
+- [[https://rtech.support/disks/encryption/dislocker/][Dislocker]] - BitLocker decryption on Linux
+
+*** Currently on archzfs ISO
+- ZFS tools (zpool, zfs, zfs-utils)
+- Base Arch system (coreutils, util-linux, systemd)
+- Network (networkmanager, openssh, curl, wget)
+- Editors (vim)
+- Partitioning (parted, gdisk)
+- Filesystem (dosfstools, e2fsprogs)
+
+*** Proposed Additions by Category
+
+**** Data Recovery & Forensics
+| Package | Description | Size |
+|---------+-------------+------|
+| testdisk | Partition/file recovery, fixes partition tables | ~2MB |
+| ddrescue | Copy data from failing drives with retries | ~1MB |
+| foremost | File carving based on headers/footers | ~1MB |
+| sleuthkit | Forensic analysis toolkit (icat, fls, etc.) | ~5MB |
+| safecopy | Low-level data recovery from damaged media | ~1MB |
+
+**** Disk Cloning & Imaging
+| Package | Description | Size |
+|---------+-------------+------|
+| partclone | Efficient partition cloning (used by Clonezilla) | ~2MB |
+| fsarchiver | Filesystem archiver with compression | ~1MB |
+| partimage | Partition imaging (legacy, but useful) | ~1MB |
+
+**** Windows Recovery
+| Package | Description | Size |
+|---------+-------------+------|
+| chntpw | Reset Windows passwords, edit registry | ~500KB |
+| dislocker | Read/write BitLocker encrypted volumes | ~1MB |
+| ntfs-3g | Full NTFS read/write support | (likely included) |
+| hivex | Windows registry hive extraction | ~500KB |
+| ms-sys | Write Windows MBR/boot records | ~100KB |
+
+**** Filesystem Tools
+| Package | Description | Size |
+|---------+-------------+------|
+| ntfs-3g | NTFS read/write | ~2MB |
+| exfatprogs | exFAT support | ~500KB |
+| btrfs-progs | Btrfs tools | ~5MB |
+| xfsprogs | XFS tools | ~3MB |
+| f2fs-tools | Flash-Friendly FS tools | ~1MB |
+| hfsprogs | HFS/HFS+ (Mac) support | ~1MB |
+
+**** Hardware Diagnostics
+| Package | Description | Size |
+|---------+-------------+------|
+| smartmontools | SMART disk health monitoring | ~1MB |
+| hdparm | HDD/SSD parameter tuning | ~500KB |
+| nvme-cli | NVMe drive management | ~1MB |
+| lshw | Detailed hardware lister | ~1MB |
+| dmidecode | DMI/SMBIOS decoder | ~500KB |
+| memtester | Userspace memory testing | ~100KB |
+| stress-ng | CPU/memory/IO stress testing | ~2MB |
+| i2c-tools | I2C/SMBus tools | ~500KB |
+| lm_sensors | Hardware monitoring (temps, fans, voltages) | ~500KB |
+
+**** Network Diagnostics
+| Package | Description | Size |
+|---------+-------------+------|
+| nmap | Network scanner and security auditing | ~25MB |
+| tcpdump | Command-line packet analyzer | ~1MB |
+| wireshark-cli | TShark packet analysis | ~50MB |
+| iperf3 | Network bandwidth testing | ~500KB |
+| mtr | Combined ping/traceroute | ~500KB |
+| iftop | Network bandwidth monitor | ~500KB |
+| nethogs | Per-process bandwidth monitor | ~500KB |
+| ethtool | NIC configuration/diagnostics | ~500KB |
+| bind | dig/nslookup DNS tools | ~5MB |
+
+**** Security & Malware Scanning
+| Package | Description | Size |
+|---------+-------------+------|
+| clamav | Open source antivirus engine | ~150MB |
+| rkhunter | Rootkit detection | ~1MB |
+| chkrootkit | Rootkit checker | ~500KB |
+| lynis | Security auditing tool | ~1MB |
+
+**** Boot Repair
+| Package | Description | Size |
+|---------+-------------+------|
+| efibootmgr | UEFI boot manager (likely included) | ~100KB |
+| grub | GRUB bootloader tools (included) | - |
+| os-prober | Detect other OSes for GRUB | ~100KB |
+| syslinux | Legacy bootloader tools | ~2MB |
+
+**** File Management & Compression
+| Package | Description | Size |
+|---------+-------------+------|
+| mc | Midnight Commander file manager | ~2MB |
+| ncdu | NCurses disk usage analyzer | ~500KB |
+| tree | Directory listing | ~100KB |
+| p7zip | 7-Zip compression | ~3MB |
+| unrar | RAR extraction | ~500KB |
+| cabextract | Windows CAB extraction | ~100KB |
+| cpio | Archive tool (initramfs) | ~500KB |
+
+**** Remote Access
+| Package | Description | Size |
+|---------+-------------+------|
+| remmina | RDP/VNC client (GUI) | ~10MB |
+| tigervnc | VNC server/client | ~5MB |
+| screen | Terminal multiplexer | ~1MB |
+| tmux | Terminal multiplexer | ~1MB |
+
+**** Monitoring & System Info
+| Package | Description | Size |
+|---------+-------------+------|
+| htop | Interactive process viewer | ~500KB |
+| iotop | I/O monitoring | ~100KB |
+| atop | Advanced system monitor | ~500KB |
+| inxi | System information script | ~500KB |
+| neofetch | System info display | ~500KB |
+
+**** GUI Tools (if keeping Xfce or adding minimal X)
+| Package | Description | Size |
+|---------+-------------+------|
+| gparted | Graphical partition editor | ~5MB |
+| baobab | Disk usage analyzer | ~3MB |
+| gnome-disk-utility | GNOME Disks | ~5MB |
+
+*** Summary Table (Quick Reference)
+| Category | Key Tools | Est. Size |
+|----------+-----------+-----------|
+| Data Recovery | testdisk, ddrescue, foremost, sleuthkit | ~10MB |
+| Disk Cloning | partclone, fsarchiver | ~4MB |
+| Windows Recovery | chntpw, dislocker, hivex, ms-sys | ~3MB |
+| Filesystem | ntfs-3g, exfatprogs, btrfs-progs, xfsprogs, hfsprogs | ~12MB |
+| Hardware Diag | smartmontools, hdparm, nvme-cli, lshw, memtester, stress-ng, lm_sensors | ~8MB |
+| Network | nmap, tcpdump, iperf3, mtr, iftop, bind | ~35MB |
+| Security | clamav, rkhunter, chkrootkit | ~150MB |
+| Boot Repair | os-prober, syslinux | ~2MB |
+| File Mgmt | mc, ncdu, p7zip, unrar | ~6MB |
+| Remote | screen, tmux, tigervnc | ~7MB |
+| Monitoring | htop, iotop, inxi | ~2MB |
+
+*** Size Estimate
+- Core recovery tools (no ClamAV/Wireshark): ~90MB
+- With ClamAV: +150MB
+- With Wireshark CLI: +50MB
+- GUI tools (optional): ~20MB
+- Total estimate: ~150-300MB additional
+- Current ISO size: 5.1GB
+- Projected size with all tools: ~5.4GB
+
+*** Discussion Notes
+- SystemRescue is also Arch-based, making it a good reference for package names
+- Hiren's BootCD PE is now Windows-based, but older Linux version had good tool selection
+- Most recovery scenarios need: testdisk, ddrescue, chntpw, smartmontools, ntfs-3g
+- For Windows malware scanning, ClamAV is the standard open-source option
+- Consider: could offer two ISO variants (minimal vs full rescue)
+
+*** Questions to Resolve
+- Include ClamAV? Adds ~150MB but very useful for Windows malware scanning
+- Include Wireshark CLI (tshark)? Adds ~50MB for network forensics
+- Keep ISO under specific size target (e.g., 6GB for single-layer DVD)?
+- Add GUI tools or keep it minimal/CLI-focused?
+- Create separate "rescue" build profile or add to main ISO?
+- Priority order for implementation?
+