Bạn có thể chạy một trình giả lập máy (Bochs) bên trong một máy ảo không?


82

Có thể nói, chạy VirtualBox trên Windows 7 với một khách Linux và bên trong máy Linux đó chạy Bochs không?

Lý do là tôi quan tâm đến việc bắt đầu phát triển hệ điều hành và tôi thấy rằng tất cả các hướng dẫn và công cụ dễ theo dõi hơn trên các máy * nix. Tôi đã thử sử dụng Cygwin, nhưng tôi nghĩ rằng nó đã thêm một lớp phức tạp khác và không nhất thiết làm cho mọi thứ dễ dàng hơn.


1
Khởi động kép là Linux và Windows tương đối dễ thực hiện và kết quả cuối cùng sẽ chạy nhanh hơn nhiều. Nhược điểm thực sự duy nhất là bạn phải khởi động lại để chuyển đổi hệ điều hành.
lyallcooper

@AUAnonymous: Tôi biết điều đó, nhưng tôi muốn tiếp tục chạy Windows.
Javier

Nó luôn luôn là một tùy chọn nếu bạn không quản lý để VM hoạt động hoặc nếu chúng không hoạt động tốt.
lyallcooper

12
Tôi sẽ tranh luận rằng câu hỏi này có tiêu đề kém. Bochs không phải là phần mềm ảo hóa theo nghĩa tương tự như VirtualBox và VMWare. Nó là một trình giả lập. Nó không cung cấp ảo hóa CPU. Sự khác biệt ở đây không chỉ đơn thuần là phạm vi. Bạn có thể mong đợi một trình giả lập như bochs hoạt động bên trong VM với độ tin cậy khá cao. Chạy một phần mềm ảo hóa thực sự "lồng nhau" trong VM là một vấn đề phức tạp hơn nhiều. Ví dụ: tính năng này chỉ được triển khai trong VMWare kể từ Fusion 4 .
superbatfish

2
VirtualMachine-cece: D Bạn có nguy cơ mất dấu về mức độ sâu trong các máy ảo. Khoảnh khắc đó khi bạn nhận ra mình vừa làm hỏng đĩa cứng vật lý của mình thay vì một trong những cái ảo lồng nhau mà bạn dự định sẽ thử nghiệm trên: P
developerbmw

Câu trả lời:


63

Câu chuyện dài: .

Mỗi máy ảo về mặt kỹ thuật là "độc lập" với nhau và với VirtualBox , bạn có thể dễ dàng thực hiện việc này, vì nó được hỗ trợ trên cả hai hệ điều hành máy chủ Windows và Linux (được mô phỏng hoặc không). Bạn chỉ có thể sử dụng Windows làm HĐH "máy chủ cơ sở", chạy Linux trong máy ảo và sau đó sử dụng hệ điều hành đó làm máy chủ cơ sở mới cho Bochs.

Hãy lưu ý rằng hạn chế duy nhất của bạn ở đây là phần cứng của bạn. Tùy thuộc vào yêu cầu phát triển của bạn, bạn có thể cần thêm bộ nhớ hoặc nâng cấp lên hệ điều hành "máy chủ cơ sở" 64 bit. Điều đó đang được nói, nếu bạn chọn bản phân phối Linux của mình một cách khôn ngoan, bất kỳ hệ thống hiện đại nào cũng có khả năng lồng nhau tùy ý như thế này.

Bạn sẽ thấy hiệu suất được cải thiện nếu bạn bật hỗ trợ ảo hóa x86 trên máy tính của mình (nếu bo mạch chủ và CPU của bạn hỗ trợ nó) và AFAIK, bạn có thể "chuyển" tính năng này sang nhiều máy ảo lồng nhau. Nếu chúng ta có ncác máy ảo lồng trong eachother, này được hỗ trợ miễn là 1st đến n-1thứ OS khách lồng nhau đã hỗ trợ cho việc ảo hóa x86 (máy chủ cơ sở cũng phải hỗ trợ nó). Xin lưu ý rằng vẫn còn một số vấn đề bảo mật cần lưu ý nếu bạn thực hiện việc này, vì vậy hãy thực hiện các biện pháp phòng ngừa thích hợp.


2
Có vẻ như nó thực sự hoạt động. Rốt cuộc, nếu tôi cần tốc độ, tôi sẽ không sử dụng Bochs ngay từ đầu. Mặc dù không được đánh giá cao nhất, tôi cảm thấy câu trả lời của bạn đầy đủ hơn và đến mức, vì vậy tôi sẽ chấp nhận nó.
Javier

Có phải chỉ có tôi, hoặc câu trả lời này dường như không phải là về việc chạy nhiều máy ảo chứ không phải các máy lồng nhau ?
Thomas Padron-McCarthy

@Thomas Padron-McCarthy, tôi đã nói về những cái lồng nhau. Tôi đã sửa đổi câu trả lời để rõ ràng hơn về vấn đề này.
Đột phá

7
Bochs không phải là trường hợp thử nghiệm tốt nhất cho câu hỏi chung này, vì nó là trình giả lập, không phải VM. (Xem bình luận của tôi trên OP.)
superbatfish

Không phải câu trả lời này mâu thuẫn với câu trả lời của TobyJyêu cầu tính năng VirtualBox chưa được giải quyết mà câu trả lời của anh ấy liên kết đến?
ChrisW

40

Thỉnh thoảng tôi chạy toàn bộ cơ sở hạ tầng ảo VMware vSphere trong VMware Workstation, cùng với các bộ định tuyến và chuyển mạch ảo của Cisco và Thiết bị lưu trữ ảo hóa EMC Celerra, cho mục đích tự học và thử nghiệm.

Tôi gọi nó là 'Tính toán khởi động', và nó có thể trở nên khá khó hiểu. Tuy nhiên, nó có phần rẻ hơn so với việc sử dụng thiết bị thực.


1
Điều này sẽ chứng minh khả năng tồn tại của điều này. vinf.net/2010/02/11/15
Mike Soule

1
@Mike: Chi tiết liên kết của bạn chạy ESXi trong ESX, nhưng tôi đã sử dụng một số liên kết, như TechHead, một trong những trang web chính đưa tôi vào ảo hóa ngay từ đầu. Có rất nhiều thông tin về việc chạy một cơ sở hạ tầng vSphere trong VMware Workstation: google.co.uk/
Kẻ

2
Bạn biết rằng thuật ngữ "khởi đầu" không đề cập đến khái niệm [thing in a thing], phải không?
ekillaby

7
@countfloortiles: Tất nhiên đó là một tài liệu tham khảo cho bộ phim.
thiên đường

1
@paradroid bạn nên đặt tên là "CompCellect" hoặc "VirtuaCellect".
Mohd Abdul Mujib

32

Đối với bất kỳ ai đọc câu hỏi này, thấy câu trả lời được chấp nhận và nghĩ rằng điều này cũng sẽ áp dụng cho VirtualBox, vui lòng xem nhận xét từ @superbatfish về câu hỏi ban đầu. Ông đưa ra một quan điểm tốt về sự khác biệt giữa ảo hóa và mô phỏng.

Cụ thể, "VM hỗ trợ phần cứng" sẽ không khả dụng trong HĐH khách "cấp cao nhất" (nghĩa là tại thời điểm viết bài này, VirtualBox không cung cấp VM phần cứng trong các HĐH khách ). Với VirtualBox, điều này có nghĩa là bạn chỉ có thể tạo các hệ điều hành "khách được lồng" 32 bit, ngay cả khi khách cấp cao nhất là 64 bit và máy chủ "thực" của bạn có VM phần cứng.

Có thể không phải là một showstopper cho bạn, nhưng nó đáng chú ý. Tôi cần điều này để chạy Vagrant trên máy khách Ubuntu trong Windows, để thử nghiệm sách dạy nấu ăn Chef.


Vậy bạn đã có thể chạy Vagrant trên máy khách Ubuntu trong máy chủ Windows chưa?
wvducky

2
@wisbucky vâng, tôi có thể chạy nó ở chế độ 32 bit, nhưng không phải 64 bit. Vì tất cả các hệ thống sản xuất của tôi là 64 bit, nó không phải là một thử nghiệm hoàn hảo nhưng vẫn hoạt động đủ tốt.
Toby J

3
Trừ khi tôi nhầm, giờ đây bạn có thể chạy các hộp Vagrant 64 bit trong Ubuntu VM bằng cách sử dụng nhà cung cấp Docker cho Vagrant, vì các container không dựa vào ảo hóa phần cứng: vagrantup.com/docs/docker . Hộp Vagrant bạn đang sử dụng sẽ phải hỗ trợ điều đó.
Brendan

@Brendan, trừ khi bạn phải chạy các chương trình 64 bit cụ thể, sau đó sử dụng bộ chứa docker so với chạy hộp ảo 32 bit, hiệu suất có giống như vậy không?
serup

11

Linux-KVM có một số hỗ trợ cho các máy ảo lồng nhau. Tôi đã hỏi trên kênh KVM IRC và đã nhận được thông tin sau (nhưng đừng hiểu ý tôi, hãy tự mình thử):

  • CPU AMD nên hoạt động tốt, khách có Xen và Hyper-V được biết là hoạt động,
  • CPU Intel cần mã nguồn KVM Git mới nhất và chỉ những khách có KVM mới làm việc

Tôi chưa thử cái này bao giờ. Một tìm kiếm cho "KVM lồng nhau" sẽ cung cấp cho bạn đủ thông tin để tự mình thử.

EDIT: KVM sẽ chỉ chạy trên máy chủ Linux. Tôi chưa nhận được bất kỳ thông tin đáng tin cậy nào về phần mềm ảo hóa Windows liên quan đến hỗ trợ VM lồng nhau. 'Đúng', ý tôi là nhà ảo thuật trưng bày các phần mở rộng ảo hóa cho khách. Bạn luôn có thể chạy một VM lồng nhau bằng cách sử dụng một trình ảo hóa phần mềm thuần túy (ví dụ: dịch động), nhưng điều đó sẽ chậm hơn đáng kể.

EDIT: Bochs, mà bạn đã đề cập, là một trình ảo hóa chỉ dành cho phần mềm. Điều này có nghĩa là nó sẽ luôn chậm và sẽ không liên quan nếu trình ảo hóa trên máy chủ hiển thị các phần mở rộng ảo hóa cho khách (giống như KVM). Tuy nhiên, hầu hết các phần mềm ảo hóa khác (KVM, VirtualBox, VMWare) có thể sử dụng các phần mở rộng đó và sẽ hoạt động tốt hơn nhiều nếu chúng có sẵn.


Đến lần chỉnh sửa thứ hai của bạn: Vì vậy, nếu tôi chỉ chạy Bochs (và tôi không quan tâm quá nhiều nếu nó chậm), tôi có cần phải lo lắng về điều KVM không?
Javier

Nếu bạn đang chạy Bochs bên trong máy ảo, nó sẽ chậm như khi bạn chạy nó trên phần cứng (giả sử phần cứng của bạn có phần mở rộng ảo hóa, tức là AMD-v hoặc VT-x và chúng được kích hoạt trong BIOS, nếu không thì nó sẽ được thậm chí chậm hơn, như mọi thứ trong VM).
Ambroz Bizjak

Về ảo hóa Windows ... có vẻ như có thể, nhưng (kể từ tháng 6 năm 2016) chỉ hoạt động với HyperV-on-HyperV, với các bản dựng hệ điều hành "Windows Insider" và trên phần cứng của Intel. Từ msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/iêu
Đánh dấu

3

Nó có thể, nhưng không khả thi lắm, đặc biệt là cho sự phát triển. Có lẽ bạn nên xem Linux chạy như hệ điều hành gốc của bạn hoặc nhận hộp thứ hai để lưu trữ máy ảo.


Tôi hiểu rằng nó có thể phức tạp, nhưng chính xác thì ý của bạn là "không khả thi"?
Javier

1
Tôi cá là @peelman có nghĩa là: "Nó quá chậm so với mục đích thực tế". Tôi đã không thử bản thân mình.
CarlF

@carlf chính xác.
Peelman

1

Mô tả chi tiết về quy trình này có trên trang này: https://wiki.openstack.org/wiki/XenServer/VirtualBox

Trong thẻ mạng máy VirtualBox, bạn phải đặt cho phép tất cả ở Chế độ bừa bộn và một số tùy chọn khác và bạn có thể có os bên trong vm, ví dụ Xenserver bên trong vm, ví dụ VirtualBox.


1

, bạn có thể chạy một máy ảo trong một máy ảo. Những gì tôi đã làm là có được một máy tính Windows 7 Ultimate x64, chạy cùng một hệ điều hành trên máy ảo, sau đó chạy phiên bản 32 bit (nó không thể xử lý 64 bit trên lớp 3) trên lớp thứ 3. Nó khá là lag nhưng tôi đã xoay sở để đến thời điểm new york trên internet explorer với nó. Điều này có thể khó khăn nếu bạn không có một máy tính mạnh, nhưng bạn đang chạy Linux và Bochs, đó là các Hệ điều hành nhẹ, vì vậy điều đó là có thể.


-2

Vâng , có thể, cho rằng máy tính của bạn đủ mạnh để xử lý nó.

Trên máy của tôi (i7 4770S, RAM 16 GB), tôi đã có được mức độ không gian ảo là 4,5 (lần cuối cùng bị hỏng một nửa thời gian).

Tôi đã sử dụng VMware Player 12, vì VirtualBox không thích giả lập VM-x và nó thực sự chậm hơn. Ngay bây giờ, tôi đang cố gắng làm cho W2K hoạt động trên XP, nhưng VMware không thể cài đặt, VirtualBox tạo BSOD vì vậy tôi đang thử sử dụng QEMU.

Xem ảnh chụp màn hình này (một trong những ảnh chụp màn hình đẹp nhất tôi từng thấy):

nhập mô tả hình ảnh ở đây


Những thông tin mới nào câu trả lời này cung cấp?
Ramhound
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.