เป็นไปได้หรือไม่ที่จะติดตั้งฮาร์ดดิสก์เสมือน (VHD, HDD, VDI, VMDK) บน Ubuntu? สิ่งนี้สามารถทำได้?
เป็นไปได้หรือไม่ที่จะติดตั้งฮาร์ดดิสก์เสมือน (VHD, HDD, VDI, VMDK) บน Ubuntu? สิ่งนี้สามารถทำได้?
คำตอบ:
ตามบทความนี้ :
Linux และโฮสต์ที่มีลักษณะคล้าย Unix อื่น ๆ สามารถเมานต์รูปภาพที่สร้างขึ้นด้วยประเภทรูปแบบ raw โดยใช้อุปกรณ์ลูปแบ็ค จากการล็อกอินรูท (หรือใช้ sudo) ให้ติดลูปแบ็คด้วยออฟเซ็ต 32,256
mount -o loop,offset=32256 /path/to/image.img /mnt/mountpoint
สำหรับอิมเมจ qemu ประเภทอื่นคุณสามารถใช้ qemu-nbd
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 image.qcow2
partprobe /dev/nbd0
mount /dev/nbd0p1 /mnt/image
นอกจากนี้โดยทั่วไปคุณสามารถแปลงรูปภาพจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่งได้
raw - (default) the raw format is a plain binary image of the disc
image, and is very portable.
On filesystems that support sparse files,
images in this format only use the
space actually used by the data recorded in them.
cloop - Compressed Loop format, mainly used for reading Knoppix
and similar live CD image formats
cow - copy-on-write format, supported for historical reasons only and
not available to QEMU on Windows
qcow - the old QEMU copy-on-write format, supported for
historical reasons and superseded by qcow2
qcow2 - QEMU copy-on-write format with a range of special features,
including the ability to take multiple snapshots, smaller
images on filesystems that don't support sparse files,
optional AES encryption, and optional zlib compression
vmdk - VMware 3 & 4, or 6 image format, for exchanging images
with that product
vdi - VirtualBox 1.1 compatible image format, for exchanging
images with VirtualBox.
ลองไปที่ google ฉันพบโซลูชันสำหรับ (VirtualBox) .VDI ในหนึ่งวินาที :
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 /path/to/some.vdi
mount -o loop /dev/nbd0p1 /mnt
# do stuff
umount /mnt
qemu-nbd -d /dev/nbd0
rmmod nbd
เหมือนกับคำสั่ง "ทางของ Qemu" ไม่มีพรมแดน!
นี้คือบนUbuntu 16.04
apt-get install afflib-tools
affuse /path/file.vmdk /mnt/vmdk
fdisk -l /mnt/vmdk/file.vmdk.raw
# example
Disk file.vmdk.raw: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000da525
Device Boot Start End Sectors Size Id Type
/mnt/vmdk/file.vmdk.raw1 * 2048 41943039 41940992 20G 83 Linux
echo 2048*512 | bc
1048576
mount -o ro,loop,offset=1048576 /mnt/vmdk/file.raw /mnt/vmdisk
mount -o ro,loop,offset=1048576 ./foo.raw /mnt/foo
only root can use "--options" option
ด้วยมันล้มเหลวด้วยsudo
failed to setup loop device: Permission denied
คุณยังสามารถใช้ 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 ไม่มีอยู่'
tar -tf image.ova
tar -xvf image.ova
ด้านบนจะแยก.vmdk
ดิสก์แล้วติดตั้ง
สำหรับvmdk
และvhd
ไฟล์ฉันโชคดีที่มีkpartx
คำสั่งด้านล่าง:
sudo kpartx -a -v <image-flat.vmdk>
ตรวจสอบการส่งออกสำหรับlosetup
มันควรจะมีอุปกรณ์ห่วง/dev/loop0
; ตรวจสอบsudo blkid
พาร์ติชัน/dev/mapper/loop0p1
แล้วใช้ในคำสั่ง mount:
sudo mount -o rw /dev/mapper/loop0p1 /mnt/vmdk
โดยที่ / mnt / vmdk เป็นจุดเชื่อมต่อของคุณที่จะสร้างด้วยsudo mkdir /mnt/vmdk
หากไม่มีอยู่จริง
source ที่ commandlinefu.com (คำสั่ง kpartx และ mount)
ถอนติดตั้งด้วย:
sudo umount /mnt/vmdk
sudo kpartx -d -v <image-flat.vmdk>
vhd
มันใช้งานได้!