diff options
Diffstat (limited to 'installer/lib')
| -rw-r--r-- | installer/lib/btrfs.sh | 6 | ||||
| -rw-r--r-- | installer/lib/common.sh | 17 |
2 files changed, 18 insertions, 5 deletions
diff --git a/installer/lib/btrfs.sh b/installer/lib/btrfs.sh index 0715ba7..0a34be0 100644 --- a/installer/lib/btrfs.sh +++ b/installer/lib/btrfs.sh @@ -212,11 +212,7 @@ configure_luks_initramfs() { # Include keyfile in initramfs for testing mode (unattended boot) if [[ "${TESTING:-}" == "yes" ]]; then info "Testing mode: embedding keyfile in initramfs" - sed -i "s|^FILES=.*|FILES=($LUKS_KEYFILE)|" $MNTPOINT/etc/mkinitcpio.conf - # If FILES line doesn't exist, add it - if ! grep -q "^FILES=" $MNTPOINT/etc/mkinitcpio.conf; then - echo "FILES=($LUKS_KEYFILE)" >> $MNTPOINT/etc/mkinitcpio.conf - fi + ensure_initramfs_files "$LUKS_KEYFILE" "$MNTPOINT/etc/mkinitcpio.conf" fi # Create crypttab.initramfs for sd-encrypt (used by multi-disk LUKS) diff --git a/installer/lib/common.sh b/installer/lib/common.sh index e5f7246..2cd4798 100644 --- a/installer/lib/common.sh +++ b/installer/lib/common.sh @@ -328,3 +328,20 @@ prepend_grub_cmdline_linux() { grep -qF "GRUB_CMDLINE_LINUX=\"${addition}" "$config_file" \ || error "GRUB_CMDLINE_LINUX not modified in $config_file (line missing or pattern unmatched)" } + +############################# +# Initramfs Configuration +############################# + +# Ensure mkinitcpio.conf's FILES= line lists the given value. Replaces +# an existing FILES= line, or appends one if absent. Self-healing +# rather than error-on-miss: FILES= is optional in mkinitcpio.conf, so +# a missing line means "no extra files," not a broken config. +ensure_initramfs_files() { + local value="$1" + local config_file="$2" + sed -i "s|^FILES=.*|FILES=(${value})|" "$config_file" + if ! grep -q "^FILES=" "$config_file"; then + echo "FILES=(${value})" >> "$config_file" + fi +} |
