Como instalar o GRUB em uma nova unidade?

3

Eu tenho uma caixa virtual rodando com o CentOS.

Anexei um novo disco virtual à VM existente do CentOS e agora estou tentando instalar o GRUB neste novo disco conectado.

Mais tarde, apresentarei uma segunda VM com um disco rígido inicializável recém-preparado com um sistema de arquivos raiz e um kernel personalizados.

Eu tentei as seguintes etapas:

  • Anexou um novo disco virtual à máquina do CentOS existente.
  • Criei uma nova partição com fdisk /dev/sdb . Durante o particionamento, escolhi a partição primária de opções, a partição número 1 e outras opções padrão.
  • Formatou o disco com mkfs.ext3 /dev/sdb1 .
  • Montou o disco em /media/new_drive .
  • GRUB instalado grub-install /dev/sdb1 --root-directory=/media/new_drive/ .

Depois disso, a segunda VM com o disco rígido recém-preparado não inicializou; Eu recebi o erro: could not read from the boot medium . Parece que o MBR não é atualizado após grub-install , mas posso ver o GRUB instalado em /boot/grub na nova unidade.

Mas o pior é que ele corrompeu meu GRUB do CentOS existente: A VM do CentOS trava mostrando uma tela preta com o único texto sendo GRUB .

Por que grub-install /dev/sdb1 não modifica o MBR de sdb1? Este não é o caminho certo para instalar o GRUB na nova unidade?

    
por Renjith 19.03.2015 / 14:43

2 respostas

4

Eu não sou um especialista do grub2 (desculpe), mas tente adicionar --skip-fs-probe à sua linha de instalação do grub. Descobri que isso impede a criação de /boot/grub/device.map , o que pode fazer com que a inicialização seja iniciada pelo grub. Eu acho que sem esse parâmetro o grub-install, em vez de fazer o que você diz, acha que é mais inteligente do que você, e pode fazer algo diferente.

Outra coisa é ter certeza de que você está usando o direito de instalar o grub (ou seja, para o grub2 e não para o grub original). Isto não é um problema se você estiver dentro do Centos, mas com o SystemRecoveryCD ambas as versões estão disponíveis e então você tem que usar grub2-install . Eu aprendi da maneira mais difícil ...

E como @wurtel apontou (kudos), você deve especificar uma unidade e não uma partição. O Grub2 instala no setor 0 de toda a unidade de disco, e este 'stub' é o que é executado na inicialização, mas ele precisa saber o paradeiro no disco que deve instalar os arquivos para o próximo estágio de inicialização - é isso que o co_de % parâmetro é para. (Eu acho).

Lendo --root-directory e googling, vejo que man grub-install não é realmente destinado ao grub2 versões 1.99 ++, embora funcione na minha experiência. Você deve usar --root-directory e se referir ao diretório de boot atual, então isso lhe daria:

grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot
    
por 19.03.2015 / 14:48
0

Foi assim que eu mudei uma instalação Debian consistindo de uma partição de inicialização /boot e uma partição raiz / para uma nova unidade e a fiz inicializável usando GNU GRUB :

Partições clone

  • Usando o CD interativo do GParted , crie a partição raiz e de inicialização na nova unidade.
  • Usando um console raiz no GParted, monte a partição de inicialização antiga (digamos que é /dev/sda1 ) e a nova partição ( /dev/sdb1 ): mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
  • Copie os dados da partição de inicialização antiga para a nova: cp -afv /mnt/oldBoot /mnt/newBoot . Explicação de cp -afv :
    • a significa "arquivo", o que significa:
    • não desreferencia links
    • copie recursivamente (como -R )
    • preservar todos os atributos (registro de data e hora, proprietário, permissão)
    • f : force, se um arquivo de destino existente não puder ser aberto, remova-o e tente novamente
    • v : detalhado, explique o que está sendo feito
  • Isso gerará alguma saída em seu console, mostrando a você qual arquivo está copiado no momento e se cp faz progresso
  • Monte e copie os arquivos da sua antiga partição raiz para a nova:
    • Por segurança: umount /mnt/oldBoot && umount /mnt/newBoot
    • Monte a antiga e a nova partição raiz (supondo que seja /dev/sda2 e /dev/sdb2 ): mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
    • Copie os dados da partição raiz antiga para a nova partição raiz: cp -afv /mnt/oldRoot /mnt/newRoot
  • Edite a tabela do sistema de arquivos que define quais partições são montadas na inicialização (eu usarei o Vim para isso):

    • vi /etc/fstab
    • Você notará que suas partições antigas são referenciadas aqui. Use os UUIDs das novas partições, em vez
    • Você pode inserir temporariamente todos os UUIDs no fstab para facilitar a cópia e colagem com :r !blkid
    • Use os UUIDs de suas novas partições para alterar as entradas no fstab. Eles devem se parecer com algo assim:

      # <file system> <mount point> <type> <options> <dump> <pass> # Root partition UUID=76fd1ffd-fb96-4ab4-be1a-42f8e9223983 / ext4 errors=remount-ro 0 1 # Boot partition UUID=e560e29e-8752-4b83-b1ee-4b86c0009f0b /boot ext2 defaults 0 2

    • Remova a saída de blkid do fstab que você inseriu anteriormente com :r !blkid

Instalar o GRUB

  • Monte os sistemas de arquivos virtuais do CD ao vivo do GParted:

    mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys

  • Disponibilize os utilitários do GRUB do Live CD do GParted para a partição raiz: mount --bind /usr/ /mnt/newRoot/usr

  • Monte a partição de inicialização na partição raiz, pois o GRUB armazenará sua configuração em /boot : mount /dev/sdb1 /mnt/newRoot/boot
  • Use chroot /mnt/newRoot para tornar a nova partição raiz temporariamente a raiz do sistema de arquivos
  • Crie um arquivo de configuração do GRUB em /boot/grub/grub.cf usando update-grub2
  • Instale o GRUB na nova unidade: grub-install /dev/sdb . Você não deve especificar um número de partição aqui
  • Retornar ao sistema de arquivos do CD ao vivo do GParted: exit
  • Desmontar partições: umount /mnt/newRoot/*
  • Máquina de desligamento
  • Se você tiver várias unidades conectadas, verifique se a nova unidade vem em primeiro lugar na ordem de inicialização
  • Iniciar máquina

Estas instruções são inspiradas em as de oaktreepeak.com e zeasite.com .

Alternativamente, você pode dar Clonezilla para tentar alcançar o mesmo.

    
por 12.01.2018 / 13:59