grub2 está carregando grub.cfg da unidade errada durante a inicialização após mover o sistema operacional para uma unidade diferente

grub2 está carregando grub.cfg da unidade errada durante a inicialização após mover o sistema operacional para uma unidade diferente

Meu laptop originalmente tinha um SSD M.2 de 128 GB e um disco rígido de 1 TB. O sistema está configurado como inicialização dupla com Windows. A partição /boot/efi está em /dev/nvme0m1p1 e a partição raiz original está em /dev/sda3.

Compactei a imagem do nvme0n1 original e troquei o nvme0n1 por um SSD M.2 de 1 TB. e clonou a imagem original para o novo SSD. O resultado foi que eu poderia inicializar no Windows ou na versão /dev/sd3 do Ubuntu assim que a clonagem fosse concluída.

Em seguida, criei uma nova partição ext4, nvme0n1p6, e clonei a partição /dev/sda3 nela. Esqueci de alterar a partição UIDD após a clonagem e na primeira vez que executei o update-grub2. Posteriormente, alterei a partição UIDD usando o gparted, executei novamente o update-grub2 e verifiquei se ele havia encontrado a imagem no novo UIDD para/dev/nvme0n1p6.

Depois de passar 6 horas descobrindo que havia inserido um espaço em uma instrução UIDD= no /etc/fstab da nova imagem, consegui inicializar nessa nova imagem (minhas habilidades de revisão podem ser melhoradas). Depois que a imagem foi carregada, executei update-grub2 novamente para mover a seleção do novo ubuntu para o topo e padrão no novo grub.cfg.

Finalmente, para o problema: após a reinicialização, o menu grub exibido ainda é o grub.cfg da pasta /dev/sda3/boot/grub original.

copiar o grub.cfg gerado para /nvme0n1p6 para /sda3 permite que o novo grub.cfg seja exibido em inicializações subsequentes.

renomear o arquivo grub.cfg em /sda3 faz com que o grub pare na linha de comando na reinicialização. Sair da linha de comando faz com que o sistema operacional Windows seja carregado. Posso corrigir o problema com uma imagem USB ao vivo que me permite restaurar um grub.cfg válido em/sda3.

Suspeito que o comando update-grub não seja o único comando que preciso executar. Meu palpite é que as imagens armazenadas em/nvme0n1p1 precisam ser atualizadas. Isso é feito executando algum tipo de instalação do grub?

Responder1

Isenção de responsabilidade: posso estar totalmente errado.

Pelas suas informações, você parece ter uma instalação do Windows e uma instalação do Ubuntu no seu disco rígido ( /dev/sda3). Vamos chamar essa instalação do disco rígido de H. Agora, você precisava mover sua instalação para o SSD e, assim, criou uma nova partição SSD e clonou a instalação do disco rígido para essa partição SSD (prefiro fazer uma nova instalação, mas isso está fora do tópico da sua pergunta). Vamos chamar essa instalação de SSD de S.

O problema do AFAIK é que você não instalou o grub após concluir a instalação do S. Portanto, o grub instalado no seu sistema ainda pertence à instalação H [1]. Assim ainda estaria utilizando o grub.cfgpresente na instalação H.

Para fazer o grub usar o grub.cfgS de sua instalação, você terá que instalar o grub de S na partição EFI.

Inicialize para a instalação S e execute:

$ sudo grub-install dummy
$ sudo update-grub

Deixe-me saber se entendi mal o seu cenário ou se você encontrar erros nos comandos.


Referências:
Como o carregador EFI do grub encontra o boot.cfg correto?

Responder2

Agora que tenho o Ubuntu rodando a partir do novo SSD M.2, revisarei o método que usei para substituir um SSD de 128 GB contendo um carregador de inicialização dupla instalado pelo grub no nvme0n1p1 por um SSD de 1 TB em um laptop que possui um M.2 porta. Para maior clareza, a maior parte do Windows 10 reside em várias partições do nvme0 e o Ubuntu residia originalmente na partição do disco rígido em sda3. Quando inicializado, o nvme0n1p1 é montado em /boot/efi.

  1. Faça a imagem de nvme0n1 a. Pessoalmente, não tomei nenhuma medida para reduzir as partições a fim de reduzir o tamanho da imagem. Se isto for considerado necessário, outras pessoas fornecerão orientação sobre como fazê-lo.

    b. Grave a imagem em outra unidade, interna ou externa. Eu usei:

    dd if=/dev/nmve0n1 | gzip -c > pathToOtherDeviceFolder/nvme0n1.img

    A -copção faz com que o gzip grave na saída padrão que é então direcionada para o arquivo.

  2. Teste a inicialização a partir de uma unidade USB contendo uma imagem ao vivo, ubuntu live ou gparted live. Tive problemas mais tarde porque não testei a imagem ao vivo com os monitores externos que normalmente uso com o laptop desconectado do laptop. Demorou alguns dias tentando seguir as próximas etapas sem nenhum monitor externo conectado, pois era a ausência do monitor externo (ou Ethernet) que estava impedindo a inicialização da unidade USB ativa, em vez do resultado das próximas etapas. Não me lembro de conectar a Ethernet para fazer a inicialização bem-sucedida, mas poderia ter feito isso junto com os monitores externos. Em ambos os casos, há uma dependência das imagens ao vivo que não entendo, mas que poderia contornar. Depois de inicializado, certifique-se de montar a unidade que contém a imagem que deseja mover.

  3. Desligue e substitua o SSD M.2 original pelo novo.

  4. Mover imagem para novo nvme0n1

    a. Inicialize a partir do disco ativo USB. (Você já testou isso)

    b. monte a unidade que contém a imagem que você deseja mover. (Novamente, testado)

    c. mova a imagem para o novo nvme0n1. Eu usei:

    gunzip -c pathToOtherDeviceFolder/nvme0n1.img | dd of=/dev/nvme0n1

    Novamente, o gunzip grava no stdout, que é canalizado para o dd para gravar no novo dispositivo.

  5. Mova o Ubuntu para a nova partição no novo nvme0n1 Aqui eu escolhi reiniciar para a imagem original do Ubuntu no sda3. Isso não é problema porque o novo nvme0n1 é um clone do original. Não conheço nenhum motivo pelo qual essas etapas não possam ser executadas enquanto ainda estiver operando no ambiente USB ativo, embora não tenha experiência em fazê-lo.

    a. crie uma nova partição ext4 em nvme0n1 usando gparted ou outra ferramenta. Vou me referir a esta partição como nvme0n1p6 daqui para frente.

    b. clone a imagem do Ubuntu em/dev/sda3 (no meu caso) em/dev/nvme0n1p6. Eu usei: dd if=/dev/sda3 of=/dev/nvme0n1p6

    c. após a clonagem, use o gparted ou outra ferramenta para alterar o UIDD da partição de nvme0n1p6 para um UIDD exclusivo.

  6. Prepare o novo nvme0n1p6 para operação.

    a. monte /dev/nvme0n1p6.conf Usei /mnt como ponto de montagem.

    b. modifique /etc/fstab para montar o UIDD para nvme0n1p6 como /. Observe que nvme0n1p1 ainda deve ser montado como /boot/efi. Certifique-se de que a entrada modificada esteja formatada corretamente. Um espaço extra depois UIDD=me custou várias horas me perguntando o que fiz de errado.

    c. nvme0n1p6 pode ser desmontado neste momento, mas acho que omiti esta etapa.

  7. Se ainda estiver executando a partir do disco USB ao vivo, reinicie a imagem original do Ubuntu (a minha está em/dev/sda3)

  8. atualize as opções do menu grub:

sudo update-grub2

Observe se a imagem original, a imagem do Windows e a nova imagem do Ubuntu em nvme0n1p6 são encontradas e adicionadas.

  1. reinicie e enquanto estiver no menu de inicialização do grub selecione a nova imagem do Ubuntu.

  2. Uma vez na nova imagem, execute:

    a. sudo grub-install Isso modifica os arquivos grub em /boot/efi (/dev/nvme0n101) para ver /dev/nvme0n1p6/boot/grub em vez do local em sda3 para o menu grub, grub.cfg.

    b. `sudo update-grub' Substituirá o /boot/grub/grub.cfg clonado por um novo arquivo que coloca a nova imagem no topo e como padrão e com a imagem original em sda3 como uma seleção alternativa.

Agora você deve conseguir inicializar qualquer uma das três imagens. Observe que até que grub-installseja executado na nova imagem, a imagem original não poderá ser removida da máquina, pois o grub não conseguirá encontrar seu arquivo de configuração de menu.

Esperançosamente, não omiti nenhuma etapa ou me lembrei mal delas e que isso funcione para você.

informação relacionada