VMのLVMLVコンテナに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
他に何が必要ですか?
これらのパーティションのデバイスファイルが欠落している可能性があります。言い換えると:
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には、親マシンのVM関連デバイスノードと/ procが必要です。そうすれば、親のグラブを台無しにしないようにすることができます。
LVは、それが存在する物理パーティションではなく、その名前で参照する必要があります。
物事は次のように構成されています。私には3つのことがあります:
私のラップトップには次のものがあります。
$ 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であることがわかります。
コマンドlvdisplay
を使用すると、LVのフルネームを確認できます。
$ 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
これらは、grub.cfg
ファイルにマウントするLVを指定するために使用する必要がある名前です。
以下は、私のgrub.cfg
ファイルからの私のスタンザの1つです。
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