ubuntu9.0.4 pygrub找不到fsimage问题的解决

就是这么一个很小的问题,又折腾了一个晚上,甚至想到要把本来的不太熟悉的ubuntu 9.04删除掉,重新安装成centos操作系统。

这 个问题的表现就是启动虚拟机后停在那里一直没有反应,使用xm list检查虚拟机状态看到的是p状态(p代表pause)。检查虚拟机配置文件,没有任何问题,同样的配置文件和镜像文件在实验室服务器的centos 上就运行非常稳定非常正常。手动使用xm create启动虚拟机,根本看不到虚拟机启动的grub界面。

其实现在想想从看不到grub 界面应该就能想到是pygrub的问题。但是自己当时没有冷静地一步一步排除故障寻找问题的根源,却想当然地认为这个问题是由tapdisk设备没有正常 运行造成的。自己还顺便检查了一下xm log,虽然看到的完全没有说waiting device...这样的信息,但自己还执迷不悟,

root@node1:~/1297172703915# pygrub ~evcuser/1297159931302/evc.img
Traceback (most recent call last):
  File "/usr/bin/pygrub", line 26, in <module>
    import fsimage
ImportError: No module named fsimage

root@node1:~/1297172703915# locate fsimage
/usr/lib/libfsimage.so.1.0
/usr/lib/libfsimage.so.1.0.0
/usr/lib/fs/ext2fs/fsimage.so
/usr/lib/fs/fat/fsimage.so
/usr/lib/fs/iso9660/fsimage.so
/usr/lib/fs/reiserfs/fsimage.so
/usr/lib/fs/ufs/fsimage.so
/usr/lib/fs/zfs/fsimage.so
/usr/lib/python2.5/site-packages/fsimage.so

在/usr/bin/pygrub文件第26行附近的代码是:
import curses, _curses, curses.wrapper, curses.textpad, curses.ascii
import getopt

sys.path = [ '/usr/lib/python', '/usr/lib64/python' ] + sys.path

import fsimage
import grub.GrubConf
import grub.LiloConf

不 知道python的库是如果识别的,比如fsimage这个库对应的文件名是libfsimage.so还是fsimage.so。但从上面的 locate输出来看,确实在/usr/lib/python2.5下有fsimage.so。再者ubuntu-xen-server用的python 也是2.5不是2.6。所以修改/usr/bin/pygrub的sys.path那一行:
sys.path = [ '/usr/lib/python', '/usr/lib64/python', '/usr/lib/python2.5/site-packages' ] + sys.path
然后再运行:
root@node1:~/1297172703915# pygrub ~evcuser/1297159931302/evc.img
就可以看到虚拟机启动时的grub界面。

你可能感兴趣的:(虚拟机,centos,python,ubuntu,Module,import)