Смена пароля виртуальной машины
У меня есть несколько виртуальных машин. Я хочу написать скрипт, который автоматизирует следующий процесс...
- Он монтирует виртуальную машину (с 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
Когда я заменяю nbd0p1 на nbdo, я получаю следующую ошибку (хотя я не уверен, что я пытаюсь сделать этим)
mount: you must specify the filesystem type
Любые предложения, так как в чем может быть проблема...?
4 ответа
[Не прямой ответ на вопрос, а альтернативный]
Вы можете попытаться преобразовать образ 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
Проверь это /sys/modules/nbd/parameters/max_part
имеет ожидаемое значение. Если это 0 или слишком низко, разделы /dev/nbd0p1
и т. д. ядром не будут доступны. Это может произойти, если nbd
модуль ядра уже загружен (с другим max_part
параметр), когда вы бежали modprobe
,
Вы можете исправить это, выгрузив модуль и снова запустив его.
Может ли быть так, что раздел находится не в первом слоте MBR, или используется расширенный раздел? Проверьте, есть ли другие nbdXpY
узлы устройства создаются или запускаются fdisk
на это и p
перепечатать таблицу разделов.
Я наткнулся на ту же проблему и ту же ошибку, но на VDI
qemu-nbd -c /dev/nbd0 image.vdi
для меня решение было простым, я просто изменил nbd0
в nbd1
qemu-nbd -c /dev/nbd1 image.vdi
а потом:
sudo mount /dev/nbd1p1 /media/eddie/virtual
работал.
Пожалуйста, оставьте комментарий, если это сработало и для вас, и для какого типа изображения.