VM의 LV 컨테이너에 grub 설치

VM의 LV 컨테이너에 grub 설치

가상 머신용 LVM LV 컨테이너에 grub을 설치하는 데 문제가 있습니다. 다음은 파티션 테이블입니다.

# 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

파티션 1에는 루트 파일 시스템(/boot 없음)이 포함되어 있습니다. 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> 

grub.conf다음은 VM이 포함된 LV의 파일 입니다 .

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

또 무엇이 필요합니까?

답변1

LV가 상주하는 물리적 파티션이 아닌 이름으로 LV를 참조하려고 합니다.

사물의 구조는 다음과 같습니다. 나는 세 가지를 가지고 있습니다 :

  • 물리적 볼륨(PV)
  • 볼륨 그룹(VG)
  • 논리 볼륨(LV)

내 노트북에는 다음이 있습니다.

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

노트: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          

노트:따라서 내 VG(vg_grinchy)에는 3개의 LV(lv_home, lv_root 및 lv_swap)가 포함되어 있습니다.

다음 명령으로 이를 확인할 수 있습니다 vgs.

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

노트:#LV = 3, #PV = 1이라고 나와 있습니다.

이제 다음 명령을 사용하면 LV의 전체 이름을 볼 수 있습니다 lvdisplay.

$ 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

파일에 설치할 LV를 지정하려면 이 이름을 사용해야 합니다 grub.cfg.

아래는 내 파일의 일부입니다 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

물론 내 커널이 다음을 전달하는 것을 볼 수 있습니다.

root=/dev/mapper/vg_grinchy-lv_root

답변2

이러한 파티션에 대한 장치 파일이 누락되었을 수 있습니다. 다시 말해서:

kpartx -a -v /dev/mgtvg/linux2os

이렇게 하면 비슷한 내용이 생성됩니다.

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

...

그 후에는 할 수 있을 것 같습니다.

grub-install /dev/mapper/mgtvg-linux2os

그러면 (hd0,0) 또는 (hd0,msdos1)이 /dev/mapper/mgtvg-linux2os1로 확인되고 실제로 작동할 수 있습니다.

이 모든 작업은 chroot에서도 수행됩니다. chroot /dev에는 상위 시스템과 /proc의 VM 관련 장치 노드가 있어야 합니다. 이렇게 하면 부모님의 음식을 망치지 않을 것입니다.

관련 정보