更改虚拟机的密码

时间:2011-02-11 06:26:17

标签: virtual-machine mount qemu kvm

我有一些虚拟机。我想编写一个自动执行以下过程的脚本......

  • 它将虚拟机(使用linux作为操作系统)安装到位置/ mnt / image
  • 修改/ etc / passwd(或等效文件)以更改用户密码
  • 卸载虚拟机

因为,我正在使用libvirt,我有一些虚拟机的qcow2图像。要将图像挂载到我的ubuntu上,我正在使用nbd模块。以下是我正在尝试的命令:

modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 image.qcow2
mount /dev/nbd0p1 /mnt/image

它给了我错误:

mount: special device /dev/nbd0p1 does not exist

当我用nbdo替换nbd0p1时,我收到以下错误(虽然我不确定我想要做什么)

mount: you must specify the filesystem type

任何建议以及可能出现的问题......?

4 个答案:

答案 0 :(得分:4)

检查/sys/modules/nbd/parameters/max_part是否具有预期值。如果它为0或太低,则内核将无法使用分区/dev/nbd0p1等。如果在运行nbd时已加载max_part内核模块(使用不同的modprobe参数),则会发生这种情况。

你可以通过卸载模块并再次修改它来解决这个问题。

答案 1 :(得分:3)

[不是问题的直接答案,而是替代方案]
您可以尝试将qcow2图像转换为raw,然后安装原始图像。

转换:

qemu-img convert -f qcow2 image.qcow2 -O raw image_raw.raw

安装:

    sudo losetup /dev/loop0 image_raw.raw
    sudo kpartx -a /dev/loop0
    sudo mount /dev/mapper/loop0p3 /mnt/image
    sudo mount /dev/mapper/loop0p2 /mnt/image/boot

答案 2 :(得分:1)

可能是分区不在MBR的第一个插槽中,还是正在使用扩展分区?检查是否正在创建任何其他nbdXpY设备节点,或在其上运行fdiskp打开分区表。

答案 3 :(得分:1)

我偶然发现了同样的问题和相同的错误,但是在vdi上

qemu-nbd -c /dev/nbd0 image.vdi

对我来说解决方案很简单我刚刚将nbd0更改为nbd1

qemu-nbd -c /dev/nbd1 image.vdi

然后:

sudo mount  /dev/nbd1p1 /media/eddie/virtual 

的工作。

如果这对您有用,请发表评论以及图片的类型。