<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archangel/custom/lib/btrfs.sh, branch v0.8</title>
<subtitle>Arch Linux installer ISO — ZFS-on-root or BTRFS, doubles as rescue disk
</subtitle>
<id>https://git.cjennings.net/archangel/atom?h=v0.8</id>
<link rel='self' href='https://git.cjennings.net/archangel/atom?h=v0.8'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/'/>
<updated>2026-02-23T17:54:25+00:00</updated>
<entry>
<title>refactor: rename custom/ to installer/ for clarity</title>
<updated>2026-02-23T17:54:25+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-23T17:54:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=6631521d9f45b73f9b4df76db9148d82af8d57b9'/>
<id>urn:sha1:6631521d9f45b73f9b4df76db9148d82af8d57b9</id>
<content type='text'>
The custom/ directory name was an archiso implementation detail. Renamed
to installer/ which clearly communicates that this directory contains the
installer scripts and utilities that ship on the ISO.

Updated all references in build.sh, Makefile, test-install.sh, and README.
</content>
</entry>
<entry>
<title>fix: support multi-disk LUKS and fix cryptkey format for btrfs</title>
<updated>2026-02-23T16:31:01+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-23T16:31:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=29f464638ab4342d00459d079e93f873962e5409'/>
<id>urn:sha1:29f464638ab4342d00459d079e93f873962e5409</id>
<content type='text'>
- Fix cryptkey parameter format: use rootfs: prefix so the encrypt hook
  finds the keyfile embedded in the initramfs (was treating bare path as
  a device name)
- Switch multi-disk LUKS to sd-encrypt hook which reads crypttab.initramfs
  to open ALL LUKS containers (the traditional encrypt hook only supports
  a single cryptdevice)
- Create crypttab.initramfs during LUKS initramfs setup
- Skip cryptdevice/cryptkey cmdline params for multi-disk LUKS since
  sd-encrypt reads crypttab instead
</content>
</entry>
<entry>
<title>Add LUKS testing infrastructure and documentation</title>
<updated>2026-01-25T13:36:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-25T13:36:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=06b9cbefbf519da2da13b82e23050d7ada31f3f6'/>
<id>urn:sha1:06b9cbefbf519da2da13b82e23050d7ada31f3f6</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>Fix GRUB boot for btrfs with subvolumes</title>
<updated>2026-01-25T06:10:21+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-25T06:10:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=dc36ae7bd98ecaadd7b5e9a9d44d4e4e4da532b8'/>
<id>urn:sha1:dc36ae7bd98ecaadd7b5e9a9d44d4e4e4da532b8</id>
<content type='text'>
- Store GRUB modules on EFI partition (FAT32) to avoid btrfs
  subvolume path prefix issues (/@/boot/grub not found)
- Create symlink /boot/grub -&gt; /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
</content>
</entry>
<entry>
<title>Fix LUKS encryption for btrfs (single and multi-disk)</title>
<updated>2026-01-24T23:29:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T23:29:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=9423f1f3253bdf32ae182d1f9d04df55ffb5f9aa'/>
<id>urn:sha1:9423f1f3253bdf32ae182d1f9d04df55ffb5f9aa</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>Phase 3: Add multi-disk btrfs support (RAID0/RAID1)</title>
<updated>2026-01-24T20:28:51+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T20:28:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=613c09c6d4afd4d9c9ea858578ccce29d635941c'/>
<id>urn:sha1:613c09c6d4afd4d9c9ea858578ccce29d635941c</id>
<content type='text'>
- 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
</content>
</entry>
<entry>
<title>Fix LUKS btrfs installation and reduce ISO size</title>
<updated>2026-01-24T18:23:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T18:23:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=3fc34866ab9092445039f1da3c9f71c60f30f2ee'/>
<id>urn:sha1:3fc34866ab9092445039f1da3c9f71c60f30f2ee</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>Phase 2.8: Add LUKS encryption for btrfs</title>
<updated>2026-01-24T11:33:13+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T11:33:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=94af83c1c8446ef1a564cff8aec5487afa47693e'/>
<id>urn:sha1:94af83c1c8446ef1a564cff8aec5487afa47693e</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>Fix btrfs GRUB boot and snapper firstboot</title>
<updated>2026-01-24T11:23:49+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T11:23:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=f96453e556c48eced30b16214575d48dd9a61fee'/>
<id>urn:sha1:f96453e556c48eced30b16214575d48dd9a61fee</id>
<content type='text'>
- 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.
</content>
</entry>
<entry>
<title>Fix btrfs bugs from VM testing</title>
<updated>2026-01-24T05:58:07+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-01-24T05:58:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/archangel/commit/?id=bf62150d61d3e52b07095be21aff9ac5abe9d03f'/>
<id>urn:sha1:bf62150d61d3e52b07095be21aff9ac5abe9d03f</id>
<content type='text'>
- 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.
</content>
</entry>
</feed>
