我编辑了 Linux 系统的“grub.conf”文件,更改了其中的“timeout”值,并添加了其他行,以解决“xm console guest”命令的超时问题。我愚蠢地认为 grub.conf 中的这个“timeout”参数实际上与“xm console timeout”有关,并将其更改为非常大的值。所以这给我带来了一个大问题。现在,当我重新启动 Linux 机器时,即使手动选择要启动的内核,它也会挂在启动屏幕上。
所以基本上我想在启动时或通过 grub 撤消我在 grub.conf 文件中所做的更改。或者以某种方式强制系统启动一次,然后撤消更改。我无法做到这一点。一种方法是从 Linux CD 以救援模式启动并撤消它,但我无法做到这一点,因为它是 XEN 上的虚拟机,我找不到从外部 CD 启动它的方法。
有什么办法可以解决我造成的混乱吗?
答案1
您可以使用以下方式将磁盘文件挂载到主机上losetup
sudo losetup -o32256 /dev/loop0 /path/to/harddiskimage.xm
sudo mount /dev/loop0 /media/mydisk
指-o
的是引导扇区的偏移量。通常为 32256,但如果客户机上有多个分区,则可能会发生变化。
要确定偏移量是多少,您可以执行以下操作:
sudo losetup -d /dev/loop0
sudo losetup /dev/loop0 /path/to/harddiskimage.xm
sudo fdisk -ul /dev/loop0
Units
它将显示和的数量sector/track
。只需将这两个相乘即可得到偏移量。
完成后,编辑已挂载文件夹中的 grub.conf,然后可以卸载它:
sudo umount /dev/loop0
sudo losetup -d /dev/loop0
答案2
您可以在选择选项之前直接从 grub 菜单编辑启动选项。我相信您按“e”来编辑条目。然后您可以将该启动的选项更改为其他选项。
一旦您启动系统,您可以再次编辑 grub.conf 文件。
答案3
我不知道“Bart De Vos”提到的程序是否有效,因为我没有尝试过,因为我找到了一个肯定有效的程序。 该方法类似于安装客户机的文件系统然后对其进行编辑。
请按照以下步骤挂载映像文件:
第一场火灾扫描命令在 dom-0 上,它将为您提供当前在 dom-0 上处于活动状态的逻辑卷。现在您可以放心地假设该命令显示的卷号属于您的 dom-0 机器,而不是任何客户的卷号。
现在执行kpartx -av /var/lib/xen/images/$machine_name.img 该命令将为VM的映像文件映射循环并激活客户VM的VolumeGroup。
现在又开火扫描命令,除了步骤 1 中看到的之外,您还将看到一个以上的 VolGroup。现在您可以确定这是您的客户虚拟机的卷组。
现在您应该知道 VolumeGroup 中的逻辑卷,以便成功挂载它。为此,请执行命令 vgchange -ay /VolGroup00(步骤 2 中新创建的卷组)/
现在执行命令 lvs,这将为您提供 VolGroup 中的逻辑卷。
现在创建一个挂载点并挂载您想要挂载的任何逻辑卷,如下所示
挂载 /dev/VolGroup00/LogVol00 $mount_path
现在,您可以通过这种方式访问 Guest VM 的任何目录并修改所需的任何配置。完成后,您可以按照相反的步骤进行操作,例如
a) 卸载 $mount_path
b)vgchange -an VolGroup00
c)kpartx -d /var/lib/xen/images/$machine_name.img
您已完成