Como verificar em quais unidades o grub2 realmente instalou um MBR?


17

Estou em um sistema Debian / Squeeze (com um histórico que remonta a pelo menos Woody) que foi atualizado para o grub2 como parte da atualização do Squeeze. Tudo funciona bem, mas estou prestes a mexer com a configuração do disco.

Atualmente, a máquina executa duas unidades de 80 GB com partições RAID1-ed /, / home e / boot (há outro par de unidades com um "/ data" RAID1-ed e algumas trocas, caso alguém esteja se perguntando onde está a troca. , mas não estou tocando neles).

Adicionei 2 SSDs de 130 GB, particionei-os para serem pelo menos tão grandes quanto as partições nas unidades de 80 GB e pretendo mudar para as novas unidades SSD aumentando os RAID1s para incluí-los, aguardando sincronização e removendo os antigos unidades a partir das matrizes para restarem apenas os SSDs (e depois aumentar os sistemas de arquivos). Mas mdadm / ext3 wrangling não é o que esta pergunta é sobre ...

Isso me deixará com 2 unidades obsoletas de 80GB (IDE) que eu quero remover da máquina. Minha preocupação é que removê-los levará algum MBR crucial com eles. Como garantir que a máquina permaneça inicializável?

Mais especificamente:

  • Quando fiz a atualização do Squeeze, lembro que havia alguma opção apresentada sobre quais unidades o grub2 deveria instalar (eu fui com o padrão, que era todas as unidades). Os SSDs não estavam na máquina no momento; como posso executar novamente isso para instalar o grub nos MBRs SSD? (Eu estou supondo que é um dpkg-reconfigure de algum pacote).

  • Como posso encontrar em quais unidades o grub2 pensa que está instalado? Boa sorte, existem quase 200 arquivos em / boot / grub / nos dias de hoje! Onde olhar ? Além disso, parece um pouco estranho o fato de o /boot/grub/device.map.auto listar apenas três unidades atualmente (2 dos 80GBs, mas apenas um dos outros pares de unidades e nenhum dos SSDs). Como faço para atualizar isso? ( Atualização: isso era um arenque vermelho; device.map.auto parece ser uma relíquia de anos atrás; device.map parecia sensato em uma atualização do grub-mkdevicemap. Acho que minha paranóia nessa área se origina do BIOS de um mobo antigo que reordene a ordem do dispositivo vista pelo GRUB por capricho).

Resultado: tudo correu bem e agora tenho as duas antigas unidades IDE de 80 GB prontas para uso e um sistema de inicialização rápido e rápido executando SSDs RAID1-ed com todos os sistemas de arquivos redimensionados para seus novos tamanhos de partição. A outra "peça que faltava no quebra-cabeça do Grub" que eu estava procurando era dpkg-reconfigure grub-pcquais solicitações para quais discos manter um MBR ativado. A resposta de Aaron realmente fez muito para me garantir que isso estava funcionando como o esperado, portanto, aceitando essa resposta.

Respostas:


17

O MBR tem 512 bytes, portanto, é uma maneira rápida de verificar se o GRUB está lá ...

dd if=/dev/sda bs=512 count=1 | xxd

Isso despeja o MBR, vejo o "GRUB" no meu no byte 0x17F = 383.

dd if=/dev/sda bs=1 count=4 skip=383

Quando faço isso, ele imprime ' GRUB' seguido da ddsaída.

Você pode agrupar isso em um forloop bash ou em algo para percorrer mais unidades. se você não quiser fazer isso manualmente.


4
Apenas uma pequena adição - como é provável que a posição do GRUB mude de versão para versão, pode-se usar dd if=/dev/sda bs=1 count=512 | grep -aob GRUB. Isso retornará a posição do marcador dentro do setor de inicialização.
Alessandro Santini

16

Existem várias etapas no processo de inicialização (estou descrevendo um BIOS de PC tradicional):

  1. O BIOS lê o primeiro setor (512 bytes) do disco de inicialização.
  2. O código neste primeiro setor lê mais dados e códigos em um local fixo através da interface do BIOS. Essa interface do BIOS expõe apenas dois discos rígidos: o disco 0 é o local onde o primeiro setor foi lido e o disco 1 é outro disco que não é facilmente previsível se você tiver mais de dois. O setor de inicialização contém um byte que indica em qual disco rígido estão os dados adicionais; este é o disco que contém /boot/grub.
  3. O código carregado no estágio anterior compreende partições, sistemas de arquivos e outras noções de alto nível. Os dados incluem uma localização do sistema de arquivos (isto é, uma string semelhante (hd0)/boot/grub) que determina onde encontrar grub.cfge mais módulos do Grub.
  4. grub.cfg é executado, normalmente para mostrar um menu e inicializar um sistema operacional.

O setor de inicialização é gerado por grub-setup, normalmente chamado grub-install. O setor de inicialização termina em qualquer disco que você especificou (na sintaxe do Linux) na linha de comando grub-installou grub-setup. Você pode verificar se possui um setor de inicialização em um disco executando file -s /dev/sda. Como você está adicionando um novo disco e deseja inicializá-lo, é necessário executar grub-installo novo disco. Executar grub-installvárias vezes no mesmo disco é inofensivo.

A parte difícil está na etapa 2 acima. Se possível, coloque o Grub (ou seja, o /boot/grubdiretório) no disco de inicialização do BIOS (ou, aproximando-o da outra direção, diga ao BIOS para inicializar a partir do disco onde /boot/grubestá). É aqui que device.mapentra em jogo. Verifique se (hd0)está mapeado para o disco que contém /boot/grube execute grub-installno disco.

Se seus dois discos estiverem em uma configuração de software RAID-1, você terá setores de inicialização idênticos. Esse é o comportamento desejável: se um disco que é o disco de inicialização do BIOS falhar, a inicialização pelo outro funcionará (pois eles contêm os mesmos bytes nos mesmos locais relevantes). Se você espelhou apenas determinadas partições, a instalação de um setor de inicialização afeta apenas um dos discos. Você deve executar grub-installnovamente no segundo disco, depois de alterar device.mappara associar (hd0)ao disco que contém a segunda cópia espelhada de /boot/grub.

O passo 3 é bastante complexo, mas geralmente funciona imediatamente. Na etapa 4, o Grub localiza sistemas de arquivos por UUID ou procura por arquivos nomeados, para que você não precise mais se preocupar com as várias maneiras de designar discos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.