Có thể chuyển đổi máy ảo sang môi trường vật lý?


77

Có thể chuyển đổi tệp .vdi thành .iso có thể được ghi sang đĩa cd hoặc dvd và làm cho nó giống như một trình cài đặt. Hoặc có thể chuyển đổi máy ảo sang môi trường vật lý?


1
Câu trả lời này trên AskUbfox.com có ​​thể áp dụng cho rất nhiều môi trường chạy trên các máy chủ Linux: Askubfox.com/a/32506/31592
blong

Câu trả lời:


64

Có và không.

Bạn có thể chuyển đổi VDI thành hình ảnh đĩa bằng công cụ VBoxManage . Lệnh này sao chép một hình ảnh đĩa ảo đã đăng ký vào một tập tin hình ảnh khác. Nếu bạn muốn chuyển đổi đĩa ảo của mình sang định dạng khác, đây là công cụ VirtualBox chính thức để sử dụng [*].

VBoxManage clonehd file.vdi output.img --format RAW
  • Nếu bạn đang sử dụng VDI động và bạn có phiên bản VirtualBox cũ hơn, clonehd có thể không hoạt động đúng. VBoxManage của internalcommands công cụ bao gồm converttoraw , có thể chuyển đổi một VDI động thành một hình ảnh đĩa thô ( nguồn ) [+].

VBoxManage internalcommands converttoraw file.vdi output.img

Nhưng ... tệp IMG đầu ra đó không phải là hình ảnh ISO và hệ điều hành được cài đặt sẽ không được cấu hình để chạy từ đĩa CD / DVD có thể khởi động. Bạn có thể "ghi" (ghi) IMG vào ổ cứng và nó có thể khởi động trên phần cứng trần (ví dụ không phải trong máy ảo). Nhưng điều đó có thể không xảy ra, bởi vì HĐH được cài đặt trên IMG đang mong đợi sẽ thấy phần cứng ảo mà VirtualBox cung cấp và bạn đang khởi động nó trên phần cứng thực mà nó không mong đợi.

Một số phiên bản Windows không xử lý tốt tình huống này; một số bản phân phối Linux làm. Đôi khi có thể định cấu hình HĐH (trước hoặc sau) để di chuyển nó từ môi trường này sang môi trường khác như thế này, nhưng các bước cụ thể phụ thuộc hoàn toàn vào HĐH được di chuyển.


Trên Windows, bạn có thể cần chỉ định đường dẫn đầy đủ đến chương trình:

"C:\Program Files\Sun\VirtualBox\VBoxManage.exe" [...]

Thêm C: \ Chương trình tập tin \ Sun \ VirtualBox vào PATH của bạn để sử dụng phiên bản ngắn.


[*] Tôi giả sử tùy chọn "--format RAW" sẽ chuyển đổi thành hình ảnh đĩa tiêu chuẩn, như thể bạn đã sử dụng lệnh dd trên ổ cứng vật lý. Nhưng thành thật mà nói, tôi đã không tìm thấy bất kỳ tài liệu nào ủng hộ điều này, vì vậy hãy lưu ý rằng điều này có thể không đúng.

[+] Tôi vừa kiểm tra cả hai lệnh trong VirtualBox 3.1.2. Cả hai tệp đầu ra đều giống hệt nhau theo md5sum , nhưng tôi chưa kiểm tra đầy đủ các tệp đầu ra.

Xem thêm hướng dẫn "Tất cả về VDI" tại diễn đàn VirtualBox.


3
Kích thước của VDI thì sao? Có vấn đề gì không? Giả sử kích thước VDI ​​là 20 GB và kích thước ổ cứng thực sự là 200 GB ... Điều gì sẽ xảy ra?
Pwnna

Đó là phương pháp đầu tiên "clonehd" có vẻ rất chậm. Nhưng thứ hai làm việc một điều trị.
Matt H

1
Cũng lưu ý rằng nếu bạn quản lý để có được một hệ điều hành windows để khởi động, bạn sẽ phải kích hoạt lại nó trong hầu hết các trường hợp.
Kimmax

Điều gì nếu bạn đã sysprep /generalizecài đặt ảo đầu tiên? Điều này chắc chắn sẽ chuẩn bị cài đặt được cài đặt trên phần cứng mới (hoặc phần cứng vật lý trong trường hợp này)
Robula

1
@Pwnna Bạn đang sao chép img của đĩa cứng (không chỉ phân vùng mà toàn bộ bản đồ phân vùng có phân vùng). Tôi đã làm điều này trong quá khứ và nhớ xem câu trả lời này mô tả gì, không gian chưa sử dụng / không phân chia ở cuối: serverfault.com/questions/268889/ Lỗi
sudo

21

Nếu tệp vdi của bạn chứa các phân vùng và bạn muốn giải nén chỉ một trong số chúng sử dụng như sau:

Đầu tiên, như quack quixote đã nói trước đó, chuyển đổi tệp vdi thành tệp hình ảnh thô:

# VBoxManage clonehd file.vdi file.raw --format RAW

Sau đó thiết lập một thiết bị lặp cho hình ảnh:

# loopdev=$(losetup --show -r -f file.raw)

Sử dụng kpartx để tạo thiết bị cho từng phân vùng trong tệp thô:

# apt-get install kpartx
# kpartx -a $loopdev

Xem những thiết bị chúng ta có bây giờ. Trong ví dụ này, chỉ có một thiết bị vì chỉ có một phân vùng trong ảnh thô:

# ls /dev/mapper/loop*
/dev/mapper/loop0p1

Bây giờ gắn kết nó để xác minh rằng tất cả hoạt động đúng:

# mkdir /mnt/part1
# mount /dev/mapper/loop0p1 /mnt/part1
# ls /mnt/part1
# umount /mnt/part1

Sử dụng dd để sao chép nội dung phân vùng sang phân vùng đích khác:

# dd if=/dev/mapper/loop0p1 of=/dev/sda2 bs=1M

Sau khi hoàn thành, hãy xóa lại ánh xạ thiết bị:

# kpartx -d file.raw

Điều đó có khả thi với Windows không?
Ehsan

13

Câu trả lời là có, trong trường hợp máy chủ và hệ thống khách của bạn là Linux. Nó được thực hiện với các gói qemuTKLPatch. Bạn có thể sử dụng cả hai tệp VDI hoặc VMDK.

Đọc thêm:


3
+1 "xác định" với cảnh báo ".. miễn là khách của bạn là linux" . và giải pháp (của bạn?) của họ phụ thuộc vào một số công cụ TurnKey Linux. nhưng thủ tục có vẻ âm thanh. (chào mừng bạn đến với Siêu người dùng!)
quack quixote

5

Tôi đã thử VBoxManage clonehd file.vdi output.img --format RAWtừ câu trả lời được chấp nhận nhưng không có nhiều thành công.

Điều làm việc với tôi với máy ảo Windows 8.1 trên máy chủ Windows 7 là:

  1. Tạo một máy Windows 8.1 trong VirtualBox, cài đặt và sử dụng như bạn thường làm với VM.
  2. Chuyển đổi đĩa cứng .vdi của Virtual Box sang Windows VHD vớiVBoxManage clonehd source.vdi target.vhd --format vhd
  3. Gắn VHD trong máy chủ Windows dưới dạng ổ đĩa (bạn có thể gắn VHD vào trình quản lý đĩa trong Quản lý máy tính.
  4. Sao chép VHD (được gắn dưới dạng ổ đĩa) vào một đĩa cứng mới khác (máy tính xách tay HD gắn trong USB trong trường hợp của tôi) DriveImage XML hoặc một công cụ nhân bản đĩa tương tự. Bây giờ bạn về cơ bản đã nhân bản đĩa cứng ảo .vdi sang kim loại trần.
  5. Cài đặt đĩa cứng mới trong máy. (trong trường hợp của tôi trao đổi ổ cứng máy tính xách tay)
  6. Lắp USB / CD cài đặt Windows 8.1, khởi động từ nó, chọn Tùy chọn nâng cao và Sửa chữa tự động. Việc sửa chữa tự động sẽ làm cho đĩa cứng mới có khả năng khởi động.
  7. Khởi động từ đĩa cứng mới với Windows 8.1 được nhân bản và chạy Windows Update. Điều này sẽ tải xuống trình điều khiển cho phần cứng máy tính của bạn mà không biết khi nào bạn chạy Windows trong VirtualBox. Bạn sẽ phải cài đặt trình điều khiển bị thiếu bằng tay nếu có.
  8. Gỡ cài đặt VirtualBox Khách bổ sung. Tùy chọn cài đặt VirtualBox để Windows 8.1 kim loại trần của bạn có thể là máy chủ VirtualBox.

1
Từ @sum: Bạn có thể thử BootICE để thay thế bước thứ 6 và chắc chắn cài đặt MBR chính xác.
fixer1234

Cảm ơn. BootICE có đáng tin cậy hơn trong một số wat so với cài đặt Windows 8.1 không? Bước 6 tôi đã mô tả có thể làm xáo trộn MBR?
Jan H

1
Điều này đã được đăng dưới dạng câu trả lời của một người dùng mới (tôi tin superuser.com/users/523958/sum ). Nó sẽ bị xóa vì nó không đủ điều kiện làm câu trả lời, vì vậy tôi đã sao chép bài đăng và lưu nó dưới dạng bình luận để nó không bị mất. Tôi không quen thuộc với nó.
fixer1234

3

Tôi thực hiện quá trình này rất nhanh, chỉ với hai dòng lệnh trong Linux:

#VBoxManage Internalcommands hội tụ your_disk_virtual.vmdk your_disk_virtual.img

HOẶC LÀ

#VBoxManage Internalcommands hội tụ your_disk_virtual.vdi your_disk_virtual.img

# mv your_disk_virtual.img your_disk_virtual.iso

Bài viết đầy đủ của tôi: http://www.previsioni.com.br/jailsonjan/?p=389


Trong trường hợp này, .img có thể khởi động được không?
Pumphouse

Tôi nghĩ không có. Tôi đã thấy câu trả lời tương tự từ người dùng 0-rep, tuy nhiên, cách đó có vẻ dễ dàng, hóa ra lại vô dụng.
T.Todua

0

Sử dụng lệnh sau để chuyển đổi:

VBoxManage clonehd CactiEZ-disk1.vmdk output.iso --format VMDK

Đây là đầu ra:

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VMDK'. UUID: 7f297ac6-95eb-4814-9237-1acfd6be976c
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.