AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 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

Como manter a unidade flash BIOS/UEFI com criptografia de disco completo

  • 772

Esta é uma pergunta de acompanhamento após

Como fazer uma unidade flash BIOS/UEFI com criptografia de disco completo

Eu segui as respostas nesta pergunta e criei uma instalação completa criptografada do Ubuntu 20.04 em uma unidade flash USB que inicializou a partir do BIOS ou de computadores configurados com UEFI.

Com o tempo, usei esta unidade flash USB instalada no Ubuntu em um computador apenas com BIOS e o mantive atualizado com segurança e outras atualizações. Agora, o computador UEFI não inicializa a partir desta unidade USB. Quando seleciono o Ubuntu no GRUB, ele me mostra o erro:

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

Este kernel específico não é instalado, pois foi substituído por kernels mais recentes durante a segurança e outras atualizações.

Como recupero a funcionalidade de inicialização UEFI para esta instalação do Ubuntu baseada em USB?

boot
  • 1 1 respostas
  • 143 Views

1 respostas

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

    O conto de doisgrub.cfg

    Esta instalação de unidade flash USB tem dois separados grub.cfgem dois locais. Um é usado para inicializar computadores somente com BIOS e o outro é usado para inicializar computadores UEFI. Quando novos kernels são instalados e os antigos são removidos, o processo de instalação atualiza apenas o arquivo grub.cfg que foi usado para a inicialização atual. Como resultado, os dois grub.cfgarquivos ficam fora de sincronia.

    O arquivo necessário para a inicialização do BIOS está em:

    /boot/grub/grub.cfg
    

    O arquivo necessário para a inicialização UEFI está em:

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

    Observe que, como esta é uma instalação criptografada, a partição de inicialização tem o ponto de montagem /boote a partição ESP tem o ponto de montagem /boot/efi.

    Solução

    Substitua o grub.cfg mais antigo pela versão mais recente. No meu caso, o BIOS era mais recente. Então usei o comando:

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

    Isso resolveu o problema por enquanto.

    Um roteiro

    Eu escrevi um pequeno script chamado grubsync.shpara copiar e substituir o mais antigo grub.cfgpelo mais novo, se eles forem diferentes com base em qual modo (BIOS ou UEFI) o USB inicializou.

    #!/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
    

    O nome do host da minha instalação completa USB é USB123. Altere-o antes de executar o script. Você precisará executar este script com sudoprefixo.

    A partir de agora, tenho que executar esse script toda vez que houver uma atualização do kernel. Com alguns ajustes, talvez eu consiga executá-lo a cada inicialização usando o crontab.

    Espero que isto ajude

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve