首页 文章

更改虚拟机的密码

提问于
浏览
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

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

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

  • 1

    [不是问题的直接答案,而是替代方案]
    您可以尝试将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
    
  • 3

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

  • 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
    

    工作 .

    如果这对您有用,请留下评论以及图像类型 .

相关问题