<feed xmlns='http://www.w3.org/2005/Atom'>
<title>archangel/custom/lib/btrfs.sh, 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-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=fd2ea796b20bcbebea19c43978fb08e3cd6754ed'/>
<id>urn:sha1:fd2ea796b20bcbebea19c43978fb08e3cd6754ed</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=d5c98ed92942192b169ebb74b560d5ed81848df0'/>
<id>urn:sha1:d5c98ed92942192b169ebb74b560d5ed81848df0</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=d3d0e8ef4035b7a397ed623a97604679bfd00c47'/>
<id>urn:sha1:d3d0e8ef4035b7a397ed623a97604679bfd00c47</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=124ccfabcf6a029d2c98fb22903b7f9576f459ee'/>
<id>urn:sha1:124ccfabcf6a029d2c98fb22903b7f9576f459ee</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=5d35df670a6780a12634e6f0ccbb918f53f355eb'/>
<id>urn:sha1:5d35df670a6780a12634e6f0ccbb918f53f355eb</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=33ab3dba2cdba0c94f8dde7b421a2a2b0ec8dae3'/>
<id>urn:sha1:33ab3dba2cdba0c94f8dde7b421a2a2b0ec8dae3</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=9a9232aeed72e2d319418d06c790620db0db4ad2'/>
<id>urn:sha1:9a9232aeed72e2d319418d06c790620db0db4ad2</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=c55ce46084635c188abb4516ba6ee6eee38dd11d'/>
<id>urn:sha1:c55ce46084635c188abb4516ba6ee6eee38dd11d</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=ee457bb61c6bd974c2bf167fd45d9375d48c873a'/>
<id>urn:sha1:ee457bb61c6bd974c2bf167fd45d9375d48c873a</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=322cdf56dc984aed4da7166ccfa1990e09445b08'/>
<id>urn:sha1:322cdf56dc984aed4da7166ccfa1990e09445b08</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>
