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 / 1521827
Accepted
Talaat Etman
Talaat Etman
Asked: 2024-07-28 05:26:58 +0800 CST2024-07-28 05:26:58 +0800 CST 2024-07-28 05:26:58 +0800 CST

como resolver os arquivos grub da unidade flash USB sem reinstalar o bootloader grub?

  • 772

O problema:

A unidade flash USB leva muito tempo para instalar grubo bootloader, agora o bootloader grub está instalado no MBR, mas os /boot/grub/*arquivos podem ser perdidos, corrompidos ou excluídos acidentalmente, e pode ser uma solução usada de forma útil sem a necessidade de reinstalar o carregador de inicialização.

O objectivo:

Regenerar /boot/grub/*arquivos.

A questão:

Quais são os comandos necessários para regenerar /boot/grub/i386-pc/*arquivos e /boot/grub/grubenvexcluir grub.cfgarquivos da maneira mais rápida?

boot
  • 1 1 respostas
  • 60 Views

1 respostas

  • Voted
  1. Best Answer
    Talaat Etman
    2024-07-29T04:49:14+08:002024-07-29T04:49:14+08:00

    Resolva os arquivos grub da unidade flash USB sem reinstalar o bootloader grub

    O GRUB vem com imagens de boot, que normalmente são colocadas no diretório/usr/lib/grub/<cpu>-<platform>(para máquinas baseadas em BIOS /usr/lib/grub/i386-pc). A partir de agora, o diretório onde as imagens GRUB são inicialmente colocadas (normalmente/usr/lib/grub/<cpu>-<platform>) será chamado de diretório de imagens , e o diretório onde o carregador de boot precisa encontrá-las (normalmente/boot) será chamado de diretório de boot .

    Para regenerar um novo diretório de imagem ( /boot/grub/i386-pc), assumimos que a unidade flash USB leva /dev/sdc1e estes comandos serão aplicados:

    sudo mount /dev/sdc1 /mnt/sdc1
    sudo mv /mnt/sdc1/boot/grub /mnt/sdc1/boot/grub.old
    sudo cp -a /usr/lib/grub/i386-pc /mnt/sdc1/boot/grub/i386-pc
    

    Após a aplicação desses comandos, a unidade flash USB foi montada em /mnt/sdc1, o diretório existente /boot/grubna unidade flash USB foi renomeado para /boot/grub.olde o /usr/lib/grub/i386-pcdiretório geral foi copiado para o /boot/grub/i386-pcdiretório da unidade flash USB. Não precisamos de todos os arquivos incluídos no diretório, mas o diretório terá um tamanho pequeno. o mais importante é que ainda precisamos gerar o arquivo perdido /i386-pc/core.img.

    core.img , esta é a imagem central do GRUB. Ele é construído dinamicamente a partir da imagem do kernel e de uma lista arbitrária de módulos pelo programa grub-mkimage. Geralmente, ele contém módulos suficientes para acessar /boot/grube carrega todo o resto (incluindo manipulação de menus, a capacidade de carregar sistemas operacionais de destino e assim por diante) do sistema de arquivos em tempo de execução. O design modular permite que a imagem central seja mantida pequena, já que as áreas do disco onde ela deve ser instalada costumam ser tão pequenas quanto 32 KB.

    Para gerar /i386-pc/core.imgo seguinte comando será aplicado:

    sudo grub-mkimage --output=/tmp/core.img --prefix=/dev/sdc1/boot/grub --format=i386-pc biosdisk part_msdos NTFS
    

    Agora o /core.imgé colocado no /tmpdiretório. se este comando não funcionar, tente o seguinte:

    sudo grub-mkimage --output=/tmp/core.img --prefix=/mnt/sdc1/boot/grub --format=i386-pc biosdisk part_msdos NTFS
    

    Copie /tmp/core.imgpara /i386-pc/core.imga unidade flash USB:

    sudo cp -R /tmp/core.img /mnt/sdc1/i386-pc/core.img
    

    O arquivo mais recente é /boot/grub/grubenv.

    O bloco de ambiente GRUB geralmente é útil para lembrar uma pequena quantidade de informações de uma inicialização para a próxima. Por exemplo, você pode querer definir a entrada de menu padrão com base no que foi selecionado da última vez. O GRUB deliberadamente não implementa suporte para gravação de arquivos, a fim de minimizar a possibilidade do carregador de boot ser responsável pela corrupção do sistema de arquivos, portanto, um arquivo de configuração do GRUB não pode simplesmente criar um arquivo da maneira comum. No entanto, o GRUB fornece um “bloco de ambiente” que pode ser usado para salvar uma pequena quantidade de estado.

    O bloco de ambiente é um arquivo pré-alocado de 1024 bytes, que normalmente reside em /boot/grub/grubenv (embora você não deva assumir isso). No momento da inicialização, o comando load_env (consulte load_env) carrega variáveis ​​de ambiente a partir dele, e o comando save_env (consulte save_env) salva variáveis ​​de ambiente nele. Em um sistema em execução, o utilitário grub-editenv pode ser usado para editar o bloco de ambiente.

    Por razões de segurança, este armazenamento só está disponível quando instalado em um disco simples (sem LVM ou RAID), usando um sistema de arquivos sem soma de verificação (sem ZFS) e usando funções BIOS ou EFI (sem ATA, USB ou IEEE1275).

    O comando necessário é:

    sudo grub-editenv /mnt/sdc1/boot/grub/grubenv create
    

    este comando ao criar um grubenvarquivo vazio e permitir que você continue sem o erro:

    Error: invalid environment block.
    press any key to continue....
    

    A última coisa a fazer é copiar grub.cfgo arquivo do /grub.olddiretório ou criar um novo e reiniciar para testar o processo de inicialização da unidade flash USB.

    Manual do GNU GRUB 2.12

    Como mover, copiar e renomear um diretório no Linux

    Erro GRUB 'bloco de ambiente inválido' na inicialização e atualização do Ubuntu

    Gerar arquivo core.img

    • 0

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