AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1414664
Accepted
user68186
user68186
Asked: 2022-06-19 11:26:38 +0800 CST2022-06-19 11:26:38 +0800 CST 2022-06-19 11:26:38 +0800 CST

如何使用全盘加密维护 BIOS/UEFI 闪存驱动器

  • 772

这是之后的后续问题

如何使用全盘加密制作 BIOS/UEFI 闪存驱动器

我已经按照这个问题的答案,在从 BIOS 或 UEFI 配置的计算机启动的 USB 闪存驱动器中创建了 Ubuntu 20.04 的加密完整安装。

随着时间的推移,我使用这个 USB 闪存驱动器在仅 BIOS 的计算机中安装了 Ubuntu,并通过安全和其他更新对其进行更新。现在 UEFI 计算机将无法从此 USB 驱动器启动。当我从 GRUB 中选择Ubuntu时,它会显示错误:

error file '/vmlinuz-5.8.0-48-generic' not found.
you need to load the kernel first. 

未安装此特定内核,因为它在安全和其他更新期间被较新的内核取代。

如何为这个基于 USB 的 Ubuntu 安装重新获得 UEFI 引导功能?

boot
  • 1 1 个回答
  • 143 Views

1 个回答

  • Voted
  1. Best Answer
    user68186
    2022-06-19T11:26:38+08:002022-06-19T11:26:38+08:00

    两个人的故事grub.cfg

    此 USB 闪存驱动器安装grub.cfg在两个位置有两个单独的。一个用于仅引导 BIOS 计算机,另一个用于引导 UEFI 计算机。当安装新内核并删除旧内核时,安装过程仅更新用于当前引导的 grub.cfg 文件。结果,这两个grub.cfg文件不同步。

    BIOS 启动所需的文件位于:

    /boot/grub/grub.cfg
    

    UEFI 启动所需的文件位于:

    /boot/efi/boot/grub/grub.cfg
    

    注意,因为这是一个加密安装,所以 boot 分区有挂载点/boot,ESP 分区有挂载点/boot/efi。

    解决方案

    用较新的版本替换较旧的 grub.cfg。就我而言,BIOS 较新。所以我使用了命令:

    sudo cp /boot/grub/grub.cfg /boot/efi/boot/grub/grub.cfg
    

    这暂时解决了这个问题。

    一个脚本

    我编写了一个小脚本grubsync.sh,用于复制旧的并将旧的替换grub.cfg为新的,如果它们根据 USB 引导的模式(BIOS 或 UEFI)不同而不同。

    #!/bin/bash
    # Date: Jun 18, 2022
    # Purpose: USB123 copy grub.cfg from boot partition grub.cfg to ESP partition
    #      or vice versa if grub.cfg is newer
     
    # Only run if the computer is USB123
    if [[ ! $HOSTNAME == USB123 ]]; then    # Not on right computer
        echo "This is $HOSTNAME, expected USB123, exiting..."
        exit 1
    fi
    
    if [[ "$EUID" -ne 0 ]]
        then echo "This script must run with sudo, exiting..."
        exit 1
    fi
    
    BOOTgrubCFG="/boot/grub/grub.cfg"
    ESPgrubCFG="/boot/efi/boot/grub/grub.cfg"
    
    if cmp --silent -- "$BOOTgrubCFG" "$ESPgrubCFG"; then
        echo "files contents are identical, exiting..."
        exit 1
    fi
    
    if ls /sys/firmware/efi; then   # If TRUE then UEFI Boot
        if [[ "$BOOTgrubCFG" -ot "$ESPgrubCFG" ]]; then    # '-ot` means older than
            cp -f "$BOOTgrubCFG" "$BOOTgrubCFG".old 
            cp -f "$ESPgrubCFG" "$BOOTgrubCFG"
            echo "$BOOTgrubCFG" was old, kept with .old ext
            echo "$BOOTgrubCFG" was replaced with "$ESPgrubCFG". 
        fi
    else 
        if [[ "$ESPgrubCFG" -ot "$BOOTgrubCFG" ]]; then
            cp -f "$ESPgrubCFG" "$ESPgrubCFG".old 
            cp -f "$BOOTgrubCFG" "$ESPgrubCFG"
            echo "$ESPgrubCFG" is old, kept with .old ext
            echo "$ESPgrubCFG" was replaced with "$BOOTgrubCFG".        
        fi
    fi
    

    我的 USB 完整安装的主机名是USB123. 在运行脚本之前更改它。您将需要使用sudo前缀运行此脚本。

    到目前为止,每次有内核更新时我都必须运行这个脚本。通过一些调整,我可以在每次启动时使用 crontab 运行它。

    希望这可以帮助

    • 3

相关问题

  • grub 菜单中的“恢复”选项是什么?

  • 用户如何避免在启动时输入密码?[关闭]

  • 更改 Wubi 的启动顺序

  • 如何在 Ubuntu 启动时显示或隐藏启动消息?

  • 如何避免启动时出现“S to Skip”消息?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve