我是否可以在不重新启动的情况下确定 Grub menu.lst 在虚拟机上是否有效?

我是否可以在不重新启动的情况下确定 Grub menu.lst 在虚拟机上是否有效?

在我的托管 VPS 上运行 Ubuntu 时出现问题。我只能访问恢复控制台,以便安装设备。

我已将问题缩小到混乱menu.lst。我的内核和 initrd 指向正确的映像,但我不知道虚拟机启动时的驱动器标识符是什么。此外,使用 grub 命令行尝试访问驱动器时会出现错误。

有人能给我一些建议,告诉我该怎么做才能确定驱动器标识符,或者做其他任何可能有帮助的事情吗?

Grub版本是0.97。

更新:

我将快速地稍微检查一下我的环境。

  • 我处于恢复控制台中,从它的外观来看,它的作用就像一张 Live CD。
  • 我已将我的 VPS 根目录(sdb1)挂载到 /mnt。
  • 我已经使用mount -o bind /dev /mnt/dev
  • 我可以在 /dev; 中看到另外两个驱动器sda(包含isolinux)并且sdb2它是我的 VPS 交换。
  • 然后我 chroot 到 /mnt/ 来访问 grub 提示符。然后我得到以下内容:

    grub> root (hd0, <TAB>

    grub> root (hd0,0)

    Error 5: Partition table invalid or corrupt.

  • 在第一个命令中,当我按下 Tab 键时,grub 没有显示任何建议。而且,只找到了 hd0。

一旦获得许可,我将立即为这个问题提供悬赏。感谢您的帮助!

更新2:

fdisk -l /dev/sdb // Doesn't exist.
fdisk -l /dev/sdb1 // My root partition.
...
Disk /dev/sdb1 doesn't contain a valid partition table.

答案1

如果你能做到这一点,这需要访问 grub shell

grub> root (hd0,0)               #Replace with your root drive
grub> cat /<TAB>                 #Check if files appear
grub> configfile /grub/menu.lst  #Check menu.lst

来源:http://technotes.twosmallcoins.com/?tag=bootgrubmenulst

答案2

在设法进入 busybox 后,发现磁盘被命名为一些不寻常的名字 ( vxda1)。一旦我知道这一点,我就可以通过编辑 轻松解决问题menu.lst

问题是由 引起的grub_update,在调用时会删除 的内容menu.lst。原因不明。

相关内容