Dual-boot atau mesin virtual untuk programmer Linux yang melakukan pengembangan Visual Studio?

26

Skenario:

  • Saya adalah pengembang perangkat lunak lepas yang sebagian besar berkembang di Linux (Python, MySQL, MongoDB, dll.)
  • Komputer kerja saya adalah laptop Lenovo dengan prosesor i7 dan RAM 8GB. Big HD + 128 GB SSD. OSnya adalah Ubuntu Linux

Saya mungkin mendapatkan beberapa proyek .NET / C # dalam waktu dekat, oleh karena itu saya mencari beberapa panduan tentang hal berikut:

  • Haruskah saya menggunakan solusi dual-boot atau menggunakan mesin virtual untuk Windows?
  • Jika saya menggunakan dual-boot: Apa urutan instalasi yang disarankan? Windows dulu atau Linux dulu? (Saya sedang mencari instal ulang Ubuntu lengkap untuk mendapatkan LTS terbaru sehingga saya dapat mulai menginstal semuanya segar)
  • Jika saya menggunakan VM: Bagaimana cara VMWare Workstation dan VirtualBox membandingkan kinerja?
  • Pengaturan impian saya mungkin adalah sebagai berikut:
    • Boot ganda
    • Tetapi jika saya boot ke Linux, saya bisa mem-boot partisi Windows sebagai mesin virtual. Apakah ini mungkin?
    • Dan / atau: Jika saya boot ke Windows, saya bisa mem-boot partisi Linux sebagai mesin virtual. Apakah ini mungkin?
kode kode
sumber
5
Anda harus selalu melakukan Windows yang pertama daripada Ubuntu karena Anda ingin Grub mengganti rantai-boot Windows Bootloader. Ada beberapa lusin pertanyaan tentang cara melakukannya. Keputusan kinerja harus dibuat sendiri
Ramhound
Visual studio adalah aplikasi yang intens, dan mungkin atau mungkin tidak berjalan cukup baik di lingkungan virtual Anda.
Frank Thomas

Jawaban:

12

Orang lain telah membahas sisa pertanyaan Anda, tetapi saya melihat mereka membiarkan bagian ini tidak terselesaikan:

Tetapi jika saya boot ke Linux, saya bisa mem-boot partisi Windows sebagai mesin virtual. Apakah ini mungkin? Dan / atau: Jika saya boot ke Windows, saya bisa mem-boot partisi Linux sebagai mesin virtual. Apakah ini mungkin?

Jawaban singkatnya adalah ya.

Jawaban panjangnya adalah ya, tetapi dengan sejumlah peringatan dan implikasi.

Hingga Januari ini (ketika kami mendapat mesin-mesin baru), komputer kerja saya telah dikonfigurasikan ke dual boot, atau menggunakan Linux sebagai host untuk Windows 7 VM yang langsung mengakses partisi Windows. Saya tidak pernah repot mencoba menggunakan Windows sebagai host untuk Linux VM disk langsung, tetapi juga mungkin. Komputer saya menggunakan warisan BIOS / MBR, saya tidak yakin bagaimana melakukan ini jika Anda menggunakan UEFI / GPT.

Saya memilih VirtualBox untuk melakukannya, tetapi dari apa yang saya pahami seharusnya juga dimungkinkan dengan VMWare.

Kinerja sangat dapat diterima untuk tujuan saya; Saya memberi Windows 1 inti CPU, memori 2GB, 1 monitor, dan saya tidak ingat berapa banyak memori video. VM mampu memutar video dan bekerja dengan aplikasi Java GUI saya dan banyak situs web yang kaya konten.

Saya akan membahas keanehan sebelum masuk ke detail:

  • Beralih antara Native-boot dan mode-VM Windows 7 memicu peringatan Windows bahwa salinan Windows saya tidak asli. Tergantung pada lisensi Anda, MS dapat menganggap ini sebagai pelanggaran lisensi dengan menginstal pada dua perangkat keras. Saya juga perlu "memperbaiki" instalasi saya karena banyak driver tingkat rendah berbeda untuk perangkat keras nyata dan "perangkat keras" VM.

  • Setiap kali Pembaruan Windows berjalan (atau operasi I / O disk besar lainnya), hard disk saya hancur karena beban dan semua yang ada di kedua mesin menjadi lambat. Memindahkan setiap OS ke hard drive khusus sendiri telah memperbaiki masalah ini dengan baik; menggunakan solid state drive juga akan menyelesaikan masalah.

  • Untuk beberapa alasan, Ubuntu kadang-kadang tidak suka bangun setelah ditangguhkan (mungkin 20% dari waktu), yang setara dengan mematikan daya keras untuk VM Windows saya. Akibatnya saya akan mematikan VM setiap malam sebelum menangguhkan tuan rumah.

  • Saya harus sangat berhati-hati untuk tidak pernah mencoba me-mount partisi Windows di Linux untuk mencegah kemungkinan kerusakan / kehilangan data. Saya dengan cepat menambahkan aturan udev untuk mencegah hal ini.

Baiklah, jika itu tidak terdengar terlalu buruk, berikut detailnya: Referensi paling berguna yang saya temukan untuk melakukannya adalah blog ini: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Berikut langkah-langkah yang dirangkum:

  • RTFM. Sangat. Anda akan menggunakan perintah yang dapat merusak sistem file Anda jika melakukan kesalahan.

  • Temukan partisi.

  • Ubah izin untuk partisi Anda (atau Anda dapat mem-boot VM menggunakan sudo, tetapi kemudian file apa pun yang dibuat pada drive bersama host / tamu akan dimiliki oleh root).

  • Buat MBR agar tamu tidak mencoba menggunakan bootloader normal.

  • Gunakan perintah internal VirtualBox untuk membuat gambar vmdk untuk digunakan untuk VM.

  • Buat VM. Apakah itu menggunakan vmdk yang baru Anda buat

  • Boot dan perbaiki instalasi Anda.

Saya berharap menemukan banyak masalah yang sama menggunakan host Windows, tetapi Linux mungkin akan menangani perangkat keras yang berbeda dengan lebih elegan. Akan lebih mudah menggunakan partisi shared / home (dan mungkin / opt) dan hanya memiliki partisi root yang berbeda untuk mesin native vs guest.

KJP
sumber
Saya telah mengambil pendekatan VM pada Mac selama bertahun-tahun dan saya menemukan bahkan SSD tidak memotongnya sendiri. Anda perlu memisahkan host dan tamu Anda pada drive yang sama sekali berbeda untuk mencegah kedua sistem menjadi terikat I / O. Meskipun SSD memang meningkatkan hal-hal itu tidak seberapa dibandingkan dengan menggunakan drive kedua (dan jika mereka berdua SSD Anda terbang!)
Keith Jackson
12

Saya melakukan yang sebaliknya secara umum, yaitu sistem rumah saya adalah mesin Windows 7 dan saya menjalankan berbagai rasa Linux sebagai VM. Menjadi sebagai Linux dapat berfungsi dengan sangat baik dengan sumber daya terbatas, ini bekerja untuk saya walaupun saya hanya memiliki 4GB RAM (ingat ini berarti saya menjalankan satu VM pada satu waktu dan biasanya memberikan 1024MB RAM paling banyak untuk menjaga banyak untuk Windows).

8GB RAM Anda seharusnya memungkinkan Anda menjalankan VM Windows dengan mudah. Saya pikir satu-satunya pertanyaan besar di sini adalah jenis hasil yang Anda ingin ukur untuk perkembangan Anda. Saya akan ragu untuk mengandalkan metrik kinerja / throughput untuk item yang Anda kembangkan dalam VM (kecuali jika itu akan digunakan untuk lingkungan VM yang sama dengan spesifikasi yang sama di seluruh papan). Kalau tidak, Anda harus baik untuk pergi.

Dan untuk menyentuh komentar di utas lain, tentu saja jika Anda akan mengetahui bahwa Anda akan mengembangkan aplikasi yang membutuhkan sejumlah besar sumber daya, maka mengoptimalkan untuk tujuan itu akan menjadi cara untuk pergi (jadi dalam kasus itu, dual boot tentu akan lebih baik menggunakan VM).

Saya telah menggunakan VMWare dan VirtualBox, dan saya belum melihat kinerja nyata yang menggunakan keduanya. Saya belum pergi sejauh benchmark dalam VM, saya hanya tidak melihat adanya dampak negatif dari kedua platform (Masih menggunakan VirtualBox di rumah, dan VMware di tempat kerja).

pengguna123
sumber
Jika Linux Anda menangani berjalan pada 1GB RAM dalam VM, itu berarti Anda dapat dengan mudah menjalankan Windows di VM dan menetapkan 3GB VRAM juga. Dalam kasus pertanyaan, teori yang sama berlaku. Simpan 1GB untuk OS Linux dasar Anda dan tetapkan 7GB untuk Windows. Tidak masalah apa OS dasar dan VM. Selama Anda menjalankan keduanya, Anda berbagi sumber daya yang sama. Bagi saya, itu tidak terlalu penting, kedua OS itu senang dijalankan di VM dan jika Anda memiliki sumber daya untuk menjalankan keduanya, itu selalu menyenangkan untuk dapat berpindah di antara mereka tanpa harus reboot.
Jakke
Saya lebih suka VirtualBox untuk menjalankan VM saya, karena saya telah melihat kebocoran memori yang serius di VMware Player AND Workstation (versi 10). Saya berbicara tentang> 4 VM yang berjalan pada saat yang sama, pada sistem dengan 32GB RAM. Kedua produk VW mulai menggunakan semua ram sampai crash, sementara VB dengan senang hati berjalan selama berminggu-minggu tanpa masalah.
Jakke
8

Hal ini tergantung pada bagaimana Anda bekerja dan bagaimana Anda ingin os untuk merasa .

Dual booting artinya memulai ulang dan mem-boot jika Anda ingin mengubah OS, ini membutuhkan waktu . Ketika Anda freelance, apakah Anda bekerja 8 jam penuh dengan sebuah proyek tanpa melakukan hal-hal "Anda" ("barang-barang Anda" adalah Anda di boot linux Anda).

Jika Anda bekerja 8 jam berturut-turut di Windows, dan kemudian menghabiskan sisa hari itu di Linux, gunakan dual boot. Jika Anda bekerja 30 menit dan kemudian ingin melakukan sesuatu di Linux, beralih ke bekerja lagi selama 3 jam, lalu ke linux lagi dll. Lalu saya akan memilih VM.

Jika Anda tidak yakin lakukan keduanya. Dual boot dan ketika di windows menjalankan VM. Anda akan melihat perbedaan yang jelas antara keduanya dan Anda AKAN lebih suka satu dari yang lain.

Saya pribadi hanya menggunakan vm untuk menguji distro linux baru dan kadang-kadang server palsu ketika devloping (bisa mengacaukan vm sangat berharga dan jauh lebih mudah melakukannya di hard drive Anda yang sebenarnya.). VM juga ketinggalan dan terasa kurang responsif, saya perlu os saya untuk merasa responsif dan lancar, VM kurang di daerah ini. Jadi saya lebih suka dual boot.

Ada juga masalah ketika harus berbagi file. Lebih banyak pekerjaan untuk dibagikan pada dual boot (bayangkan mengedit file di boot windows kemudian boot di linux hanya untuk menyadari bahwa Anda melewatkan satu baris dan harus reboot ke windows, mimpi buruk!) Di mana pada vm Anda dapat menggunakan NFS atau samba untuk berbagi file antar os secara real time, tanpa masalah.

Juga tentang ram tidak cukup seperti kata Aboba, saya katakan sampah. Saya menjalankan 4GB dan VM di Windows8. Ingat juga tentang sumber daya apa yang dibutuhkan proyek Anda.

Karl Morrison
sumber
Tentang berbagi file: Saya sangat, sangat, sangat berharap Anda memiliki semua yang Anda kerjakan di bawah kendali sumber dalam hal ini masalahnya menjadi diperdebatkan. Hal-hal yang masih ingin Anda bagikan antara windows dan Linux (karena .. Saya tidak tahu) langsung saja menggunakan partisi NTFS - yang dapat dibaca dan ditulis oleh kedua OS.
Voo
GIT 4 kehidupan ofc! Saya melakukan banyak pemrograman pribadi jadi saya tidak perlu git untuk itu (saya tahu saya tahu itu praktik yang baik tetapi saya malas). Tentang NFTS, itulah yang saya katakan! Namun booting antar os membutuhkan waktu. Dan dalam vm kedua file tersedia secara real time!
Karl Morrison
Ubuntu Partition saya secara otomatis me-mount semua partisi Windows, Jadi setidaknya sistem file akses / file windows seharusnya tidak menjadi masalah. Juga mereka adalah perangkat lunak pihak ke-3 untuk me-mount partisi EXT3 / 4 di windows.
kuldeep.kamboj
Pertimbangan lain adalah apakah Anda ingin melakukan pengembangan Windows Phone. Jika demikian, Anda tidak dapat menjalankan Visual Studio di lingkungan virtual, karena emulator WP itu sendiri adalah Hyper-V VMs. Anda dapat menjalankan Windows 8 dengan klien Hyper-V diaktifkan, Linux dalam VM di bawah itu dan masih memiliki akses ke emulator untuk pengembangan WP.
rjrapson
5

Atau bagaimana dengan ini. Anda tertarik dengan .net / C #, jadi mengapa tidak menggunakan Mono saja di linux? Sangat lintas platform dalam arti java.

Hanetzer
sumber
Tepat seperti yang saya pikirkan - saya bermain dengan membuat game C # Othello satu-jendela sederhana di Visual studio, dan itu berjalan dengan baik ketika mengimpor proyek dan berjalan di MonoDevelop.
NoBugs
3
Sebagai peringatan, Mono tidak mendukung proyek WPF. Jadi jika OP ingin mengembangkan aplikasi WPF, itu tidak akan berhasil. Juga, saya adalah penggemar berat Mono, tetapi karena Novell meninggalkan proyek dan pilihan Xamarin dalam menangani keadaan baru, saya agak berhati-hati dalam menginvestasikan lebih banyak usaha di dalamnya.
Boluc Papuccuoglu
1
Saya sudah mempertimbangkan menggunakan mono, dan pasti akan mencobanya. Tetapi mungkin ada masalah ketika anggota tim lain menggunakan Visual Studio?
codeape
Anda benar-benar akan kehilangan .NET menyenangkan jika Anda tidak menggunakan Visual Studio.
demonkoryu
3
@codeape Ada banyak fitur dan pustaka yang tidak didukung di Mono; ini mungkin bukan opsi serius jika klien Anda tidak secara khusus tertarik menargetkan Mono.
Casey
4

Secara pribadi saya telah memiliki banyak pengalaman positif dalam mengambil jalan pulang, gunakan hypervisor seperti Xen Anda kemudian dapat memiliki Linux dan Windows berjalan di bawah hypervisor mikro-kernel ringan, tidak mengambil hit kinerja yang signifikan dan konfigurasi ini jauh lebih fleksibel , memungkinkan Anda untuk dengan mudah merealokasi sumber daya di antara keduanya kapan saja.

Ini hampir cocok dengan pengaturan impian Anda yang disebutkan ketika Anda dapat mem-boot atau mematikan kedua OS secara independen kapan saja untuk mengalokasikan kembali sumber daya ke yang lain dan Anda tidak akan dapat melihat adanya hit kinerja (pada kenyataannya mungkin sebagian kecil dari% lebih lambat) ada beberapa kasus tetapi Anda tidak akan melihat ini kecuali Anda membuat tolok ukur khusus untuk menguji ini).

Satu-satunya masalah adalah fitur tertentu memerlukan CPU Anda untuk mendukung visualisasi namun setiap i7 melakukannya (afaik) jadi ini seharusnya tidak menjadi masalah bagi Anda.

EDIT:

Xen mengandung microkernel sendiri, Debian tidak diperlukan untuk menjalankannya, satu-satunya alasan seseorang akan membutuhkan sistem linux adalah mengkonfigurasi ulang Xen karena program konfigurasi adalah program linux yang Anda jalankan pada salah satu tamu (tamu adalah istilah yang digunakan Xen berarti VM). Anda dapat memiliki hanya linux, hanya windows atau keduanya yang berjalan kapan saja, tetapi Anda membutuhkan linux untuk dapat mengkonfigurasi pengaturan Xen sehingga disarankan untuk membiarkan linux kecil berjalan di latar belakang untuk melakukan hal ini ketika diperlukan.

Perangkat keras dapat ditangani dalam beberapa cara, Xen menyediakan satu set perangkat virtual yang memungkinkan perangkat keras untuk digunakan oleh beberapa tamu sekaligus seperti kartu jaringan dan kartu suara dll.

Untuk perangkat keras yang tidak dapat bekerja dengan cara ini atau hanya diperlukan oleh satu tamu pada suatu waktu xen memiliki perangkat pass-through, ini berarti Anda dapat memilih dan memilih kapan saja tamu tersebut memiliki akses langsung ke bagian perangkat keras dan dapat mengubahnya di mana saja waktu. Ini dapat dilakukan untuk memberikan akses nyata ke tamu kartu grafis tertentu jika Anda perlu rendering yang dipercepat dengan kecepatan tinggi tanpa ada virtualisasi .

Dimungkinkan juga untuk memiliki satu tamu secara langsung menggunakan kartu grafis dalam mode pass-through seperti dijelaskan di atas tetapi masih melihat yang lain menggunakan protokol seperti VNC lokal yang membuat layar tamu lain muncul di windows (berpikir seperti kotak virtual atau desktop jarak jauh) sementara seseorang memiliki kontrol langsung terhadap kartu grafis; atau tentu saja Anda bisa beralih di antara layar tamu dengan memberikan satu akses langsung pada satu waktu.

Berlawanan dengan apa yang Anda anggap tentang efisiensi pengaturan ini, faktanya adalah salah satu dari beberapa cara untuk menjalankan kedua OS pada saat yang sama dengan tetap mempertahankan kinerja asli yang efektif di keduanya, jika Anda melakukan beberapa googling, Anda akan menemukan banyak yang telah sukses menggunakan pengaturan seperti itu untuk menjalankan mesin game berkinerja tinggi atau sistem yang menuntut lainnya.

Vality
sumber
Bisakah Anda merekomendasikan howto / guide untuk mengatur semuanya seperti yang Anda sebutkan? Saya ingin memiliki sistem gentoo linux / win7.
Gene Pavlovsky
3

Menurut pengalaman saya (saya juga bekerja pada aplikasi .Net sambil menguji hal-hal keren dan menyelesaikan masalah algo di linux), dual boot akan menjadi pilihan terbaik Anda.

Seperti yang telah ditunjukkan oleh orang lain, menggunakan VM terasa lambat dan tidak responsif pada suatu waktu, yang bisa sangat menyebalkan.

Satu hal lagi yang akan saya tunjukkan bahwa itu membutuhkan waktu Anda dan coba jalankan VM dan periksa apakah Anda nyaman dengan itu.

Adapun pesanan
1) instal windows pertama dan kemudian linux (preffered)
2) Instal linux pertama maka windows (maka Anda harus menginstal ulang bootloader)

Satu hal lagi yang ingin saya tambahkan adalah bahwa untuk proyek .Net kecil Anda bahkan dapat menggunakan linux menggunakan mono, jadi tidak perlu beralih ke sana kemari dari windows ke linux.

Pratik Singhal
sumber
1

Saya telah melakukan banyak pengembangan linux / Visual Studio aktif selama lebih dari satu tahun sekarang, dimulai dengan Visual Studio dan pindah ke linux dari waktu ke waktu (saya suka apt, zsh dan vim!).

Saya mulai dengan Windows hosting Ubuntu di VMWare Player, yang bekerja cukup baik, tentu hebat jika Anda terutama melakukan pengembangan Visual Studio dan hanya sesekali membutuhkan beberapa paket linux saja atau apa pun. Seiring waktu saya menemukan saya ingin pekerjaan saya berada di lingkungan linux lebih sering dan integrasi VM memiliki beberapa poin rasa sakit, jadi ...

Ketika saya beralih ke terutama pengembangan linux (banyak AS3 di IntelliJ dan beberapa node + python) dengan hanya sesekali membutuhkan Windows (situs ASP.NET), saya membalikkan itu ke Ubuntu hosting VirtualBox (menggunakan disk2vhd -> .vdi dari disk windows lama saya). Setelah cukup banyak mengutak-atik saya cukup senang dengan ini mengingat pekerjaan yang saya miliki secara umum, tetapi jika Anda melakukan Visual Studio dalam jumlah yang serius, Anda mungkin ingin Windows hosting Linux, baik VirtualBox atau VMWare Player harus baik-baik saja.

Saya harus mencatat beberapa poin menyakitkan: dengan driver video AMD Ubuntu 14.04 standar Akselerasi 3D VirtualBox membuat Visual Studio ~ 10-100x lebih lambat, jadi nonaktifkan akselerasi dengan mengorbankan kelesuan; dan Anda benar - benar ingin berjalan pada SSD)

Simon Buchan
sumber
2
Hanya mencatat bahwa jawaban yang mengatakan "Anda tidak memiliki ram yang cukup" terdengar cukup gila bagi saya: VS itu sendiri 32-bit sehingga tidak dapat menggunakan lebih dari 4GB. Anda mungkin memiliki beberapa kelesuan jika Anda menjalankan edisi penuh IIS dengan SQL Server, tetapi versi Express normal dari mereka harus baik-baik saja. SSD jauh lebih penting untuk kinerja.
Simon Buchan