Gắn hình ảnh ổ đĩa VirtualBox (vdi)?


88

Có thể gắn hình ảnh ổ đĩa VirtualBox (.vdi) để nội dung có thể được xem trong Nautilus, v.v.?

Tôi có một cửa sổ 2000 .vdi không khởi động được ("thiết bị khởi động không thể truy cập") sau khi nâng cấp từ VirtualBox 2.x lên 3.1.6. Tôi tin rằng các chi tiết về ổ đĩa IDE đã thay đổi và tất cả những gì tôi cần làm là truy cập hình ảnh ổ đĩa bên trong và chỉnh sửa Windows boot.iniđể trỏ đến vị trí mới.


1
Nếu tệp .vdi và sau đó .img của bạn chứa nhiều hơn 1 phân vùng, thì điều này rất hữu ích: duyệt-img-mà không cần cài đặt
user2689749

Câu trả lời:


56

Bạn có thể chuyển đổi thành hình ảnh tiêu chuẩn và sau đó gắn kết nó.

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

Sau đó

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

Bạn sẽ cần BIẾT loại hệ thống tập tin, ext3trong trường hợp này. Sau khi được gắn kết, đi vào và chỉnh sửa với trình chỉnh sửa bạn chọn. Đừng nhầm lẫn các tập tin bên trong /mntvị trí với máy chủ đang chạy, nếu không nó sẽ bị hỏng.

Để kiểm tra chi tiết về tệp VDI của bạn, hãy chạy : VBoxManage showhdinfo ubuntu.vdi.

Nguồn: [GIẢI QUYẾT] Mở .vdi với trình quản lý lưu trữ? - ubuntuforums.org


4
Specilly hữu ích trong một tình huống như thế này. OP sẽ có thể làm việc trên bản sao giữ bản gốc làm bản sao lưu.
Javier Rivera

7
Cẩn thận làm điều này với các tập tin .vdi có kích thước động. Chuyển đổi sang .img sẽ buộc tệp hình ảnh phải lớn bằng kích thước logic của đĩa, đó là lý do cách tiếp cận này hoạt động, nhưng nó có thể lớn hơn nhiều so với tệp .vdi. Hãy nhìn vào đầu ra VBoxManage showhdinfo [your vdi file]nếu bạn không chắc chắn.
Jack O'Connor

1
-1, câu trả lời của stwisselMaxime R. cung cấp giải pháp - đây là một cách giải quyết công bằng, nhưng không phải là câu trả lời tốt nhất cho câu hỏi
STW

3
Nếu hình ảnh có bảng phân vùng (giống như hầu hết các ổ đĩa), thì bạn sẽ cần kết hợp câu trả lời này với câu hỏi này để gắn kết các phân vùng riêng lẻ.
Bain

1
Không hoạt động. Tiếp tục nhận được lỗi gắn loại fs sai. Tôi đã thử ext3 và ext2 và ext4. Hộp ảo cho biết loại hd fs là ext4.
Joshua Robison

86

Sử dụng qemu-nbd, quá trình được giải thích trên serverfaulttrong blog này .

Về cơ bản, bạn sẽ phải cài đặt qemunếu cần:

sudo apt-get install qemu

Sau đó, bạn sẽ cần tải mô-đun thiết bị khối mạng :

sudo rmmod nbd
sudo modprobe nbd max_part=16

Đính kèm hình ảnh .vdi vào một trong những nbd bạn vừa tạo:

sudo qemu-nbd -c /dev/nbd0 drive.vdi

Bây giờ bạn sẽ nhận được một thiết bị khối / dev / nbd0, cùng với một số nút thiết bị phân vùng / dev / nbd0p *.

sudo mount /dev/nbd0p1 /mnt

Khi bạn đã hoàn tất, ngắt kết nối mọi thứ và ngắt kết nối thiết bị:

sudo qemu-nbd -d /dev/nbd0

Tôi muốn lưu ý rằng max_part=16dường như là một phần quan trọng. Nếu không có nó, bạn sẽ không thấy bất kỳ /dev/nbd0pXtập tin nào , mặc dù thiết bị chính sẽ hoạt động bình thường. Kiểm tra các cuộc thảo luận sau đây trên các diễn đàn Gentoo để xem mọi người gặp rắc rối này.
firegurafiku

Tất cả các câu trả lời hoạt động ở một mức độ nào đó nhưng đây là yêu thích của tôi và nên được chấp nhận. clonehd làm công việc nhưng tăng gấp đôi yêu cầu lưu trữ. Virtualbox-fuse là lý tưởng nhưng mặc dù bạn vẫn có thể lấy nó, nhưng nó đã không được đưa lên repos trong các bản phát hành hiện đại của HĐH.
Hatoru Hansou

2
Điều này đã làm việc tuyệt vời. Lưu ý rằng cài đặt qemu-kvmthay vì qemucó thể hoạt động tốt. Nó đã làm cho tôi trên Ububtu 16.04 của tôi và chỉ cài đặt 23 MB và 13 phụ thuộc thay vì 230 MB và nhiều phụ thuộc khác cho cài đặt qemu đầy đủ.
mivk

2
Tôi muốn thêm rằng rõ ràng sudo partprobecần phải được thực thi với các hạt nhân mới hơn để /dev/nbd0p*được tạo ra trong Debian / Ubuntu ( bug.debian.org/cgi-bin/ormsreport.cgi?orms=824553 ).
Kai

1
Đây phải là câu trả lời được chấp nhận !! Vdi của tôi quá lớn để chuyển đổi thành .iso trên ổ cứng của tôi. Sau khi vật lộn một lúc, tôi cuộn xuống để xem liệu có phương pháp nào khác sử dụng trực tiếp vdi không. Điều này là đơn giản. (Lưu ý: qemu mất khoảng 300 MB cho những người quan tâm đến việc lấp đầy ổ cứng của chúng tôi.)
psitae

35

Có vẻ như vdfuse là công cụ bạn đang tìm kiếm. Nó nằm trong kho Ubuntu. Nếu bạn muốn tự biên dịch (nguồn 2010), bạn cũng có thể làm điều đó .

Tuy nhiên, đối với hầu hết chúng ta, nó đơn giản hóa:

sudo apt-get install virtualbox-fuse

Có vẻ như bây giờ nó cũng hỗ trợ vdi năng động.

Và để gắn kết .vditập tin trong /mntthư mục, sử dụng lệnh:

sudo vdfuse -a -f /path-to-vdi-file /mnt

Toàn bộ đĩa sẽ được gắn với các phân vùng Partition1, Partition2định dạng đặt tên. Sau đó, các tập tin có thể được gắn kết vòng lặp. Ví dụ,

sudo mount -o loop /mnt/Parition1 /mountpoint

1
@mattwilkie: Sự khác biệt bây giờ: không yêu cầu biên dịch thủ công nữa
stwissel

1
Không có gì. Ngồi ở màn hình propper / bàn phím thay vì mổ vào glas đã tạo ra sự khác biệt :-)
stwissel

5
Nó không có sẵn trong 14.04.
int_ua

2
Mọi người có thể tải xuống từ đây: sourceforge.net/projects/vdfuse/?source=typ_redirect và nó hoạt động (vào ngày 15.04)
sup

4
Không còn hiệu lực cho 16.10, gói không còn tồn tại.
Piskvor

14

Đặt đĩa làm chủ phụ cho một hệ điều hành ảo khác, sau đó khởi động vào hệ điều hành (ảo) này và bạn có thể gắn kết nó.

Bước 1: Giả sử bạn có một hệ điều hành ảo (giả sử Ubuntu 16.04) đã được cài đặt trong hộp ảo, hãy thêm một bộ lưu trữ mới từ các cài đặt của hệ điều hành ảo đó. nhập mô tả hình ảnh ở đây

Bước 2: Duyệt tập tin Vdi bạn muốn truy cập và chọn nó.

Bước 3: Đăng nhập vào hệ điều hành ảo.

Bước 4: Đĩa ảo có thể sẽ có sẵn trong HĐH. Nếu không, hãy làm theo bước 5

Bước 5: Bên trong HĐH ảo, sử dụng Gparted và kiểm tra các đĩa. và đảm bảo đĩa có thể truy cập được bởi hệ điều hành ảo. Nếu không, bạn có thể phải chỉnh sửa đĩa, nhưng sau đó bạn sẽ mất nội dung hiện có.


1
Đối với hồ sơ, năm 2016 nó sẽ không hoạt động
Paulo Pedroso

1
Nó hoạt động trong Ubuntu 16.04.
Sharun

đây thực sự là giải pháp duy nhất khi bạn cần thay đổi và sau đó quay lại sử dụng nó, không thể bắt đầu làm việc với vdfuse
DuBistKomisch 28/03/18

7

Tôi đã không tự kiểm tra nhưng có một mô-đun cầu chì để gắn kết chúng ( vdfuse), kiểm tra trang sau:

Xin lưu ý rằng sử dụng nó để truy cập ghi là rủi ro.


Sử dụng:

$ ./vdfuse-v<version> -h
USAGE: ./vdfuse [options] -f image-file mountpoint
   -h   help
   -r   readonly
   -t   specify type (VDI, VMDK, VHD, or raw; default: auto)
   -f   VDimage file
   -a   allow all users to read disk
   -w   allow all users to read and write to disk
   -g   run in foreground
   -v   verbose
   -d   debug

Để gắn hình ảnh trực tiếp bằng tên tệp của nó:

$ ./vdfuse-v<version> -f image.vdi /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP

Để gắn đĩa máy (bao gồm ảnh chụp nhanh):

$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP

Không còn phù hợp vì tiện ích này không được hỗ trợ.
Evan Carroll

3

Không phải những gì bạn yêu cầu, nhưng nếu đó chỉ là vấn đề lấy các tệp ra khỏi vdi và bạn muốn có một giải pháp rất nhanh :

  1. Chạy máy chủ ssh trên máy chủ của bạn ( apt-get install openssh-server && service ssh restart)
  2. Sử dụng VirtualBox để xây dựng một máy ảo từ tệp vdi hiện có, sau đó khởi động máy ảo đó. (Tôi chỉ giữ Bộ điều hợp mạng (NAT) mặc định khi xây dựng VM.)
  3. Trong máy ảo, sftp đến máy chủ của bạn. ( sftp hostuser@hostip)
  4. Trong phiên sftp, có putbao nhiêu tệp cho máy chủ mà bạn cần.

1
Một hack xấu xí, nhưng nếu bạn ở một vị trí chặt chẽ, nó sẽ hoàn thành công việc.
Piskvor

Một vấn đề có thể là máy hiện không khởi động chính xác nên bạn cần khắc phục sự cố đó trước và điều đó có nghĩa là bạn không thể thực hiện được từ bên trong. Ngoài ra, sử dụng SSH với các hệ điều hành hộp ảo của bạn là cách để sao chép các tệp xung quanh. Cách nhanh hơn là cố gắng chia sẻ đĩa.
Alexis Wilke

2

Như Vojtech Trefny đã đề cập ở trên,

1) trước tiên chuyển đổi VDI của bạn -> IMG

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

2) Sau đó gắn kết IMG

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

3) Tuy nhiên, khi tôi nhận được thông báo lỗi này:

mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

và dmesg nói:

[3105578.013671] EXT4-fs (loop0): VFS: Can't find ext3 filesystem

bạn cần kiểm tra cấu trúc phân vùng của .img:

fdisk -l ubuntu.img

Disk ubuntu.img: 21.0 GB, 20971520000 bytes
255 heads, 63 sectors/track, 2549 cylinders, total 40960000 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
Disk identifier: 0xf45bc910

   Device Boot      Start         End      Blocks   Id  System
ubuntu.img1   *        2048    12582911     6290432   83  Linux
ubuntu.img2        12584958    16775167     2095105    5  Extended
ubuntu.img3        16775168    40959999    12092416   83  Linux
ubuntu.img5        12584960    16775167     2095104   82  Linux swap / Solaris

4) Như bạn có thể thấy, phân vùng chính bắt đầu từ byte 16775168. Tuy nhiên, lưu ý rằng kích thước cung là 512 byte, vì vậy bạn cần nhân kết quả 16775168 x 512 = 8588886016, do đó bạn cần phải bù lại giá trị như thế này:

mount -t ext3 -o loop,rw,offset=8588886016 ./ubuntu.img /mnt

5) Trên thực tế, điều này không làm việc cho tôi trong trường hợp hệ thống tập tin bị bẩn sau khi thay đổi kích thước. Trong trường hợp này tôi tiếp tục làm điều này:

dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt

1
Đây không phải là một câu trả lời cho câu hỏi. Bạn đã có một vấn đề khác - một hình ảnh tham nhũng. Bạn nên tự trả lời một câu hỏi mới.
Evan Carroll

Điều này mở rộng đến câu trả lời trước bao gồm trường hợp lỗi. Hình ảnh tham nhũng là một trường hợp sử dụng. +1 cho nhiều thủ thuật mới.
FractalSpace
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.