<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archangel/.gitignore, branch main</title>
<subtitle>Arch Linux installer ISO — ZFS-on-root or BTRFS, doubles as rescue disk
</subtitle>
<id>https://git.cjennings.net/archangel/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/archangel/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/'/>
<updated>2026-04-20T22:31:39+00:00</updated>
<entry>
<title>chore: gitignore .ai/ tooling dir, untrack notes.org</title>
<updated>2026-04-20T22:31:39+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-20T22:31:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=88b677cbcbbe126d50d5b334206a55559e5a4d29'/>
<id>urn:sha1:88b677cbcbbe126d50d5b334206a55559e5a4d29</id>
<content type='text'>
</content>
</entry>
<entry>
<title>security: gitignore host configs, add .example templates</title>
<updated>2026-04-13T03:20:48+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-13T03:20:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=33ff55507895af2c29a20ec7e7e707d317cb8ef1'/>
<id>urn:sha1:33ff55507895af2c29a20ec7e7e707d317cb8ef1</id>
<content type='text'>
velox-{zfs,btrfs}.conf contain LUKS/ZFS passphrases and root passwords.
Untrack them and add velox-*.conf to .gitignore. Committed .example
templates show the expected structure with 'welcome' placeholders.
</content>
</entry>
<entry>
<title>chore: add inbox/ to .gitignore</title>
<updated>2026-02-23T17:37:17+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-23T17:37:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=429a07b0b0dcb180e487f1a09f3fc2b6244c50cf'/>
<id>urn:sha1:429a07b0b0dcb180e487f1a09f3fc2b6244c50cf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>clean personal info and private files from repository</title>
<updated>2026-02-23T05:23:59+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-23T05:23:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=77fdae15fb5ad1498d8b006104a0d6fd151060bb'/>
<id>urn:sha1:77fdae15fb5ad1498d8b006104a0d6fd151060bb</id>
<content type='text'>
- Remove personal hardware specs, machine-specific troubleshooting docs,
  and video transcript from assets/
- Remove stale PLAN-zfsbootmenu-implementation.org (feature complete)
- Remove .stignore (Syncthing config, not project-relevant)
- Untrack todo.org (personal task tracker with private infra details)
- Make archsetup path configurable via ARCHSETUP_DIR env var in build.sh
- Use $REAL_USER instead of hardcoded username in build-release scp
</content>
</entry>
<entry>
<title>chore: add docs/ to .gitignore and untrack personal files</title>
<updated>2026-02-23T05:20:56+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-23T05:20:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=5e6877e8f3fb552fce3367ff273167d2cf6af75f'/>
<id>urn:sha1:5e6877e8f3fb552fce3367ff273167d2cf6af75f</id>
<content type='text'>
docs/ contains session history, personal workflows, and private
protocols that shouldn't be in a public repository.
</content>
</entry>
<entry>
<title>Replace GRUB with ZFSBootMenu bootloader</title>
<updated>2026-01-23T05:21:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-23T05:21:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=3e70ba84c15d69f48f436239e7f0ac9628464c55'/>
<id>urn:sha1:3e70ba84c15d69f48f436239e7f0ac9628464c55</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>Add comprehensive installation tests and ZFS script deployment</title>
<updated>2026-01-19T19:16:33+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-19T19:16:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=ea105b2a883265c0615c2275d00de1c90ae4a4e4'/>
<id>urn:sha1:ea105b2a883265c0615c2275d00de1c90ae4a4e4</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>Add CI/CD test infrastructure</title>
<updated>2026-01-18T19:25:00+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-18T19:25:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=3e3d24e12750a5a79925ae36b5e48598116d5636'/>
<id>urn:sha1:3e3d24e12750a5a79925ae36b5e48598116d5636</id>
<content type='text'>
- Add Makefile with targets: all, test, test-unit, test-install, build, release, clean, lint
- Add test-install.sh for automated VM installation testing
- Add test configs: single-disk, mirror, raidz1, no-ssh, custom-locale
- Add test-logs/ to .gitignore
- Uses sshpass for SSH authentication to live ISO
- Copies latest install-archzfs to VM before testing (allows testing without rebuild)
- Supports --list to show available configs
</content>
</entry>
<entry>
<title>Add config file support for unattended installations</title>
<updated>2026-01-18T08:01:01+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-18T08:01:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=5bd18b6f6a3ea89c900549c530af2a256094b917'/>
<id>urn:sha1:5bd18b6f6a3ea89c900549c530af2a256094b917</id>
<content type='text'>
Features:
- --config-file option for automated installs
- Example config at /root/install-archzfs.conf.example
- Validates required fields before install
- Config only used when explicitly specified (safety)

Bug fixes:
- Fix pacstrap hanging on provider prompts (use yes pipe)
- Remove fsck from mkinitcpio HOOKS (ZFS doesn't use fsck)
- Add hostid support for ZFS boot
- Add spl.spl_hostid to kernel command line

Documentation:
- Comprehensive README.org with 15 sections
- Session context tracking file
</content>
</entry>
<entry>
<title>Add docs directory</title>
<updated>2026-01-17T19:01:02+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-17T19:01:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=e655922db23c380ff8e62e4ffc8d09e82fe3d691'/>
<id>urn:sha1:e655922db23c380ff8e62e4ffc8d09e82fe3d691</id>
<content type='text'>
Project documentation and workflow definitions.
</content>
</entry>
</feed>
