我找到了一些使用图像文件重置 xen 客户机密码的教程,比如这个: http://www.howtoforge.com/forums/showthread.php?t=28779
但是,我还没有找到修改它以适用于物理磁盘的示例。
此客户机当前正在运行。如果您能从列出从主机关闭客户机的命令开始,一直到更改 root 密码后重新启动 xen 客户机,我将不胜感激。
另外,不确定这是什么意思,但在我的本地机器上,“xm”是用于与 xen 交互的命令,而不是像我在大多数教程中看到的 xe。
以下是 xen 配置文件的磁盘行:
disk = [ "phy:/dev/sdb1,xvda,w" ]
谢谢,
-埃里克
答案1
使用类似以下命令关闭客户端
xm shutdown <guest>
检查是否已关机
xm top
该路径暗示它不是 LVM,而是物理磁盘。这是库。确保已安装。首先检查该块设备中有哪些文件系统:
virt-filesystems -a /dev/sdb1
然后挂载根文件系统:
guestmount -a /dev/sdb1 -m /dev/<whateverhappenstoberoot> --rw /mnt
更改根目录:
chroot /mnt/
更新您的密码
passwd root
然后你恢复一切
logout
unmount /mnt/
xm create /etc/xen/vm/<guest>
答案2
实际上,您可以不安装 guestfs 工具,而是通过执行一些手动工作来实现。
按照 pehrs 的建议直到 virt-filesystems 命令(不包括它),然后运行以下命令:
parted -s /dev/sdb1 unit B print
这将为您提供一个列出偏移量的表格,如下所示:
Number Start End Size Type File system Flags
1 32256B 2467583999B 2467551744B primary ext2
2 2467584000B 3981035519B 1513451520B primary ext3
3 3981035520B 3989260799B 8225280B primary lba
4 3989260800B 3997486079B 8225280B primary
您需要挂载的那个可能有一个 ext3 文件系统。您也可以通过mount
在客户机中运行并查找 / 分区的设备来检查正确的编号。
取“开始”列中的数字减去 B,然后尝试以下操作:
mkdir /mnt/test
mount -o loop,rw,offset=NUMBER_GOES_HERE /dev/sdb1 /mnt/test
然后继续chroot /mnt/test
。除了从使用 /mnt 改为使用 /mnt/test 之外,其余一切都保持不变 - 我不喜欢直接在 /mnt 上安装任何东西。
参考:http://www.andremiller.net/content/mounting-hard-disk-image- including-partitions-using-linux
答案3
@Eric 默认的 CentOS 存储库不包含 libguestfs 工具——但是 epel 存储库包含。在这种情况下,我通常会设置 epel 存储库,然后禁用它,并仅启用它来安装特定的软件包。如下所示:
- 转速-ivhhttp://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
- 通过在 /etc/yum.repos.d/epel.repo 的每个部分中设置“enabled=0”来禁用存储库
- yum –enablerepo=epel 安装
话虽如此,我不确定您到底需要哪一个包。http://libguestfs.org/似乎建议安装“*guestf*”,但这很可能会安装比你真的需要。