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 / unix / Perguntas / 679870
Accepted
Nikita Kipriyanov
Nikita Kipriyanov
Asked: 2021-12-03 00:52:08 +0800 CST2021-12-03 00:52:08 +0800 CST 2021-12-03 00:52:08 +0800 CST

grub2-install lança vários erros em vez de instalar, como proceder?

  • 772

O sistema é o CentOS 7. Ele foi instalado em dois discos rígidos com MD RAID, um drive morreu. Decidimos mudar para dois SSDs de tamanho apenas um pouco maior. Quando eles foram conectados e o sistema foi inicializado, sdaparecia ser um disco rígido antigo com duas partições, sda1participa md126de 500M que é /boot, e sda2participa de md127qual é o LVM PV que contém todo o resto. sdbe sdcsão novos SSDs.

Comecei a mover arrays de discos rígidos para SSDs. Eu particionei os novos dispositivos como os antigos e os adicionei em arrays, então os arrays cresceram para conter 3 dispositivos:

mdadm --add /dev/md126 /dev/sd[bc]1
mdadm --add /dev/md127 /dev/sd[bc]2
mdadm --grow -n 3 /dev/md126
mdadm --grow -n 3 /dev/md127

Depois de algum tempo, verifiquei que todos os RAIDs estavam totalmente sincronizados, removi o disco rígido dos arrays e os configurei de volta para conter 2 dispositivos cada:

mdadm -f /dev/md126 /dev/sda1
mdadm -r /dev/md126 /dev/sda1
mdadm -f /dev/md127 /dev/sda2
mdadm -r /dev/md127 /dev/sda2
mdadm --grow -n 2 /dev/md126
mdadm --grow -n 2 /dev/md127

Ambas as matrizes estão limpas. Fui instalar o bootloader em dispositivos recém-instalados:

[root@master ~]# grub2-install /dev/sdc
Installing for i386-pc platform.
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Installation finished. No error reported.

Não fiquei muito feliz ao ver esses avisos e ainda não tenho certeza de que foi instalado nos dispositivos corretos. Verifiquei /boot/grub2/device.map, se referia a unidades antigas, então consertei, agora é:

# this device map was generated by anaconda
(hd0)      /dev/sdb
(hd1)      /dev/sdc
(hd2)      /dev/sda

A unidade restante será eventualmente removida e, esperançosamente, reutilizada, então eu deveria limpá-la de todos os dados (para não vazá-la):

dd if=/dev/zero of=/dev/sda bs=8k

Terminou, então tentei novamente reinstalar o grub nos SSDs, só para ter certeza:

[root@master ~]# grub2-install /dev/sdb
Installing for i386-pc platform.
grub2-install: error: disk `mduuid/85faee0a366da795c6ac33a7c4a48ae8' not found.

A primeira linha apareceu instantaneamente, a mensagem de erro foi atrasada em 10 segundos. O mesmo para o segundo SSD.

Se eu fizer o /dev/sda1novamente e adicioná-lo ao array, aumentando-o adequadamente para 3 dispositivos, ele mostrará:

[root@master /]# grub2-install /dev/sdb
Installing for i386-pc platform.
grub2-install: error: unknown filesystem.

Tenho certeza de que contém um sistema de arquivos de inicialização válido. Separei do RAID e verifiquei, está lá:

[root@master /]# blkid -p /dev/sda1
/dev/sda1: UUID="85faee0a-366d-a795-c6ac-33a7c4a48ae8" UUID_SUB="bc7af7ca-09f2-f533-3a79-53d98f5dd09a" LABEL="master.service.intrid.ru:boot" VERSION="1.0" TYPE="linux_raid_member" USAGE="raid" PART_ENTRY_SCHEME="dos" PART_ENTRY_TYPE="0xfd" PART_ENTRY_FLAGS="0x80" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="2048" PART_ENTRY_SIZE="1046528" PART_ENTRY_DISK="8:0" 
[root@master /]# tune2fs -l /dev/md126 | grep feat
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
[root@master /]# mdadm -f /dev/md126 /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md126
[root@master /]# mdadm -r /dev/md126 /dev/sda1
mdadm: hot removed /dev/sda1 from /dev/md126
[root@master /]# tune2fs -l /dev/sda1 | grep feat
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize

Muito estranho.

Agora estou preso. O sistema funciona bem, todos os sistemas de arquivos estão bem, atende clientes. Por exemplo, /bootestá montado e está disponível, eu desmontei e verifiquei, depois montei novamente.

A Internet está cheia de sugestões para reiniciar o sistema a partir da mídia ao vivo de resgate, ou até mesmo como corrigir isso depois que o grub foi colocado no shell de resgate na reinicialização. Alguns dos recursos que verifiquei:

  • https://ahelpme.com/linux/grub2-grub-install-error-disk-mduuid-not-found-even-after-the-partition-has-bios_grub-on/
  • erro grub2-install - disco não encontrado (que não é respondido, a propósito)
  • https://linoxide.com/fix-grub-filesystem-type-unknown-error-on-centosredhat/
  • https://www.linuxquestions.org/questions/linux-newbie-8/centos-7-error-unknown-filesystem-grub-rescue-4175687414/

No entanto, ainda não o reiniciei e não quero, até ter certeza de que ele será inicializado, porque é remoto e as pessoas ao redor não poderão consertar o bootloader. Já troquei dispositivos assim várias vezes antes, não me lembro desses problemas, porém isso sempre foi feito com Gentoo ou Debian que costumam ter softwares mais recentes que o CentOS.

Então, é possível corrigir o bootloader do sistema, remotamente, sem inicializar a mídia de recuperação? Provavelmente, dizendo ao grub para não verificar nada e apenas escrever as coisas necessárias em locais apropriados na mídia?

Ajudará se eu despejar um /bootsistema de arquivos, recriar a matriz que o contém do zero e gravar a imagem de volta? Como faço para recriar o initramfs depois?

centos grub2
  • 1 1 respostas
  • 386 Views

1 respostas

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2021-12-05T03:49:18+08:002021-12-05T03:49:18+08:00

    Depois de algum tempo tentando e pensando, voltei ao primeiro artigo que mencionei na pergunta: https://ahelpme.com/linux/grub2-grub-install-error-disk-mduuid-not-found-even-after-the -partition-has-bios_grub-on/

    O autor acha que existem algumas estruturas sobre array no kernel que são reconstruídas após a reinicialização. Em que momento, precisamente? Provavelmente durante a descoberta e montagem. E é verdade, a remontagem da matriz de inicialização ajudou. Foi assim que resolvi isso.

    Primeiro desmontamos e desmontamos o array:

    [root@master ~]# umount /boot
    [root@master ~]# mdadm --stop /dev/md126
    mdadm: stopped /dev/md126
    [root@master ~]# cat /proc/mdstat
    Personalities : [raid1] 
    md127 : active raid1 sdc2[4] sdb2[3]
          487731200 blocks super 1.2 [2/2] [UU]
          bitmap: 2/4 pages [8KB], 65536KB chunk
    
    unused devices: <none>
    

    mdstatnão mostrou nenhuma matriz de inicialização, também li dmesgneste momento para ter certeza de que tudo estava correto:

    [243050.619210] md126: detected capacity change from 535756800 to 0
    [243050.619260] md: md126 stopped.
    [243050.619271] md: unbind<sdb1>
    [243050.629871] md: export_rdev(sdb1)
    [243050.630093] md: unbind<sdc1>
    [243050.635890] md: export_rdev(sdc1)
    

    Em seguida, remontando-o de volta:

    [root@master ~]# mdadm --assemble --run /dev/md126 /dev/sdb1 /dev/sdc1
    mdadm: /dev/md126 has been started with 2 drives.
    

    Observe que ele foi montado automaticamente, dmesgé:

    [243124.197117] md: bind<sdc1>
    [243124.197468] md: bind<sdb1>
    [243124.200993] md/raid1:md126: active with 2 out of 2 mirrors
    [243124.201010] md126: detected capacity change from 0 to 535756800
    [243124.201461]  md126: unknown partition table
    [243124.238232]  md126: unknown partition table
    [243124.246330] EXT4-fs (md126): mounted filesystem with ordered data mode. Opts: (null)
    

    Agora instalou direitinho:

    [root@master ~]# LANG=C grub2-install /dev/sdb
    Installing for i386-pc platform.
    Installation finished. No error reported.
    [root@master ~]# LANG=C grub2-install /dev/sdc
    Installing for i386-pc platform.
    Installation finished. No error reported.
    

    Sem reiniciar!

    • 1

relate perguntas

  • comando systemctl não funciona no RHEL 6

  • Por que meu switch não está obtendo um endereço do pool especificado

  • Criando menus personalizados na guia do menu Aplicativos no CentOS7 GNOME

  • Roteador estranho funciona com centos 6 [fechado]

  • Configuração do GRUB para reconhecer diferentes ambientes de desktop (instalações) da mesma distribuição Linux

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

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