View | Details | Raw Unified | Return to bug 60316
Collapse All | Expand All

(-)a/altlinux/grub-efi-install (-9 / +56 lines)
Lines 39-44 opt_target="" Link Here
39
opt_mode="auto"
39
opt_mode="auto"
40
opt_verbose=0
40
opt_verbose=0
41
opt_dry_run=0
41
opt_dry_run=0
42
secure_boot_extra_fallback_managed=0
42
grub_install_extra_args=()
43
grub_install_extra_args=()
43
44
44
GRUB_SYSCONF="/etc/sysconfig/grub2"
45
GRUB_SYSCONF="/etc/sysconfig/grub2"
Lines 345-350 safe_copy() { Link Here
345
    verbose "copied $src -> $dst"
346
    verbose "copied $src -> $dst"
346
}
347
}
347
348
349
# --- EFI binary ownership ---
350
351
is_alt_fallback() {
352
    local efi_binary="$1"
353
    local vendor_name="" vendor_package_name="" last_sbat_entry=""
354
355
    [ -r "$efi_binary" ] || return 1
356
357
    last_sbat_entry="$(grub-dumpsbat "$efi_binary" 2>/dev/null | \
358
                          tr -d '\0' | tail -n1)" || return 1
359
360
    IFS=, read -r _ _ vendor_name vendor_package_name _ _ \
361
        <<< "$last_sbat_entry"
362
363
    [ "$vendor_name" = "ALT Linux" ] || return 1
364
365
    case "$vendor_package_name" in
366
        shim|grub) return 0 ;;
367
        *)         return 1 ;;
368
    esac
369
}
370
371
install_secure_boot_extra_fallback() {
372
    local boot_dir="$1" shim_src="$2" mm_src="$3" fb_src="$4"
373
    local fallback
374
375
    # Use the spelling returned by the directory scan: uppercase lookup may
376
    # fail on VFAT mounted with an incompatible iocharset.
377
    fallback="$(find "$boot_dir" -maxdepth 1 \
378
        -iname "BOOT${efi_suffix_upper}.EFI" -print -quit)"
379
    fallback="${fallback:-$boot_dir/BOOT${efi_suffix_upper}.EFI}"
380
381
    if [ -e "$fallback" ]; then
382
        if ! is_alt_fallback "$fallback"; then
383
            info "preserving existing unrecognized fallback: $fallback"
384
            return 0
385
        fi
386
        verbose "updating existing ALT fallback: $fallback"
387
    fi
388
389
    secure_boot_extra_fallback_managed=1
390
    safe_copy "$shim_src" "$fallback"
391
    safe_copy "$mm_src"   "$boot_dir/mm${efi_suffix}.efi"
392
    safe_copy "$fb_src"   "$boot_dir/fb${efi_suffix}.efi"
393
}
394
348
# --- grub-install ---
395
# --- grub-install ---
349
396
350
run_grub_install() {
397
run_grub_install() {
Lines 407-415 install_secure_boot() { Link Here
407
        safe_copy "$grub_src" "$vendor_dir/grub${efi_suffix}.efi"
454
        safe_copy "$grub_src" "$vendor_dir/grub${efi_suffix}.efi"
408
        generate_grub_cfg "$vendor_dir"
455
        generate_grub_cfg "$vendor_dir"
409
        generate_boot_csv "$vendor_dir"
456
        generate_boot_csv "$vendor_dir"
410
        safe_copy "$shim_src" "$boot_dir/BOOT${efi_suffix_upper}.EFI"
457
        install_secure_boot_extra_fallback \
411
        safe_copy "$mm_src"   "$boot_dir/mm${efi_suffix}.efi"
458
            "$boot_dir" "$shim_src" "$mm_src" "$fb_src"
412
        safe_copy "$fb_src"   "$boot_dir/fb${efi_suffix}.efi"
413
    fi
459
    fi
414
}
460
}
415
461
Lines 478-488 cleanup_esp() { Link Here
478
                    "shim${efi_suffix}.efi" \
524
                    "shim${efi_suffix}.efi" \
479
                    "BOOT${efi_suffix_upper}.CSV"
525
                    "BOOT${efi_suffix_upper}.CSV"
480
            else
526
            else
481
                cleanup_stale_files "$boot_dir" \
527
                if [ "$secure_boot_extra_fallback_managed" = 1 ]; then
482
                    "grub${efi_suffix}.efi" \
528
                    cleanup_stale_files "$boot_dir" \
483
                    "grub.cfg" \
529
                        "grub${efi_suffix}.efi" \
484
                    "shim${efi_suffix}.efi" \
530
                        "grub.cfg" \
485
                    "BOOT${efi_suffix_upper}.CSV"
531
                        "shim${efi_suffix}.efi" \
532
                        "BOOT${efi_suffix_upper}.CSV"
533
                fi
486
                cleanup_stale_files "$vendor_dir" \
534
                cleanup_stale_files "$vendor_dir" \
487
                    "fb${efi_suffix}.efi"
535
                    "fb${efi_suffix}.efi"
488
            fi
536
            fi
489
- 

Return to bug 60316