Khởi động kép hoặc máy ảo cho lập trình viên Linux có phát triển Visual Studio không?


26

Kịch bản:

  • Tôi là một nhà phát triển phần mềm tự do, chủ yếu phát triển trên Linux (Python, MySQL, MongoDB, v.v.)
  • Máy tính làm việc của tôi là máy tính xách tay Lenovo với bộ xử lý i7 và RAM 8GB. SSD lớn HD + 128 GB. HĐH là Ubuntu Linux

Tôi có thể nhận được một số dự án .NET / C # trong tương lai gần, do đó tôi đang tìm kiếm một số hướng dẫn sau:

  • Tôi nên đi tìm giải pháp khởi động kép hay sử dụng máy ảo cho công cụ Windows?
  • Nếu tôi đi khởi động kép: Trình tự cài đặt được đề xuất là gì? Windows trước hay Linux trước? (Tôi đang xem một bản cài đặt lại Ubuntu hoàn chỉnh để có LTS mới nhất để tôi có thể bắt đầu cài đặt mọi thứ mới)
  • Nếu tôi đi VM: VMWare Workstation và VirtualBox so sánh hiệu năng như thế nào?
  • Thiết lập giấc mơ của tôi có thể là như sau:
    • Khởi động kép
    • Nhưng nếu tôi khởi động vào Linux, tôi có thể khởi động phân vùng Windows dưới dạng máy ảo. Điều này có thể không?
    • Và / hoặc: Nếu tôi khởi động vào Windows, tôi có thể khởi động phân vùng Linux dưới dạng máy ảo. Điều này có thể không?

5
Bạn phải luôn luôn làm Windows trước tiên sau Ubuntu vì bạn muốn Grub thay thế chuỗi khởi động Windows Bootloader. Có vài chục câu hỏi về cách làm điều đó. Các quyết định về hiệu suất nên được đưa ra cho chính bạn
Ramhound

Visual studio là một ứng dụng mạnh mẽ và có thể hoặc không thể chạy đủ tốt trong môi trường ảo của bạn.
Frank Thomas

Câu trả lời:


12

Những người khác đã trả lời phần còn lại của câu hỏi của bạn, nhưng tôi thấy họ đã bỏ qua phần này:

Nhưng nếu tôi khởi động vào Linux, tôi có thể khởi động phân vùng Windows dưới dạng máy ảo. Điều này có thể không? Và / hoặc: Nếu tôi khởi động vào Windows, tôi có thể khởi động phân vùng Linux dưới dạng máy ảo. Điều này có thể không?

Câu trả lời ngắn gọn là có.

Câu trả lời dài là có, nhưng với số lần cẩn thận và hàm ý.

Cho đến tháng 1 này (khi chúng tôi có máy mới), tôi đã cấu hình máy tính làm việc của mình để khởi động kép hoặc sử dụng Linux làm máy chủ cho Windows 7 VM truy cập trực tiếp vào phân vùng Windows. Tôi chưa bao giờ bận tâm đến việc sử dụng Windows làm máy chủ lưu trữ cho máy ảo Linux đĩa trực tiếp, nhưng cũng có thể. Máy tính của tôi đã sử dụng BIOS / MBR cũ, tôi không biết phải làm thế nào nếu bạn sử dụng UEFI / GPT.

Tôi đã chọn VirtualBox để làm điều đó, nhưng từ những gì tôi hiểu thì cũng có thể thực hiện được với VMWare.

Hiệu suất hoàn toàn chấp nhận được cho mục đích của tôi; Tôi đã cho lõi CPU Windows 1, bộ nhớ 2GB, 1 màn hình và tôi không nhớ bộ nhớ video là bao nhiêu. VM có khả năng phát video và làm việc với ứng dụng Java GUI của tôi và nhiều trang web có nội dung phong phú.

Tôi sẽ thảo luận về sự kỳ lạ trước khi đi vào chi tiết:

  • Việc chuyển đổi giữa Windows 7 khởi động và chế độ VM đã kích hoạt cảnh báo của Windows rằng bản sao Windows của tôi không phải là chính hãng. Tùy thuộc vào giấy phép của bạn, MS có thể coi đây là vi phạm giấy phép bằng cách cài đặt trên hai phần cứng. Tôi cũng cần phải "sửa chữa" cài đặt của mình vì nhiều trình điều khiển cấp thấp khác nhau đối với phần cứng thực và phần cứng "VM".

  • Mỗi khi Windows Update chạy (hoặc bất kỳ hoạt động I / O đĩa lớn nào khác), đĩa cứng của tôi đã bị nghiền nát khi tải và mọi thứ trên cả hai máy đều bị chậm. Di chuyển mỗi hệ điều hành sang ổ cứng chuyên dụng của riêng nó đã khắc phục vấn đề này một cách độc đáo; sử dụng một ổ đĩa trạng thái rắn cũng sẽ giải quyết vấn đề.

  • Vì một số lý do, thỉnh thoảng Ubuntu không thích thức dậy sau khi tạm ngưng (có thể là 20% thời gian), tương đương với việc tắt nguồn cho máy ảo Windows của tôi. Kết quả là tôi sẽ tắt máy VM mỗi tối trước khi tạm dừng máy chủ.

  • Tôi đã phải rất cẩn thận để không bao giờ cố gắng gắn kết phân vùng Windows trong Linux để ngăn ngừa hỏng / mất dữ liệu có thể xảy ra. Tôi nhanh chóng thêm một quy tắc udev để ngăn chặn điều này.

Được rồi, nếu điều đó không có vẻ quá tệ, đây là chi tiết: Tài liệu tham khảo hữu ích nhất tôi tìm thấy để làm điều này là blog này: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Dưới đây là các bước được tóm tắt:

  • RTFM. Có thật không. Bạn sẽ sử dụng các lệnh có thể làm hỏng hệ thống tệp của bạn nếu làm sai.

  • Tìm các phân vùng.

  • Thay đổi quyền cho phân vùng của bạn (thay vào đó, bạn có thể khởi động VM bằng sudo, nhưng sau đó mọi tệp được tạo trên ổ đĩa chia sẻ máy chủ / máy khách sẽ được sở hữu bởi root).

  • Tạo MBR để khách không thử sử dụng bộ tải khởi động bình thường.

  • Sử dụng lệnh nội bộ VirtualBox để tạo hình ảnh vmdk để sử dụng cho VM.

  • Tạo VM. Có nó sử dụng vmdk bạn vừa tạo.

  • Khởi động và sửa chữa cài đặt của bạn.

Tôi hy vọng sẽ tìm thấy nhiều vấn đề tương tự khi sử dụng máy chủ Windows, nhưng Linux có thể sẽ xử lý các phần cứng khác nhau một cách thanh lịch hơn. Nó thực sự có thể dễ dàng hơn khi sử dụng (các) phân vùng dùng chung / nhà (và có thể / opt) và chỉ có các phân vùng gốc khác nhau cho máy khách vs máy khách.


Tôi đã thực hiện phương pháp VM trên máy Mac trong nhiều năm và tôi thấy ngay cả một ổ SSD cũng không tự cắt nó. Bạn cần tách máy chủ và khách của mình trên các ổ đĩa hoàn toàn khác nhau để ngăn chặn hệ thống trở thành I / O bị ràng buộc. Mặc dù SSD không cải thiện mọi thứ nhưng không có gì so với việc sử dụng ổ đĩa thứ hai (và nếu cả hai đều là SSD bạn đang bay!)
Keith Jackson

12

Nói chung, tôi làm ngược lại, đó là hệ thống gia đình của tôi là một máy Windows 7 và tôi chạy các hương vị khác nhau của Linux dưới dạng VM. Là Linux có thể hoạt động khá độc đáo với tài nguyên hạn chế, điều này đối với tôi mặc dù tôi chỉ có 4GB RAM (nhớ rằng điều này có nghĩa là tôi chạy một máy ảo một lúc và thường cung cấp cho nó tối đa 1024 MB RAM để giữ được nhiều RAM cho cửa sổ).

RAM 8GB của bạn sẽ cho phép bạn chạy Windows VM khá dễ dàng. Tôi nghĩ rằng câu hỏi lớn duy nhất ở đây là loại kết quả mà bạn sẽ muốn đo lường cho sự phát triển của mình. Tôi sẽ do dự khi dựa vào bất kỳ số liệu hiệu suất / thông lượng nào cho các mục bạn phát triển trong VM (trừ khi nó sẽ được triển khai đến một môi trường VM tương tự có cùng thông số kỹ thuật trên bảng). Nếu không thì bạn nên đi.

Và để chạm vào các bình luận trong luồng khác, một cách tự nhiên nếu bạn biết rằng bạn sẽ phát triển các ứng dụng cần một lượng lớn tài nguyên, thì tối ưu hóa cho mục đích đó sẽ là cách tốt nhất (vì vậy trong những trường hợp đó, khởi động kép chắc chắn sẽ nên sử dụng VM's).

Tôi đã sử dụng cả VMWare và VirtualBox và tôi chưa thấy bất kỳ lượt truy cập hiệu suất thực sự nào bằng cách sử dụng. Tôi chưa đi đến mức độ chuẩn của VM, tôi chỉ đơn giản là không nhận thấy bất kỳ tác động tiêu cực nào từ một trong hai nền tảng (Vẫn sử dụng VirtualBox tại nhà và VMware tại nơi làm việc).


Nếu Linux của bạn xử lý chạy trên 1GB RAM trong máy ảo, điều đó có nghĩa là bạn có thể dễ dàng chạy Windows trong máy ảo và cũng chỉ định 3GB VRAM. Trong trường hợp của câu hỏi, lý thuyết tương tự đi. Giữ 1GB cho HĐH Linux cơ sở của bạn và gán 7GB cho Windows. Nó không thực sự quan trọng hệ điều hành cơ sở là gì và VM. Miễn là bạn đang chạy cả hai, bạn đang chia sẻ cùng một tài nguyên. Đối với tôi, điều đó không thực sự quan trọng, cả hai hệ điều hành đều vui lòng chạy trong máy ảo và nếu bạn có tài nguyên để chạy cả hai, thật tuyệt khi có thể xoay vòng giữa chúng mà không phải khởi động lại.
Jakke

Tôi thích VirtualBox để chạy máy ảo của mình, vì tôi đã thấy rò rỉ bộ nhớ nghiêm trọng trong VMware Player AND Workstation (phiên bản 10). Tôi đang nói về> 4 máy ảo chạy cùng lúc, trên một hệ thống có RAM 32 GB. Cả hai sản phẩm của VW bắt đầu sử dụng tất cả ram cho đến khi nó gặp sự cố, trong khi VB đang vui vẻ chạy trong nhiều tuần mà không gặp vấn đề gì.
Jakke

8

Nó phụ thuộc vào cách bạn làm việc và bạn muốn os cảm thấy như thế nào .

Khởi động kép có nghĩa là khởi động lại và khởi động nếu bạn muốn thay đổi HĐH, điều này cần có thời gian . Khi bạn làm việc tự do, bạn có làm việc 8 giờ liên tục với một dự án mà không thực hiện "công cụ" của bạn ("công cụ của bạn" sẽ là bạn trên khởi động linux của bạn).

Nếu bạn làm việc 8 giờ liên tục trong Windows, và sau đó dành phần còn lại của ngày trong Linux, hãy sử dụng khởi động kép. Nếu bạn làm việc 30 phút và sau đó muốn làm một cái gì đó trong Linux, hãy chuyển sang làm việc lại trong 3 giờ, sau đó vào linux, v.v. Sau đó tôi sẽ chọn VM.

Nếu bạn không chắc chắn làm cả hai. Khởi động kép và khi trong windows chạy VM. Bạn sẽ thấy một sự khác biệt rõ ràng giữa cả hai và bạn S like thích cái này hơn cái kia.

Cá nhân tôi chỉ sử dụng một vm để kiểm tra các bản linux mới và đôi khi là một máy chủ giả khi bị lệch (có thể làm hỏng vm là vô giá và ít rắc rối hơn khi thực hiện nó trên ổ cứng thực tế của bạn.). VM cũng chậm trễ và cảm thấy ít phản hồi hơn, tôi cần hệ điều hành của mình để cảm thấy nhanh nhạy và mượt mà, VM thiếu trong lĩnh vực này. Vì vậy, tôi thích khởi động kép.

Cũng có một vấn đề khi chia sẻ tập tin. Việc chia sẻ trên boot kép sẽ hiệu quả hơn (hãy tưởng tượng chỉnh sửa tệp trong windows boot rồi khởi động trong linux chỉ để nhận ra rằng bạn đã bỏ lỡ một dòng và phải khởi động lại vào windows, cơn ác mộng!) Trong đó trên vm bạn có thể sử dụng NFS hoặc samba để chia sẻ tập tin giữa các os trong thời gian thực, không có probs.

Cũng về không đủ ram như Aboba nói, rác rưởi tôi nói. Tôi chạy 4gb và VM trong Windows8. Hãy nhớ rằng về những gì tài nguyên dự án của bạn cần.


Về việc chia sẻ tệp: Tôi thực sự, thực sự, thực sự hy vọng bạn có mọi thứ bạn làm việc dưới sự kiểm soát nguồn trong trường hợp điểm trở thành tranh luận. Những điều bạn vẫn muốn chia sẻ giữa windows và Linux (vì .. tôi không biết) chỉ cần đi trên một phân vùng NTFS - có thể được đọc và ghi bởi cả hai hệ điều hành.
Voo

Cuộc sống của GIT 4! Tôi làm rất nhiều chương trình riêng tư vì vậy tôi không cần git cho điều đó (tôi biết tôi biết đó là cách thực hành tốt nhưng tôi lười biếng). Về NFTS, đó chính xác là những gì tôi đã nói! tuy nhiên việc khởi động giữa các os mất nhiều thời gian. Và trong một vm cả hai tập tin đều có sẵn trong thời gian thực!
Karl Morrison

Phân vùng Ubuntu của tôi tự động gắn kết tất cả các phân vùng của Windows, do đó, hệ thống tệp / tệp truy cập ít nhất không nên gặp sự cố. Ngoài ra, chúng là phần mềm của bên thứ 3 để gắn các phân vùng EXT3 / 4 trên windows.
kuldeep.kamboj

Một cân nhắc khác là liệu bạn có muốn phát triển Windows Phone hay không. Nếu đó là trường hợp, bạn không thể chạy Visual Studio trong môi trường ảo, vì trình giả lập WP chính là máy ảo Hyper-V. Bạn có thể chạy Windows 8 với ứng dụng khách Hyper-V được bật, Linux trong máy ảo và vẫn có quyền truy cập vào trình giả lập để phát triển WP.
rjrapson

5

Hoặc làm thế nào abou này. Bạn quan tâm đến .net / C #, vậy tại sao không sử dụng Mono trên linux? Nền tảng chéo của nó theo nghĩa java là.


Chính xác là suy nghĩ của tôi - Tôi đã chơi với việc tạo một trò chơi C # Othello một cửa sổ đơn giản trên Visual studio, và nó chỉ chạy tốt khi nhập dự án và chạy trên MonoDevelop.
NoBugs

3
Như một lời cảnh báo, Mono không hỗ trợ các dự án WPF. Vì vậy, nếu OP đang tìm cách phát triển các ứng dụng WPF, điều đó sẽ không hoạt động. Ngoài ra, tôi là một fan hâm mộ lớn của Mono, nhưng kể từ khi Novell từ bỏ dự án và lựa chọn của Xamarin trong việc xử lý tình trạng mới, tôi hơi thận trọng khi đầu tư nhiều nỗ lực hơn vào nó.
Boluc Papuccuoglu

1
Tôi đã cân nhắc sử dụng mono, và chắc chắn sẽ dùng thử. Nhưng có thể có vấn đề khi các thành viên khác trong nhóm sử dụng Visual Studio?
codeape

Bạn thực sự sẽ bỏ lỡ .NET vui nếu bạn không sử dụng Visual Studio.
demkoryu

3
@codeape Có rất nhiều tính năng và thư viện không được hỗ trợ trong Mono; đây có lẽ không phải là một lựa chọn nghiêm túc nếu khách hàng của bạn không đặc biệt quan tâm đến việc nhắm mục tiêu Mono.
Casey

4

Cá nhân tôi đã có nhiều trải nghiệm tích cực khi sử dụng nhà nửa đường, sử dụng một trình ảo hóa như Xen, sau đó bạn có thể có cả Linux và Windows chạy dưới một trình ảo hóa hạt nhân siêu nhẹ, không ảnh hưởng đáng kể và cấu hình này linh hoạt hơn nhiều , cho phép bạn dễ dàng phân bổ lại tài nguyên giữa hai người bất cứ lúc nào.

Điều này gần như phù hợp với thiết lập giấc mơ của bạn được đề cập khi bạn có thể khởi động hoặc tắt hai hệ điều hành một cách độc lập bất cứ lúc nào để phân bổ lại tài nguyên cho người khác và bạn sẽ không thể nhận thấy bất kỳ cú đánh hiệu suất nào (thực tế nó có thể chậm hơn một phần% là một số trường hợp nhưng bạn sẽ không nhận thấy điều này trừ khi bạn đang đo điểm chuẩn cụ thể để kiểm tra điều này).

Điểm hấp dẫn duy nhất là một số tính năng nhất định yêu cầu CPU của bạn hỗ trợ trực quan hóa tuy nhiên mọi i7 đều làm (afaik) vì vậy đây không phải là vấn đề đối với bạn.

CHỈNH SỬA:

Xen chứa hạt nhân riêng của nó, Debian không cần thiết để chạy nó, lý do duy nhất người ta cần một hệ thống linux là cấu hình lại Xen vì chương trình cấu hình là một chương trình linux mà bạn chạy trên một trong những khách (khách là thuật ngữ Xen sử dụng có nghĩa là một VM). Bạn có thể chỉ cần linux, chỉ cần windows hoặc cả hai chạy bất cứ lúc nào, nhưng bạn sẽ cần linux chạy để định cấu hình cài đặt của Xen vì vậy nên để một linux nhỏ chạy trong nền để làm điều này khi cần.

Phần cứng có thể được xử lý theo một số cách, Xen cung cấp một bộ thiết bị ảo cho phép một phần cứng được sử dụng bởi nhiều khách cùng một lúc như card mạng và card âm thanh, v.v.

Đối với phần cứng không thể hoạt động theo cách này hoặc chỉ cần cho một khách tại một thời điểm xen kẽ có thiết bị chuyển qua, điều này có nghĩa là bạn có thể chọn và chọn bất cứ lúc nào khách có quyền truy cập trực tiếp vào phần cứng và có thể chuyển đổi bất kỳ lúc nào thời gian. Điều này có thể được thực hiện để cung cấp cho khách truy cập cụ thể quyền truy cập vào card đồ họa nếu bạn cần kết xuất tốc độ cao mà không cần bất kỳ chi phí ảo hóa nào .

Cũng có thể có một khách trực tiếp sử dụng card đồ họa ở chế độ chuyển qua như đã giải thích ở trên nhưng vẫn xem những người khác sử dụng giao thức giống như VNC cục bộ làm cho màn hình của các khách khác xuất hiện trong cửa sổ (nghĩ như hộp ảo hoặc máy tính để bàn từ xa) trong khi người ta có quyền kiểm soát trực tiếp card đồ họa; hoặc tất nhiên bạn chỉ có thể chuyển đổi giữa các màn hình của khách cho phép truy cập trực tiếp tại một thời điểm.

Trái với những gì bạn có thể giả định về hiệu quả của thiết lập này, thực tế, đây là một trong số ít cách để chạy cả hai hệ điều hành cùng một lúc trong khi duy trì hiệu suất gốc hiệu quả trong cả hai, nếu bạn thực hiện một số cách bạn sẽ thấy nhiều người đã sử dụng thành công như một thiết lập để chạy một máy chơi game hiệu năng cao hoặc các hệ thống đòi hỏi khắt khe khác.


Bạn có thể giới thiệu bất kỳ hướng dẫn / hướng dẫn nào để thiết lập tất cả như bạn đã đề cập không? Tôi muốn có một hệ thống linux / win7.
Gene Pavlovsky

3

Theo kinh nghiệm của tôi (tôi cũng làm việc trên các ứng dụng .Net trong khi thử nghiệm những thứ hay ho và giải quyết các vấn đề về thuật toán trên linux), khởi động kép sẽ là lựa chọn tốt nhất của bạn.

Như những người khác đã chỉ ra, đôi khi sử dụng VM cảm thấy chậm và không phản hồi, điều này có thể là một nỗi đau.

Một điều nữa tôi sẽ chỉ ra rằng nó làm mất thời gian của bạn và thử chạy VM và kiểm tra xem bạn có thấy thoải mái với nó không.

Đối với thứ tự
1) trước tiên hãy cài đặt windows và sau đó là linux (được
cài đặt sẵn) 2) Cài đặt linux trước rồi đến windows (sau đó bạn phải cài đặt lại bootloader)

Một điều nữa tôi muốn thêm là đối với các dự án .Net nhỏ, bạn có thể sử dụng ngay cả linux bằng mono, do đó không cần phải chuyển đổi qua lại từ windows sang linux.


1

Tôi đã thực hiện rất nhiều quá trình phát triển linux / Visual Studio được hơn một năm nay, bắt đầu với Visual Studio và chuyển sang linux theo thời gian (tôi thích apt, zsh và vim!).

Tôi đã bắt đầu với Windows lưu trữ Ubuntu trong VMWare Player, hoạt động khá tốt, chắc chắn rất tuyệt nếu bạn chủ yếu thực hiện phát triển Visual Studio và đôi khi chỉ cần một số gói chỉ linux hoặc bất cứ thứ gì. Theo thời gian, tôi thấy rằng tôi muốn công việc của mình ở trong môi trường linux thường xuyên hơn và việc tích hợp VM có một vài điểm đau, vì vậy ...

Khi tôi chuyển sang phát triển linux chủ yếu (rất nhiều AS3 trong IntelliJ và một số nút + python) chỉ với nhu cầu thỉnh thoảng cho Windows (trang web ASP.NET), tôi đã chuyển nó sang Ubuntu lưu trữ VirtualBox (sử dụng đĩa2vhd -> .vdi của đĩa windows cũ của tôi). Sau một thời gian khó khăn, tôi khá hài lòng với sự phân chia công việc mà tôi thường có, nhưng nếu bạn đang thực hiện bất kỳ số lượng Visual Studio nghiêm túc nào, bạn có thể muốn Windows lưu trữ Linux, VirtualBox hoặc VMWare Player sẽ ổn.

Tuy nhiên, tôi cần lưu ý một vài điểm đau: với trình điều khiển video AMD 14.04 AMD tiêu chuẩn, khả năng tăng tốc 3D của VirtualBox làm cho Visual Studio chậm hơn 10 - 100 lần, do đó vô hiệu hóa khả năng tăng tốc với chi phí chậm chạp; và bạn thực sự muốn chạy trên SSD)


2
Chỉ cần lưu ý rằng các câu trả lời có nội dung "Bạn không có đủ ram" nghe có vẻ khá điên rồ với tôi: Bản thân VS là 32 bit nên không thể sử dụng nhiều hơn 4GB. Bạn có thể có một chút chậm chạp nếu bạn đang chạy phiên bản đầy đủ của IIS với SQL Server, nhưng các phiên bản Express bình thường của những phiên bản đó sẽ ổn. SSD quan trọng hơn nhiều đối với hiệu suất.
Simon Buchan
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.