web-dev-qa-db-fra.com

Double amorçage ou machine virtuelle pour programmeur effectuant le développement Visual Studio?

Le scénario:

  • Je suis un développeur de logiciels indépendant principalement développé sous 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 + SSD de 128 Go. Le système d'exploitation est Ubuntu Linux

Il est possible que je reçoive des projets .NET/C # dans un avenir proche. Je suis donc à la recherche de conseils sur les points suivants:

  • Devrais-je choisir une solution à double démarrage ou utiliser des machines virtuelles pour Windows?
  • Si j'utilise le double amorçage: quelle est la séquence d'installation recommandée? Windows d'abord ou Linux d'abord? (Je cherche une réinstallation complète d'Ubuntu pour obtenir le dernier LTS afin de pouvoir commencer à installer le tout à jour)
  • Si je vais VM: 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?
26
codeape

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 lance 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 nombre de mises en garde et d’implications.

Jusqu'en janvier (date à laquelle nous avons eu de nouvelles machines), mon ordinateur de travail était configuré pour un double démarrage ou pour utiliser Linux en tant qu'hôte pour un système Windows 7 VM qui accédait directement à la partition Windows. Je n'ai jamais pris la peine d'essayer d'utiliser Windows en tant qu'hôte pour une machine virtuelle Linux à disque direct, mais c'est également possible. Mon ordinateur utilisait des BIOS/MBR hérités. 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 j'ai compris, cela devrait également être possible avec VMWare.

La performance était parfaitement acceptable pour mes besoins; J'ai donné à Windows 1 le cœur du processeur, 2 Go de mémoire, 1 moniteur et je ne me souviens plus de la quantité de mémoire vidéo. La VM é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 Windows 7 en mode démarrage natif et en mode VM a déclenché un avertissement de Windows indiquant 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 deux composants matériels. J'avais également besoin de "réparer" mon installation car de nombreux pilotes de bas niveau sont différents pour le matériel réel et le VM "matériel".

  • À chaque exécution de Windows Update (ou de toute autre opération d’E/S sur disque volumineux), mon disque dur était écrasé sous la charge et tout devenait lent sur les deux machines. Le déplacement de chaque système d'exploitation sur son propre disque dur dédié a bien résolu ce problème. L’utilisation d’un lecteur à état solide aurait également résolu le problème.

  • Pour certaines raisons, Ubuntu n'a parfois pas aimé se réveiller après une suspension (peut-être 20% du temps), ce qui équivaut à une mise hors tension matérielle de ma machine virtuelle Windows. En conséquence, je mettrais le VM tous les soirs avant de suspendre l'hôte.

  • Je devais faire très attention à ne jamais essayer de monter la partition Windows sous Linux pour éviter toute corruption/perte de données. J'ai rapidement ajouté une règle udev pour empêcher cela.

Bon, si ça ne vous semble pas trop grave, voici les détails: La référence la plus utile que j'ai trouvée pour faire ceci est ce blog: http://www.rajatarya.com/website/ apprivoiser-windows-virtualbox-vm . Voici les étapes résumées:

  • RTFM. Vraiment. Vous allez utiliser des commandes qui pourraient corrompre votre système de fichiers si cela était mal fait.

  • Trouvez les partitions.

  • Modifiez les autorisations de vos partitions (vous pouvez également démarrer votre VM à l'aide de Sudo, mais tous les fichiers créés sur le lecteur partagé hôte/invité seront la propriété de root).

  • Créez un MBR afin 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. Faites-le utiliser le vmdk que vous venez de créer.

  • Démarrez et réparez votre installation.

Je m'attendrais à rencontrer un grand nombre des mêmes problèmes en utilisant un hôte Windows, mais Linux gérerait probablement le matériel différent de manière plus élégante. Il serait peut-être plus facile d’utiliser une/des partition (s) partagée/home (et peut-être/opt) et d’avoir des partitions racine différentes pour les ordinateurs natifs par rapport aux ordinateurs invités.

12
KJP

Je fais le contraire en général, c’est mon système domestique est une machine Windows 7 et j’exécute diverses versions de Linux en tant que VM. Étant donné que Linux peut fonctionner assez 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 j’exécute un seul VM à la fois et donnez-lui au plus 1024 Mo de RAM au maximum pour en conserver beaucoup pour Windows).

Vos 8 Go de RAM devraient vous permettre d’exécuter assez facilement un Windows VM. 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 à des mesures de performance/débit pour les éléments que vous développez dans une VM (à moins que cet élément ne soit déployé dans un environnement similaire VM avec les mêmes spécifications, partout dans le monde. planche). Sinon, vous devriez être prêt à partir.

Et pour aborder les commentaires dans les autres discussions, naturellement, si vous voulez savoir que vous allez développer des applications qui nécessitent une grande quantité de ressources, l'optimisation à cette fin serait la solution (dans ces cas, le double démarrage serait certainement utile). être préférable à l’utilisation de machines virtuelles).

J'ai utilisé à la fois VMWare et VirtualBox, et je n'ai vu aucun succès réel en termes de performances. Je ne suis pas allé au-delà de l'analyse comparative des ordinateurs virtuels, 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).

12
user123

Cela dépend de votre façon de travailler et de ce que vous voulez que l'OS ressente .

Le double amorçage signifie redémarrer et amorcer si vous souhaitez modifier le système d'exploitation, cela prend temps . En tant que pigiste, travaillez-vous pendant 8 heures d'affilée avec un projet sans faire "votre" travail (votre "matériel" vous appartiendrait à votre démarrage linux).

Si vous travaillez 8 heures d'affilée 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 faire quelque chose sous Linux, passez à travailler de nouveau pendant 3 heures, puis à nouveau à Linux, etc. Ensuite, je choisirais VM.

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

Personnellement, je n’utilise qu’une machine virtuelle pour tester de nouvelles distributions Linux et parfois un faux serveur lors du développement (être capable de bousiller une machine virtuelle est inestimable et est bien moins fastidieux que de le faire sur votre disque dur actuel.). VM est également à la traîne et se sent moins réactif. J'ai besoin que mon système d'exploitation soit réactif et fluide, le VM manque dans ce domaine. Donc, je préfère le double démarrage.

Le partage de fichiers pose également un problème. Partager davantage sur un démarrage double (imaginez modifier un fichier sous Windows puis d’amorcer sous Linux uniquement pour vous rendre compte que vous avez manqué une ligne et que vous devez redémarrer Windows, le cauchemar!) Vous permet d’utiliser NFS ou Samba sur un ordinateur virtuel. partager des fichiers entre les OS en temps réel, sans problème.

Aussi sur pas assez de bélier comme dit Aboba, les ordures je dis. Je lance 4 Go et un VM dans Windows8. Rappelez-vous cependant de quelles ressources votre projet a besoin.

8
Karl Morrison

Ou que diriez-vous de cela. Vous êtes intéressé par .net/C #, alors pourquoi ne pas simplement utiliser Mono sur Linux? Sa très multiplateforme dans le sens Java est.

5
hanetzer

Personnellement, j’ai eu beaucoup d’expériences positives à prendre à mi-chemin, utilisez un hyperviseur tel que Xen pour que Linux et Windows fonctionnent sous un poids réduit. hyperviseur micro-noyau, ne subissez pas non plus d’impact négatif sur les performances 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 à un autre. Vous ne remarquerez aucun impact négatif sur les performances (en réalité, cela peut être une fraction de% plus lente Dans certains cas, vous ne le remarquerez pas, sauf si vous effectuez une analyse comparative pour le vérifier).

Le seul problème est que certaines fonctionnalités nécessitent que votre processeur prenne en charge la visualisation, mais chaque i7 le fait (autant que je sache), cela ne devrait donc pas vous poser de problème.

MODIFIER:

Xen contient son propre micro-noyau, Debian n’est pas nécessaire pour l’exécuter, la seule raison pour laquelle un système Linux est nécessaire 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 juste Linux, juste Windows ou les deux s'exécutant à tout moment, mais vous aurez besoin de Linux pour pouvoir configurer les paramètres de Xen, il est donc conseillé de laisser un petit Linux en tâche de fond pour le faire en cas de besoin.

Le matériel peut être géré de différentes manières. Xen fournit un ensemble de périphériques virtuels qui permettent à plusieurs invités d'utiliser simultanément un composant matériel, tels que des cartes réseau et des cartes son, etc.

Pour le matériel qui ne peut pas fonctionner de cette manière ou qui n’est nécessaire que par un invité à la fois, xen dispose de périphériques de passerelle, 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 accès réel à la carte graphique si vous avez besoin d'un rendu accéléré à grande vitesse sans surcharge de virtualisation .

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

Contrairement à ce que vous pouvez supposer au sujet de l’efficacité de cette configuration, il s’agit en fait d’un des rares moyens d’exécuter simultanément les deux systèmes d’exploitation tout en maintenant efficacement leurs performances natives. Si vous utilisez Google, vous constaterez que beaucoup d’entre eux ont eu du succès. Une telle configuration permet de faire fonctionner une machine de jeu haute performance ou d’autres systèmes exigeants.

4
Vality

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

Comme d'autres l'ont fait remarquer, l'utilisation d'un VM semble parfois lente et ne répond pas, ce qui peut être pénible.

Une dernière chose que je voudrais souligner: prenez votre temps, essayez de lancer un VM et vérifiez si vous êtes à l’aise.

Comme pour la commande
1) installez d'abord Windows, puis Linux (préféré)
2) Installez d'abord Linux, puis Windows (vous devez ensuite réinstaller le chargeur de démarrage).

Une dernière chose que je voudrais ajouter est que, pour les petits projets .Net, vous pouvez utiliser même linux en mono, vous n'avez donc pas besoin de passer de Windows à Linux.

3
Pratik Singhal

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 progressivement à linux (j'aime apt, zsh et vim!).

J'ai commencé avec Windows hébergeant Ubuntu dans Windows dans VMWare Player, qui fonctionnait assez bien, certainement très bien si vous faites principalement du développement Visual Studio et avez simplement besoin occasionnellement de paquet linux ou autre. Au fil du temps, j'ai constaté que je souhaitais travailler plus souvent dans l'environnement Linux et que l'intégration VM présentait quelques difficultés, alors ...

Alors que je passais principalement au développement sous Linux (beaucoup d'AS3 dans IntelliJ et certains nœud + python) avec seulement un besoin occasionnel de Windows (site ASP.NET), j'ai inversé la situation pour Ubuntu hébergeant une VirtualBox (utilisant un disk2vhd -> .vdi mon ancien disque Windows). Après une bonne dose de bidouillage, je suis assez satisfait de cela compte tenu de la division du travail que j’ai en général, mais si vous utilisez Visual Studio de manière sérieuse, vous voulez probablement que Windows héberge Linux, soit VirtualBox, soit VMWare Player.

Je dois toutefois noter quelques points douloureux: avec les pilotes vidéo AMD Ubuntu 14.04 standard, l’accélération 3D de VirtualBox ralentit Visual Studio ~ 10-100x; désactivez donc l’accélération au prix de certaines ralentissements; et vous voulez vraiment courir sur un SSD)

1
Simon Buchan