我有一个来自 Azure (Ubuntu 20.04) 的虚拟机。我无法再付费并想要获取文件,但无法启动虚拟机。我下载了磁盘(DOS/MBR 引导扇区、扩展分区表(最后一个)),但不知道该怎么办。
答案1
如果磁盘映像采用(raw、VMDK、VDI、VHD (vpc)、VHDX、qcow1 和 QED)支持的格式之一qemu
,则可以使用以下命令将磁盘用作 nbd 设备(作为 root):
modprobe nbd max_part=31
qemu-nbc -c /dev/nbd0 disk.img
(qemu-nbd
来自qemu-utils
基于 Debian 的系统上的软件包)。
然后,如果文件系统直接位于分区上,请使用以下命令挂载它们:
mount -r /dev/nbd0p1 /some/mountpoint
(此处为第一个分区)。
如果VM上使用了LVM,您可能还需要lvm
在本地安装并激活VM的卷组,然后vgchange
安装逻辑卷。
基于 Debian 的系统上的软件包libguestfs-tools
至少有一些用于探索 VM 磁盘映像的实用程序,包括guestfish
用于交互式探索它们的类似 shell 的实用程序:
$ sudo guestfish --ro -a slackware.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: ‘help’ for help on commands
‘man’ to read the manual
‘quit’ to quit the shell
><fs> launch
100% ⟦▒▒▒▒▒▒⟧ 00:00
><fs> list-filesystems
/dev/sda1: ext2
/dev/sda2: ext2
/dev/sda3: ext2
/dev/sda4: vfat
><fs> mount /dev/sda1 /
><fs> ls /
.bash_history
.emacs
.kermrc
.less
.lessrc
.profile
.term
bin
conf
dev
dos
etc
home
inst
install
lastlog
lib
linux
lost+found
mnt
os2
proc
root
tmp
user
usr
var
zImage
答案2
您可以使用 qemu:
为了.vdi
sudo modprobe nbd
sudo qemu-nbd -c /dev/nbd1 ./linux_box/VM/image.vdi
如果尚未安装,您可以安装它们(在 Ubuntu 上是这个命令)
sudo apt install qemu-utils
然后安装它
mount /dev/nbd1p1 /mnt
为了.vmdk
sudo modprobe nbd
sudo qemu-nbd -r -c /dev/nbd1 ./linux_box/VM/image.vmdk
请注意,我使用该选项-r
是因为VMDK 版本 3 必须是只读的能够被qemu挂载
然后我安装它
mount /dev/nbd1p1 /mnt
我使用是nbd1
因为nbd0
有时会给出“挂载:特殊设备/dev/nbd0p1不存在”
对于.ova
tar -tf image.ova
tar -xvf image.ova
上面的命令将提取.vmdk
磁盘,然后安装它。