我有一个远程服务器(无法对其进行物理访问),我需要在本地克隆。因此,我将辅助 HD 连接到本地 Linux 服务器,创建分区 boot、swap 和 root,并 rsync 远程服务器上的所有数据。复制过程很顺利,但是当我尝试激活 grub 以便新驱动器可启动时,会发生这种情况(远程服务器具有 LVM 分区,而在本地驱动器上我刚刚正常创建启动、交换和根目录):
我这样安装复制的图像:
mount /dev/sdb3 /mount && mount /dev/sdb1 /mount/boot/
mount --bind /dev /mount/dev && mount --bind /dev/pts /mount/dev/pts && mount --bind /proc /mount/proc && mount --bind /sys /mount/sys
chroot /mount
然后我尝试安装 grub:
grub-install /dev/sdb
找不到设备/dev/mapper/VolGroup-lv_root
文件/boot/grub/stage1
读取不正确。
(我尝试启动到该驱动器,但收到“grub救援”提示)
/dev/mapper/VolGroup-lv_root
是远程服务器的根分区。我不知道我需要在这里做什么。我尝试删除该/boot/grub/
文件夹并尝试重新安装 grub,但还是发生了同样的情况。我如何告诉 grub 现在是根分区,/dev/sda3
或者您将如何解决这个问题?
grub.conf 文件:
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.32-573.7.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-573.7.1.el6.x86_64 root=/dev/sda1
initrd /initramfs-2.6.32-573.7.1.el6.x86_64.img
克隆驱动器上的 fdisk -l 输出:
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 66 524288 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2 66 2155 16777216 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sdb3 2155 41774 318241792 83 Linux
Partition 3 does not end on cylinder boundary.
答案1
您需要更新文件/etc/fstab
和 GRUB 配置以反映从 LVM 到非 LVM 的更改。如果您使用原始 GRUB(即 GRUB 的更好版本),您只需在/boot/grub/grub.conf
.如果您使用 GRUB2(即烦人的 GRUB 版本),您将需要更改一堆最有可能位于/etc/defaults/grub/
.可能值得花时间在整个目录中搜索/etc
“VolGroup”之类的内容,只是为了查看引用所有 LVM 设备的位置,因为可能有其他服务引用实际设备而不是挂载(具体来说,udev? )。
grep -r 'VolGroup' /etc