Instale o grub no contêiner LV para VM

4

Estou com dificuldade para instalar o grub no contêiner LVM LV para uma VM. Esta é a tabela de partições:

# parted /dev/mgtvg/linux2os print
Model: Linux device-mapper (linear) (dm)
Disk /dev/dm-7: 129GB  
Sector size (logical/physical): 512B/512B
Partition Table: msdos 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  6469MB  6468MB  primary   ext3         boot
 2      6469MB  11.8GB  5369MB  primary   xfs
 3      11.8GB  17.2GB  5369MB  primary   xfs
 4      17.2GB  129GB   112GB   extended               lba
 5      17.2GB  22.6GB  5369MB  logical   xfs

A partição um contém o sistema de arquivos raiz (não há / boot). Tentando instalar o grub:

# grub --device-map=/dev/null


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub> device (hd0) /dev/mgtvg/linux2os
device (hd0) /dev/mgtvg/linux2os
grub> root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup
setup

Error 1: Unrecognized device string
grub> 

Este é o arquivo grub.conf do LV que contém a VM:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
serial --unit=1 --speeed=19200
terminal --timeout=8 console serial
title CentOS (2.6.32-279.22.1.el6.x86_64)
        root (hd0,0)   
        kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=/dev/sda1
        initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img
title CentOS (2.6.32-279.el6.x86_64)
        root (hd0,0)   
        kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/sda1
        initrd /initramfs-2.6.32-279.el6.x86_64.img

O que mais eu preciso?

    
por vamfoom 08.05.2013 / 05:50

2 respostas

1

Você deseja referenciar o LV pelo nome e não pela partição física em que está.

As coisas estão estruturadas da seguinte forma. Eu tenho 3 coisas:

  • Um volume físico (PV)
  • Um grupo de volumes (VG)
  • Um volume lógico (LV)

No meu laptop, tenho o seguinte:

$ pvs
  PV         VG         Fmt  Attr PSize   PFree
  /dev/sda6  vg_grinchy lvm2 a-   304.22g    0 

NOTA: PV = / dev / sda6, VG = vg_grinchy

$ lvs
  LV      VG         Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv_home vg_grinchy -wi-ao 248.53g                                      
  lv_root vg_grinchy -wi-ao  50.00g                                      
  lv_swap vg_grinchy -wi-ao   5.69g          

NOTA: Então, meu VG (vg_grinchy) contém 3 LVs (lv_home, lv_root e lv_swap).

Você pode confirmar isso com o comando vgs :

$ vgs
  VG         #PV #LV #SN Attr   VSize   VFree
  vg_grinchy   1   3   0 wz--n- 304.22g    0 

NOTA: Veja que temos #LV = 3 e #PV = 1.

Agora, se usarmos o comando lvdisplay , poderemos ver os nomes completos dos nossos LVs:

$ lvdisplay |grep "LV Name"
  LV Name                /dev/vg_grinchy/lv_root
  LV Name                /dev/vg_grinchy/lv_home
  LV Name                /dev/vg_grinchy/lv_swap

Estes são os nomes que você deve usar para especificar qual LV montar em seu arquivo grub.cfg .

exemplo

Abaixo está uma das minhas estrofes do meu arquivo grub.cfg .

title Fedora (2.6.35.14-106.fc14.x86_64)
    root (hd0,4)
    kernel /vmlinuz-2.6.35.14-106.fc14.x86_64 ro root=/dev/mapper/vg_grinchy-lv_root rd_LVM_LV=vg_grinchy/lv_root rd_LVM_LV=vg_grinchy/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=l
atarcyrheb-sun16 KEYTABLE=us rhgb quiet
    initrd /initramfs-2.6.35.14-106.fc14.x86_64.img

Com certeza você pode ver que meu kernel está sendo transmitido da seguinte forma:

root=/dev/mapper/vg_grinchy-lv_root
    
por 08.05.2013 / 06:54
1

Você pode estar faltando os arquivos do dispositivo para essas partições. Em outras palavras:

kpartx -a -v /dev/mgtvg/linux2os

Isso deve criar algo como:

/dev/mapper/mgtvg-linux2os1
/dev/mapper/mgtvg-linux2os2

...

Depois disso, você poderá fazer

grub-install /dev/mapper/mgtvg-linux2os

Isto irá resolver (hd0,0) ou (hd0, msdos1) em / dev / mapper / mgtvg-linux2os1, e então as coisas podem realmente funcionar.

Note que eu também faria tudo isso dentro de um chroot. O chroot / dev precisa ter os nós de dispositivo relevantes para VMs da máquina principal, assim como / proc. Dessa forma você vai ter certeza de não mexer com o grub dos pais.

    
por 16.02.2015 / 12:32

Tags