4

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

  • 它将虚拟机(以 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

4 回答 4

4

检查是否/sys/modules/nbd/parameters/max_part具有预期值。如果它为 0 或太低,/dev/nbd0p1则内核将无法使用分区等。如果在您nbd运行.max_partmodprobe

您可以通过卸载模块并再次对其进行修改来解决此问题。

于 2014-01-30T14:46:38.627 回答
3

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

兑换:

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
于 2011-02-11T12:19:17.197 回答
1

可能是该分区不在 MBR 的第一个插槽中,或者正在使用扩展分区?nbdXpY检查是否正在创建任何其他设备节点,或者fdisk在其上运行并p清理分区表。

于 2011-02-11T06:32:42.697 回答
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 

工作。

如果这也适用于您以及什么类型的图像,请发表评论。

于 2018-02-27T02:37:05.733 回答