Machine à double démarrage ou virtuelle pour programmeur Linux qui fait du développement Visual Studio?

26

Le scénario:

  • Je suis un développeur de logiciels indépendant qui développe principalement sur Linux (Python, MySQL, MongoDB etc.)
  • Mon ordinateur de travail est un ordinateur portable Lenovo avec un processeur i7 et 8 Go de RAM. Big HD + 128 Go SSD. Le système d'exploitation est Ubuntu Linux

Je pourrais obtenir des projets .NET / C # dans un proche avenir, je suis donc à la recherche de conseils sur les points suivants:

  • Dois-je opter pour une solution à double démarrage ou utiliser des machines virtuelles pour Windows?
  • Si je fais un double démarrage: Quelle est la séquence d'installation recommandée? Windows d'abord ou Linux d'abord? (Je regarde une réinstallation complète d'Ubuntu pour obtenir le dernier LTS de toute façon afin que je puisse commencer à installer tout frais)
  • Si je vais sur une machine virtuelle: comment VMWare Workstation et VirtualBox se comparent-ils en termes de performances?
  • La configuration de mes rêves serait probablement la suivante:
    • Double démarrage
    • Mais si je démarre sous Linux, je peux démarrer la partition Windows en tant que machine virtuelle. Est-ce possible?
    • Et / ou: Si je démarre sous Windows, je peux démarrer la partition Linux en tant que machine virtuelle. Est-ce possible?
codeape
la source
5
Vous devez toujours faire d'abord Windows puis Ubuntu car vous voulez que Grub remplace le démarrage en chaîne du chargeur de démarrage Windows. Il y a plusieurs dizaines de questions sur la façon de procéder. Les décisions de performance doivent être prises par vous
Ramhound
Visual studio est une application intense et peut ou non fonctionner suffisamment bien dans votre environnement virtuel.
Frank Thomas

Réponses:

12

D'autres ont couvert le reste de votre question, mais je vois qu'ils ont laissé cette partie sans réponse:

Mais si je démarre sous Linux, je peux démarrer la partition Windows en tant que machine virtuelle. Est-ce possible? Et / ou: Si je démarre sous Windows, je peux démarrer la partition Linux en tant que machine virtuelle. Est-ce possible?

La reponse courte est oui.

La réponse longue est oui, mais avec un certain nombre de mises en garde et d'implications.

Jusqu'en janvier (lorsque nous avons obtenu de nouvelles machines), mon ordinateur de travail était configuré pour un double démarrage ou pour utiliser Linux comme hôte pour une machine virtuelle Windows 7 qui accédait directement à la partition Windows. Je n'ai jamais pris la peine d'essayer d'utiliser Windows comme hôte pour une machine virtuelle Linux à disque direct, mais c'est également possible. Mon ordinateur a utilisé le BIOS / MBR hérité, je ne sais pas comment procéder si vous utilisez UEFI / GPT.

J'ai choisi VirtualBox pour le faire, mais d'après ce que je comprends, cela devrait également être possible avec VMWare.

La performance était parfaitement acceptable pour mes besoins; J'ai donné un cœur de processeur Windows 1, 2 Go de mémoire, 1 moniteur et je ne me souviens pas de la quantité de mémoire vidéo. La machine virtuelle était capable de lire des vidéos et de travailler avec mon application d'interface graphique Java et de nombreux sites Web à contenu riche.

Je vais discuter de l'étrangeté avant d'entrer dans les détails:

  • Le basculement entre le démarrage natif et le mode VM Windows 7 a déclenché l'avertissement de Windows que ma copie de Windows n'était pas authentique. En fonction de votre licence, MS peut considérer cela comme une violation de licence en installant sur deux pièces de matériel. J'ai également eu besoin de "réparer" mon installation car de nombreux pilotes de bas niveau sont différents pour le matériel réel et le "matériel" de la machine virtuelle.

  • Chaque fois que Windows Update s'exécutait (ou toute autre opération d'E / S sur grand disque), mon disque dur était écrasé sous charge et tout sur les deux machines devenait lent. Le déplacement de chaque système d'exploitation vers son propre disque dur dédié a résolu ce problème; l'utilisation d'un disque SSD aurait également résolu le problème.

  • Pour une raison quelconque, Ubuntu n'aimait pas parfois se réveiller après une suspension (peut-être 20% du temps), ce qui équivalait à une mise hors tension forcée pour ma machine virtuelle Windows. En conséquence, je mettrais la machine virtuelle hors tension tous les soirs avant de suspendre l'hôte.

  • J'ai dû faire très attention à ne jamais tenter de monter la partition Windows sous Linux pour éviter une éventuelle corruption / perte de données. J'ai rapidement ajouté une règle udev pour éviter cela.

D'accord, si cela ne semble pas trop mal, voici les détails: La référence la plus utile que j'ai trouvée pour ce faire est ce blog: http://www.rajatarya.com/website/taming-windows-virtualbox-vm . Voici les étapes résumées:

  • RTFM. Vraiment. Vous utiliserez des commandes qui pourraient corrompre votre système de fichiers en cas d'erreur.

  • Trouvez les partitions.

  • Modifiez les autorisations pour vos partitions (vous pouvez également démarrer votre machine virtuelle à l'aide de sudo, mais tous les fichiers créés sur le lecteur partagé hôte / invité appartiendront à root).

  • Créez un MBR pour que l'invité n'essaye pas d'utiliser le chargeur de démarrage normal.

  • Utilisez une commande interne VirtualBox pour créer l'image vmdk à utiliser pour la machine virtuelle.

  • Créez la VM. Demandez-lui d'utiliser le vmdk que vous venez de créer.

  • Démarrez et réparez votre installation.

Je m'attendrais à trouver plusieurs des mêmes problèmes en utilisant un hôte Windows, mais Linux gérerait probablement les différents matériels plus élégamment. Il pourrait être plus facile d'utiliser une ou des partitions partagées / home (et peut-être / opt) et de simplement avoir des partitions racine différentes pour les machines natives vs invitées.

KJP
la source
J'ai adopté l'approche VM sur Mac depuis des années et je trouve que même un SSD ne le coupe pas tout seul. Vous devez séparer votre hôte et votre invité sur des disques totalement différents pour empêcher l'un ou l'autre système de devenir lié aux E / S. Bien qu'un SSD améliore les choses, ce n'est rien comparé à l'utilisation d'un deuxième lecteur (et si ce sont les deux SSD que vous pilotez!)
Keith Jackson
12

Je fais généralement le contraire, c'est que mon système domestique est une machine Windows 7 et j'exécute différentes versions de Linux en tant que VM. Étant donné que Linux peut fonctionner très bien avec des ressources limitées, cela fonctionne pour moi même si je n'ai que 4 Go de RAM (attention, cela signifie que je n'exécute qu'une seule machine virtuelle à la fois et que je lui donne généralement 1024 Mo de RAM au maximum pour en garder beaucoup) Pour les fenêtres).

Vos 8 Go de RAM devraient vous permettre d'exécuter une machine virtuelle Windows assez facilement. Je pense que la seule grande question ici est le type de résultats que vous voudrez mesurer pour votre développement. J'hésiterais à me fier à toute mesure de performances / débit pour les éléments que vous développez dans une machine virtuelle (à moins qu'elle ne soit déployée dans un environnement de machine virtuelle similaire avec les mêmes spécifications à tous les niveaux). Sinon, vous devriez être prêt à partir.

Et pour aborder les commentaires dans un autre fil, naturellement si vous allez savoir que vous développerez des applications qui nécessitent une grande quantité de ressources, l'optimisation à cette fin serait la voie à suivre (donc dans ces cas, le double démarrage serait certainement être préférable à l'utilisation de VM).

J'ai utilisé à la fois VMWare et VirtualBox, et je n'ai vu aucun résultat de performance réel en utilisant l'un ou l'autre. Je ne suis pas allé au point de comparer les machines virtuelles à l'intérieur, je n'ai tout simplement pas remarqué d'impact négatif de l'une ou l'autre plate-forme (utilisez toujours VirtualBox à la maison et VMware au travail).

user123
la source
Si votre Linux gère l'exécution sur 1 Go de RAM dans une machine virtuelle, cela signifie que vous pouvez facilement exécuter Windows dans une machine virtuelle et affecter également 3 Go de VRAM. Dans le cas de la question, la même théorie va. Conservez 1 Go pour votre système d'exploitation Linux de base et attribuez 7 Go à Windows. Peu importe le système d'exploitation de base et la machine virtuelle. Tant que vous exécutez les deux, vous partagez les mêmes ressources. Pour moi, cela n'a pas vraiment d'importance, les deux systèmes d'exploitation sont heureux de fonctionner dans une machine virtuelle et si vous avez les ressources pour exécuter les deux, il est toujours agréable de pouvoir basculer entre eux sans avoir à redémarrer.
Jakke
Je préfère VirtualBox pour exécuter mes machines virtuelles, car j'ai vu de graves fuites de mémoire dans VMware Player AND Workstation (version 10). Je parle de> 4 VM fonctionnant en même temps cependant, sur un système avec 32 Go de RAM. Les deux produits VW commencent à utiliser tout le vérin jusqu'à ce qu'il se bloque, tandis que VB fonctionne avec bonheur pendant des semaines sans aucun problème.
Jakke
8

Cela dépend de la façon dont vous travaillez et de la façon dont vous voulez que le système d'exploitation se sente .

Le double démarrage signifie redémarrer et démarrer si vous souhaitez changer le système d'exploitation, cela prend du temps . En tant que freelance, travaillez-vous 8 heures d'affilée avec un projet sans faire "votre" truc ("votre truc" serait vous sur votre boot linux).

Si vous travaillez 8 heures de suite sous Windows, puis passez le reste de la journée sous Linux, utilisez le double démarrage. Si vous travaillez 30 minutes et que vous voulez ensuite faire quelque chose sous Linux, passez de nouveau à travailler pendant 3 heures, puis à nouveau sous Linux, etc. Ensuite, je choisirais VM.

Si vous n'êtes pas sûr, faites les deux. Double démarrage et lorsque dans Windows exécutez une machine virtuelle. Vous verrez une nette différence entre les deux et vous préférerez l'un à l'autre.

Personnellement, j'utilise uniquement un vm pour tester de nouvelles distances linux et parfois un faux serveur lors du développement (être capable de bousiller un vm est inestimable et tellement moins compliqué que de le faire sur votre disque dur réel.). La VM est également en retard et se sent moins sensible, j'ai besoin que mon système d'exploitation soit réactif et fluide, la VM manque dans ce domaine. Je préfère donc le dual boot.

Il y a aussi un problème quand il s'agit de partager des fichiers. C'est plus de travail à partager sur un double démarrage (imaginez éditer un fichier au démarrage de Windows puis démarrer sous Linux seulement pour réaliser que vous avez manqué une ligne et devez redémarrer dans Windows, le cauchemar!) Où sur un vm, vous pouvez utiliser NFS ou samba pour partager des fichiers entre les os en temps réel, pas de problème.

Aussi pas assez de bélier comme le disait Aboba, je dis des ordures. J'exécute 4 Go et une machine virtuelle sous Windows8. Souvenez-vous cependant des ressources dont votre projet a besoin.

Karl Morrison
la source
À propos du partage de fichiers: j'espère vraiment, vraiment, vraiment que vous avez tout ce que vous travaillez sous le contrôle des sources, auquel cas le point devient théorique. Les choses que vous voulez toujours partager entre Windows et Linux (parce que ... je ne sais pas) vont simplement sur une partition NTFS - qui peut être lue et écrite par les deux systèmes d'exploitation.
Voo
GIT 4 life ofc! Je fais beaucoup de programmation privée, donc je n'ai pas besoin de git pour ça (je sais que je sais que c'est une bonne pratique mais je suis paresseux). À propos du NFTS, c'est exactement ce que je disais! cependant, le démarrage entre les os prend du temps. Et dans un vm, les deux fichiers sont disponibles en temps réel!
Karl Morrison
Ma partition Ubuntu monte automatiquement toutes les partitions de Windows, donc au moins accéder au système de fichiers / fichiers de Windows ne devrait pas être un problème. Ils sont également des logiciels tiers pour monter des partitions EXT3 / 4 sur Windows.
kuldeep.kamboj
Une autre considération est de savoir si vous voulez faire du développement Windows Phone. Si tel est le cas, vous ne pouvez pas exécuter Visual Studio dans un environnement virtuel, car les émulateurs WP sont eux-mêmes des machines virtuelles Hyper-V. Vous pouvez exécuter Windows 8 avec le client Hyper-V activé, Linux dans une machine virtuelle sous cela et avoir toujours accès aux émulateurs pour le développement WP.
rjrapson
5

Ou comment ça. Vous êtes intéressé par .net / C #, alors pourquoi ne pas simplement utiliser Mono sur linux? Sa plateforme très croisée au sens java est.

hanetzer
la source
Exactement mes pensées - j'ai joué avec la création d'un simple jeu C # Othello à fenêtre unique sur Visual studio, et cela a très bien fonctionné lors de l'importation du projet et de l'exécution sur MonoDevelop.
NoBugs
3
Comme mise en garde, Mono ne prend pas en charge les projets WPF. Donc, si l'OP cherche à développer des applications WPF, cela ne fonctionnera pas. De plus, j'étais un grand fan de Mono, mais depuis l'abandon de Novell du projet et le choix de Xamarin dans la gestion de la nouvelle situation, je suis un peu prudent à l'idée d'y investir plus d'efforts.
Boluc Papuccuoglu
1
J'ai envisagé d'utiliser le mono et je vais certainement l'essayer. Mais il pourrait y avoir des problèmes lorsque d'autres membres de l'équipe utilisent Visual Studio?
codeape
Vous manqueriez vraiment de plaisir .NET si vous n'utilisez pas Visual Studio.
demonkoryu
3
@codeape Il existe de nombreuses fonctionnalités et bibliothèques non prises en charge dans Mono; ce n'est probablement pas une option sérieuse si votre client n'est pas spécifiquement intéressé à cibler Mono.
Casey
4

Personnellement, j'ai eu de nombreuses expériences positives en prenant la route à mi-chemin, utilisez un hyperviseur tel que Xen, vous pouvez alors faire fonctionner Linux et Windows sous un hyperviseur micro-noyau léger, ni prendre un coup de performance significatif et cette configuration est beaucoup plus flexible , vous permettant de réaffecter facilement des ressources entre les deux à tout moment.

Cela correspond presque à la configuration de vos rêves, car vous pouvez démarrer ou arrêter les deux systèmes d'exploitation indépendamment à tout moment pour réaffecter des ressources à l'autre et vous ne pourrez pas remarquer de baisse de performances (en réalité, cela peut être une fraction d'un% plus lent dans certains cas, mais vous ne le remarquerez pas, sauf si vous effectuez une analyse comparative spécifique pour le tester).

Le seul problème est que certaines fonctionnalités nécessitent que votre CPU prenne en charge la visualisation, mais chaque i7 le fait (afaik), cela ne devrait donc pas être un problème pour vous.

MODIFIER:

Xen contient son propre micro-noyau, Debian n'est pas nécessaire pour l'exécuter, la seule raison pour laquelle on aurait besoin d'un système linux est de reconfigurer Xen car le programme de configuration est un programme linux que vous exécutez sur l'un des invités (invité est le terme utilisé par Xen pour signifier une VM). Vous pouvez avoir à tout moment linux, juste des fenêtres ou les deux, mais vous aurez besoin de linux pour configurer les paramètres de Xen, il est donc conseillé de laisser un petit linux en arrière-plan pour le faire en cas de besoin.

Le matériel peut être géré de plusieurs manières, Xen fournit un ensemble de périphériques virtuels qui permettent à un morceau de matériel d'être utilisé par plusieurs invités à la fois, comme les cartes réseau et les cartes son, etc.

Pour le matériel qui ne peut pas fonctionner de cette façon ou qui n'est requis que par un invité à la fois, xen dispose de dispositifs d'intercommunication, cela signifie que vous pouvez sélectionner et choisir à tout moment quel invité a un accès direct au matériel et peut le changer à tout moment. temps. Cela peut être fait pour donner à un invité spécifique un véritable accès à la carte graphique si vous avez besoin d'un rendu accéléré à haute vitesse sans surcharge de virtualisation .

Il est également possible d'avoir un invité directement en utilisant la carte graphique en mode passe-système comme expliqué ci-dessus, mais toujours en voir d'autres en utilisant un protocole local de type VNC qui fait apparaître l'écran des autres invités dans les fenêtres (pensez à une boîte virtuelle ou à un bureau distant) tandis que l'on a le contrôle direct de la carte graphique; ou bien sûr, vous pouvez simplement basculer entre les écrans des invités en donnant un accès direct à la fois.

Contrairement à ce que vous pouvez supposer sur l'efficacité de cette configuration, c'est en fait l'une des rares façons d'exécuter les deux systèmes d'exploitation en même temps tout en conservant des performances natives efficaces dans les deux, si vous effectuez une recherche sur Google, vous constaterez que beaucoup ont réussi à utiliser une telle configuration pour exécuter une machine de jeu haute performance ou d'autres systèmes exigeants.

Vality
la source
Pouvez-vous recommander un guide / guide pour tout configurer comme vous l'avez mentionné? Je veux avoir un système gentoo linux / win7.
Gene Pavlovsky
3

Selon mon expérience (je travaille également sur des applications .Net tout en testant des trucs sympas et en résolvant des problèmes d'algo sur linux), le double démarrage sera votre meilleur pari.

Comme d'autres l'ont souligné, l'utilisation d'une machine virtuelle semble parfois lente et ne répond pas, ce qui peut être pénible.

Une autre chose que je voudrais souligner, c'est que vous prenez votre temps et essayez d'exécuter une machine virtuelle et vérifiez si vous êtes à l'aise avec elle.

Comme pour l'ordre
1) installez d'abord windows puis linux (pré-configuré)
2) installez linux d'abord puis windows (ensuite vous devez réinstaller bootloader)

Une autre chose que je voudrais ajouter est que pour les petits projets .Net, vous pouvez même utiliser linux en mono, donc pas besoin de basculer de Windows vers linux.

Pratik Singhal
la source
1

Je fais beaucoup de développement linux / Visual Studio commuté depuis un peu plus d'un an maintenant, en commençant par Visual Studio et en passant à linux au fil du temps (j'aime apt, zsh et vim!).

J'ai commencé avec Windows hébergeant Ubuntu dans VMWare Player, qui fonctionnait assez bien, certainement génial si vous faites principalement du développement Visual Studio et que vous avez simplement besoin occasionnellement d'un package Linux uniquement ou autre. Au fil du temps, j'ai trouvé que je voulais que mon travail soit dans l'environnement Linux plus souvent et que l'intégration de la VM ait eu quelques problèmes, alors ...

Comme je suis passé principalement au développement linux (beaucoup d'AS3 dans IntelliJ et certains nœuds + python) avec seulement un besoin occasionnel de Windows (site ASP.NET), j'ai inversé cela pour Ubuntu hébergeant une VirtualBox (en utilisant un disk2vhd -> .vdi de mon ancien disque Windows). Après une bonne partie de violon, je suis assez satisfait de cela, étant donné la répartition du travail que j'ai généralement, mais si vous faites une quantité sérieuse de Visual Studio, vous voulez probablement que Windows héberge Linux, VirtualBox ou VMWare Player devrait être bien.

Je dois cependant noter quelques points douloureux: avec les pilotes vidéo standard Ubuntu 14.04 AMD, l'accélération 3D de VirtualBox rend Visual Studio ~ 10-100x plus lent, désactivez donc l'accélération au prix d'une certaine lenteur; et vous voulez vraiment courir sur un SSD)

Simon Buchan
la source
2
Le simple fait de noter que les réponses disant "Vous n'avez pas assez de RAM" me semble assez fou: VS lui-même est de 32 bits, il ne peut donc pas utiliser plus de 4 Go. Vous pouvez avoir un certain ralentissement si vous exécutez des éditions complètes d'IIS avec SQL Server, mais les versions normales d'Express de celles-ci devraient être correctes. Le SSD est beaucoup plus important pour les performances.
Simon Buchan