Connectez-vous

Tuto : Installer Debian sous VirtualBox en s'affranchissant des additions invité

Catégorie > Os
Par le
Dernière modification le
Tuto : Installer Debian sous VirtualBox en s'affranchissant des additions invité


VirtualBox c'est bien pratique pour créer et gérer des machines virtuelles, mais les additions invité fonctionnent une fois sur deux. On va donc voir comment installer un Debian Jessie dessus et surtout comment se passer de ces fameuses additions.



Avant-propos


Pour rappel, VirtualBox est un logiciel libre et gratuit de virtualisation détenu (ça commence à être une habitude) par Oracle. Ce qui est très cool c'est qu'il permet, comme son nom l'indique, de virtualiser des OS de toutes sortes, de se les refiler, d'en faire des instantanés, bref, de bidouiller.

Ma problématique dans le cas de ce tuto, c'est de me créer un environnement de développement correct, et de me mettre à une bonne pratique. Finis les Wamp ou Xampp pour développer en local, ça génère beaucoup trop de problèmes lors des mises en production. Pour résumer, votre environnement de développement se doit de plus en plus de ressembler à votre environnement de production, par exemple pour développer sous Framework, gérer des commandes lancées par des tâches CRON, etc. Ca évite aussi les mauvaises surprises pendant la mise en production, et ça permet d'anticiper certains besoins.

Du coup, dans l'optique de développer un site dédié à tourner sous Debian, quoi de plus logique que de le développer sous Debian? Le hic, c'est qu'on a pas forcément tous sous la main un serveur de développement, sur lequel on peut faire des conneries sans risquer de tout péter. C'est là que VirtualBox intervient.

On peut s'installer un petit Debian tranquille en local grâce à VirtualBox, et se monter une config qui va bien. On a dans ce cas besoin de deux choses indispensables pour faire le pont entre la machine hôte et la machine virtuelle : la possibilité de faire des copier/coller, et la possibilité d'échanger des fichiers entre les deux de façon transparente (comprenez sans être obligé de passer par FileZilla ou autre utilitaire, mais directement via l'explorateur de fichier de la machine hôte). Ces deux choses sont normalement permises par l'installation des additions invité de VirtualBox.

Le problème? Ces additions invité, c'est de la grosse merde. Le souci n'est pas nouveau. Je n'ai jamais vraiment compris pourquoi, mais d'une version à l'autre, elles sont tout simplement impossibles à installer. Et ne croyez pas que je n'ai pas cherché, j'ai tenté toutes sortes de bidouilles et écumé pas mal de forums. Même à partir de la machine virtuelle elle-même en invite de commande, rien à faire. Sur la v5.1.14 de VBox, dernière en date à l'heure où je vous parle, je n'ai tout simplement jamais réussi à installer cette bouse.

De toute façon, si c'est pour que ça ne marche plus à la prochaine update, je ne vois pas l'intérêt. On va donc voir comment installer Debian 8.7.1, dernière version en date au moment de l'article, sous VBox et comment faire beaucoup mieux que ces fameuses additions à l'aide de Putty et de Samba.


Installation de Debian


Rendez-vous sur le site officiel pour télécharger et installer VirtualBox. Perso je prends toujours l'Extension Pack aussi, même si sans besoin des additions invité, je doute de son utilité. Passons.

Une fois tout ça installé, il faut télécharger Debian. Vous avez plein de manières de le récupérer, vous pouvez même prendre des versions plus légères qui s'installeront en partie via le réseau. Moi j'ai pris celle-ci, en http, et c'était bien long. Allez donc vous faire un café ou torturer des chatons le temps que ça finisse, comme tout admin système qui se respecte.

On entre dans le vif du sujet. On va pouvoir créer notre VM. Dans VirtualBox, cliquez sur Nouvelle et donnez lui un petit nom, et choisissez le type de la distri.


On ne va pas s'éterniser sur les écrans suivants, moi je laisse 1Go de mémoire, Créer un disque dur virtuel maintenant, VDI pour le type d'image disque, Dynamiquement alloué, je lui laisse son joli nom DevServer et je lui alloue 8Go d'espace par défaut. On clique sur Créer, fin de l'histoire.

Votre machine est à présent listée dans VirtualBox, et elle est éteinte. Maintenant, il va falloir lui fournir un système d'exploitation à installer dessus, parce qu'une machine, virtuelle ou pas, a besoin d'un OS.

Là encore je ne vais pas rentrer dans des paramétrages de haut vol. Placez-vous sur votre VM et cliquez sur Configuration. A l'onglet Stockage, vous pouvez voir votre disque dur virtuel au format VDI (VirtualBox Disk Image) dans les contrôleurs SATA, et un contrôleur IDE, le lecteur CD de la machine, vide. Il n'y a plus qu'à cliquer sur l'icône du CD-ROM pour aller chercher votre image de Debian téléchargée précédemment. Chez moi c'est donc debian-8.7.1-i386-amd64-source-DVD-1.iso


Vous pouvez faire OK et démarrer la machine en cliquant sur le joli bouton vert. Comme n'importe quelle vraie machine, elle va booter à partir du CD pour installer le système d'exploitation qui s'y trouve.
L'installation est un guide "step by step", mais je vais quand même vous détailler les étapes pour réaliser une installation la plus basique possible.

A l'aide des touches du clavier on choisit une install en 64 bit, et on choisit ses paramètres de langue, de clavier et géographiques.





S'ensuit un chargement de tout un tas de trucs. Arrive le moment de nommer la machine :


Le nom du domaine, vous pouvez le laisser vide.


On passe au mot de passe root et à sa confirmation, et à la création d'un nouvel utilisateur. Comme je n'ai aucune problématique de sécurité ici, chez moi ce sera root / root et dev / dev.



Après encore quelques écrans de chargement, on passe aux partitions. Là encore je vais au plus simple et je me laisse guider.






Cette fois le système de base va s'installer.


Il nous propose un miroir comme source d'installation des paquets. On en choisira un "à la main" plus tard, donc on va dire non.


On refuse également de participer à l'étude statistique parce qu'on est des connards égoïstes.


Faites bien gaffe à utiliser la touche Espace pour décocher l'environnement de bureau, sans quoi vous vous retrouverez avec une interface graphique, et ça, pour un serveur web, c'est le mal! Les utilitaires usuels par contre nous seront bien utiles.


L'installation nous propose enfin d'installer GRUB sur le secteur d'amorçage, et comme c'est pas le principe d'une VM d'installer plusieurs OS différents sur la machine, on accepte.



L'installation est enfin terminée et on vous explique qu'il faut retirer le CD qu'on a téléchargé du lecteur avant de redémarrer. Normalement VBox vous le fait tout seul, mais vous pouvez vérifier que c'est bien le cas et l'éjecter si besoin. On clique sur Continuer et la machine redémarre sur son système d'exploitation.



Configuration de la VM


On va juste configurer le minimum vital pour survivre. Donc on se connecte en root directement sur la machine une fois qu'elle a fini de redémarrer.

D'abord, pour pouvoir installer des paquets via le net, il faut que Debian arrête de chercher le CD dans les sources. Pour ce faire on va éditer le fichier sources.list.

nano /etc/apt/sources.list



On commente les deux lignes concernant le CD-ROM qui n'est plus inséré avec des dièse.


# cd
# deb-src cdrom:[Debian GNU/Linux 8.7.1 _Jessie_ - Official Multi-architecture $
# deb cdrom:[Debian GNU/Linux 8.7.1 _Jessie_ - Official Multi-architecture i386$



On va commencer par donner les droits root à l'utisateur créé pendant l'installation. Eh oui, parce que par mesure de sécurité, Debian n'autorisera pas une connexion directe en SSH sous root. Pour la suite des opérations, ce sera donc plus pratique.

On installe la commande sudo.

apt-get install sudo



Puis on ajoute notre utilisateur dev à la liste des suoders.

adduser dev sudo



Notre utilisateur dev sera maintenant capable d'exécuter des commandes sudo.

Il est temps d'éteindre la machine, vous pouvez envoyer le signal d'extinction.


Ce serait pas mal à présent de pouvoir contacter la machine via SSH. Mais avant ça, une petite configuration de votre réseau virtuel s'impose.


Configuration réseau


Actuellement, vous êtes sur une machine réelle (la machine hôte) reliée, comme toutes les véritables machines de votre réseau local, à votre Box internet. Par exemple, l'IP de mon PC sur mon réseau local est 192.168.0.14, et je joins ma box via 192.168.0.254. Les IP de la forme 192.168.X.X sont de classe A et correspondent à de petits réseaux privés. Si vous faites un arp -a dans une invite de commande Windows sous la machine hôte, vous verrez que le serveur DHCP de votre box vous attribue généralement, pour tous les appareils (PC/tablette/smartphone etc) des IP en début de plage de la classe A, de la forme 192.168.0.X.

L'IP locale de votre machine est pour rappel visible en faisant ipconfig dans une invite de commande en face de Adresse IPv4 sous le nom de votre carte réseau (Ethernet ou Wifi selon votre mode de connexion). Mais VirtualBox, pour vous permettre de créer un réseau virtuel, vous a attribué une seconde carte réseau, virtuelle cette fois. Et cette carte fonctionne plus ou moins comme votre box, avec un serveur DHCP. C'est un peu un réseau dans le réseau.

Pour vous en convaincre, allez dans le menu Fichier->Paramètres de VirtualBox et dans l'onglet Réseau, puis cliquez sur le tournevis de Réseau hôte uniquement pour afficher l'adresse IPv4 de votre carte réseau virtuelle.




Vous pouvez voir que la mienne est 192.168.56.1. Pas besoin d'y toucher, c'était juste pour votre bonne compréhension. En gros, je pense que VirtualBox vous alloue une IP sur votre carte virtuelle beaucoup plus élevée que les autres pour ne pas entrer en conflit avec le "vrai" réseau.

Maintenant, rendez-vous dans la configuration réseau de votre machine (c'est pour ça qu'on l'a éteint au préalable). On ne touche pas à la première carte réseau qui est par défaut en mode NAT. Sachez tout de même que c'est cette première carte réseau qui a permis à notre VM de se connecter à internet pour aller chercher des paquets par exemple. Avec ce mode, la VM n'a pas vraiment d'adresse à proprement parler, mais se sert de l'adresse IP hôte comme passerelle pour se connecter à internet. Elle peut joindre la machine hôte, mais la machine hôte ne peut pas la joindre.

Du coup pour pouvoir la contacter, on va ajouter une seconde carte réseau en mode Réseau privé hôte, comme ceci.


Cette méthode permet à la machine hôte et à toutes la/les VM connectée/s de cette façon de communiquer entre elles. De cette manière, seule la machine hôte et éventuellement les autres VM de la machine hôte peuvent la joindre (mais là on s'en fout vu qu'on n'a qu'une VM).

En clair, si vous souhaitez, en plus, pouvoir joindre votre VM via un autre PC de votre réseau local, vous devez ajouter une 3e carte réseau en mode Accès par pont comme ceci :


Cette méthode d'accès par pont (bridge en anglais) permet en gros à la connexion de la VM de "sortir" sur le réseau local à travers la machine hôte. Notez que comme la machine hôte est en wifi, elle passe par la véritable carte wifi. Elle sera donc joignable aussi sur toutes les machines connectées à votre box.

Pour plus de précision concernant toutes ces méthodes d'accès, je vous invite à lire cet article.

Une fois les changements appliqués, on démarre la machine virtuelle une nouvelle fois, et on s'y connecte, encore, en root.

On va éditer le fichier de configuration du réseau.

nano /etc/network/interfaces



On ne touchera pas à eth0, la 1ere carte réseau par défaut. On va simplement ajouter une IP fixe sur la deuxième, eth1, qui aura pour valeur l'IP suivante de celle du réseau de VirtualBox que vous avez noté tout à l'heure. Chez moi c'était 192.168.56.1 donc je choisirai 192.168.56.2. L'idée c'est de rester sur la plage 192.168.56.X, mais comme il n'y a pas de risque de conflit, je choisis la valeur qui suit celle de ma carte réseau virtuel.


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

# Secondary network interface (static)
# For direct SSH between Host and VM
auto eth1
iface eth1 inet static
address 192.168.56.2
netmask 255.255.255.0



Enfin, si vous avez choisi de rendre la VM accessible sur tout le réseau local, ajoutez une troisième configuration statique correspondant à eth2. Pour éviter les conflits avec de vraies machines existantes, j'ai cette fois volontairement choisi une valeur élevée.


# Third network interface (static)
# For bridge access through the entire LAN
auto eth2
iface eth2 inet static
address 192.168.0.200
broadcast 192.168.0.255
netmask 255.255.255.0



Dernier détail qui a son importance, il va falloir installer openssh-server pour que le serveur soit capable d'être joignable en SSH. Sachez que le client openssh-client est déjà installé par défaut.

apt-get install openssh-server



Il n'y a plus qu'à redémarrer les services réseau.

/etc/init.d/networking restart



Normalement le shell vous répond OK.

Votre machine est maintenant joignable via le réseau local de votre machine hôte (chez moi c'est Windows 7) lorsqu'elle est démarrée, et vous pouvez la joindre via un ping en invite de commande.


Sachez que si vous avez mis en place l'accès par pont, elle est aussi joignable via l'IP 192.168.0.200 de la même manière, mais cette fois, carrément depuis n'importe quelle machine du réseau! Pratique hein? Ceci dit, si ça vous dérange pour des raisons de sécurité par exemple, vous pouvez simplement décocher la 3e carte réseau dans VirtualBox, et ne l'activer que ponctuellement lorsque vous en avez besoin.

C'est tout ce dont nous avions besoin pour une connexion SSH, on va pouvoir utiliser Putty.


Utilisation de Putty


Il s'agit du client SSH le plus populaire sous Windows. Oui, parce que contrairement à MacOS ou les distributions Linux qui intègrent un client SSH directement dans leur terminal, ce n'est pas le cas chez nos amis de chez Microsoft. Du coup si vous êtes sous Mac ou Linux, vous devriez pouvoir passer l'étape de l'installation de Putty et vous connecter directement dans votre invite de commande.

ssh dev@192.168.56.2



Pour les utilisateurs de Windows, on va le télécharger ici en prenant soin de prendre l'installateur putty-0.67-installer.msi et pas juste l'éxécutable.

Une fois que c'est fait, il suffit de lancer le petit utilitaire et de le configurer très basiquement.


Comme vous le voyez, il suffit de taper l'IP statique de la machine et de choisir le port 22, qui est le port SSH par défaut. Vous pouvez sauvegarder chaque machine à contacter en lui choisissant un nom et en faisant Save. Placez-vous sur le profil souhaité et faites Load pour ne pas avoir à retaper votre IP à chaque fois.

Il suffit ensuite de faire Open pour que la magie opère. Un avertissement de sécurité va apparaître la première fois, c'est normal. Il suffit d'accepter la clé. Faites Oui.


Et voilà, on vous demande votre login et pass comme d'habitude. Petit changement, pour des raisons de sécurité, vous n'avez pas le droit de vous connecter en root via SSH. Je vous en ai parlé plus haut, ce n'est plus autorisé par Debian par défaut.


Alors nous comme on est en développement et en local on s'en fout un peu de la sécurité, et c'est un paramètre qui se change. Mais perso je me connecte tout simplement d'abord via dev et je passe en root après, ou je reste carrément sous dev et j'exécute les commandes qui le nécessitent en sudo.


Mais quel intérêt de se connecter à distance sur le réseau local via Putty me direz-vous? Eh bien, vous êtes tout de suite beaucoup plus à l'aise. Vous pouvez redimensionner votre fenêtre, faire un clic droit pour y coller des beaux pâtés de texte (commandes relou, morceaux de config...), vous pouvez scroller avec votre souris pour faire défiler l'historique du shell, faire des Ctrl+C pour copier du texte de la machine distante vers la machine hôte, et vous avez quand même la coloration syntaxique! C'est beaucoup mieux que d'interagir avec votre VM directement via l'interface de VBox.


Installation de Samba


Maintenant qu'on peut faire des copier/coller, on va quand même faire une petite manip avant de passer à la suite. On va éditer le fichier des sources de dépots. Ca nous permettra de choisir des sources sûres et d'être un minimum à jour. Moi je passe en root, mais si ce n'est pas le cas chez vous il faudra précéder toutes vos commandes de sudo à partir de maintenant.

nano /etc/apt/sources.list



On va éditer notre fichier pour y mettre les dépots de base. On en profite aussi pour choisir un miroir sympa, qui se charge de choisir pour nous le miroir le plus efficace à chaque téléchargement, httpredir.debian.org. Au passage, on va aussi ajouter les dépots dotdeb, source sûre et plus à jour que les dépots officiels pour tout ce qui concerne les serveurs web. Pareil pour sury qui nous permettra de télécharger PHP7.1.


# Dépôt principal
deb http://httpredir.debian.org/debian/ jessie main

# Mises-à-jour de sécurité
deb http://security.debian.org/ jessie/updates main

# Mises-à-jour "volatiles"
deb http://httpredir.debian.org/debian/ jessie-updates main

# Dépot dotdeb
deb http://packages.dotdeb.org jessie all

# Dépôt sury pour PHP7.1 parce que dotdeb ne va pas plus loin que la 7.0
deb https://packages.sury.org/php/ jessie main



Pour plus d'explications concernant le fichier de source des dépots, je vous renvoie à ce lien. Il nous reste à ajouter la clé GPG du dépot dotdeb.


wget https://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
rm dotdeb.gpg



Pour le dépot sury, il nous faut installer https puisque le dépot est sécurisé.

apt-get install apt-transport-https lsb-release ca-certificates



Puis comme pour dotdeb on récupère la clé GPG.


wget https://packages.sury.org/php/apt.gpg
apt-key add apt.gpg
rm apt.gpg



Et on peut maintenant mettre à jour Debian.

apt update && apt upgrade



On va pouvoir installer Samba.

apt-get install samba



Dans mon cas, je souhaite partager tout le dossier /var/www, c'est là où seront mes fichiers de projet de site web. Je ne vais pas trop me prendre le choux, j'accorde les pleins pouvoirs à tout le monde dessus, et je me l'attribue à dev, parce que c'est lui qui est destiné à faire des modif là-dedans.


mkdir /var/www
chown -R dev:dev /var/www
chmod -R 0777 /var/www



Je lie mon utilisateur dev à Samba, et je choisis le même pass simple que pour son compte utilisateur lorsqu'on me le demande.

smbpasswd -a dev



On passe à la configuration de samba

nano /etc/samba/smb.conf



On ne touche à rien, simplement tout à la fin du fichier, on va se créer une petite config pour notre dossier partagé.


# Mon dossier partagé
[devServer]
comment = /var/www
browseable = yes
path = /var/www
read only = no
directory mask = 0777
create mask = 0777
valid users = dev



De cette manière on pourra y accéder avec le login et le pass de l'utilisateur dev, et on aura tous les droits sur le dossier. Il ne reste plus qu'à redémarrer le service.

service smbd restart



A présent, ou peut ouvrir l'explorateur Windows et taper l'adresse réseau de notre machine : \\192.168.56.2.


Une fois qu'on a appuyé sur entrée, magie, notre répertoire partagé est là. Lorsqu'on tente d'y accéder, on est invité à saisir le login et mot de passe du compte dev.


Il n'y a plus qu'à s'en faire un petit raccourci bureau, et vous êtes tranquilles. On peut se créer des répertoires, des fichiers, faire des copier/coller...


Et vous pouvez vérifier dans la machine virtuelle que votre répertoire test a bien été créé avec les bons droits.


ls -l /var/www
total 4
drwxrwxrwx 2 dev dev 4096 févr. 9 22:15 test



Voilà, vous avez à présent une machine vierge mais configurée pour pallier au problème des additions invité de VirtualBox. Vous pouvez partager des fichiers en toute simplicité entre la machine hôte et la machine virtuelle, et bien sûr interagir avec cette dernière via Putty. En plus, grâce à l'accès par pont, le répertoire partagé est joignable aussi, et exactement de la même manière, sur tout le réseau local!

Il ne vous reste plus qu'à configurer un environnement de développement en installant et en configurant vos outils préférés : Nginx ou Apache, MySQL ou MariaDB, PHP... Mais ça, ce sera peut-être l'objet d'un prochain tutoriel. ;)



Auteur

SuperJohnson
Admin
"Diantre !" avatar

Commentaires

SuperJohnson
"Diantre !" user_avatar

Le

Clarifications sur la partie réseau, et ajout de l'accès par pont. En gros, j'ai rajouté un chapitre ^^'


Vous devez être connecté pour poster un commentaire.


Connectez-vous
Connectez-vous