Install Recovery - Ramdisk
verify_checksum() awk 'print $1') [[ "$actual_sum" == "$expected_sum" ]] Main logic ------------------------------ main() awk 'print $1') echo "$new_checksum" > "$RECOVERY_MNT/$CHECKSUM_FILE"
# 7. Update bootloader config if needed (example for extlinux) if [[ -f "$BOOTLOADER_CFG" ]]; then log_info "Updating bootloader entry for recovery..." sed -i 's/^\(.*recovery.*\)initrd.*$/\1initrd=\/recovery-ramdisk.img/' "$BOOTLOADER_CFG" sync fi install recovery ramdisk
# 6. Verify installation log_info "Verifying written ramdisk..." if ! verify_checksum "$current_ramdisk" "$new_checksum"; then log_error "Verification failed after write!" if [[ -f "$RECOVERY_MNT/$RECOVERY_BACKUP" ]]; then log_warn "Restoring backup ramdisk..." cp "$RECOVERY_MNT/$RECOVERY_BACKUP" "$current_ramdisk" if [[ -f "$RECOVERY_MNT/$CHECKSUM_FILE.old" ]]; then cp "$RECOVERY_MNT/$CHECKSUM_FILE.old" "$RECOVERY_MNT/$CHECKSUM_FILE" fi fi exit 4 fi verify_checksum "$current_ramdisk" "$new_checksum"
cleanup() log_warn "Failed to unmount $RECOVERY_MNT" fi install recovery ramdisk
# Optional: test boot into recovery mode if [[ "$TEST_RECOVERY_BOOT:-0" == "1" ]]; then log_info "Testing recovery boot (dry-run)..." # In real system: reboot recovery fi
trap cleanup EXIT
# 8. Success log_info "Recovery ramdisk installed successfully." log_info "Checksum: $new_checksum"