Installer une machine virtuelle

© Christian PAULUS. Document créé le 5 mai 2009 , mis à jour le 5 mai 2009.

Si perçante soit la vue, on ne se voit jamais de dos. Proverbe chinois

Accueil du site > Astuces > MacOSX > Installer une machine virtuelle

Gentoo 2008 / VMware Fusion 2.0.3 / Mac OS X 10.5.6

Objectif : installer une version de Gentoo Linux sur Mac OS X via VMware Fusion. Pas à pas.

Pour installer Gentoo sur une machine virtuelle, vous devez d’abord commencer par récupérer l’archive de Gentoo sur le serveur officiel.

Sélectionnez l’image ISO souhaitée : install--minimal-2008.0.
Inutile de graver un cd, l’installation peut être réalisée directement à partir de l’image ISO.

Pour info, l’exemple ici est basée sur la version Gentoo (obtenue par la commande uname -a) :

Linux livecd 2.6.24-gentoo-r7 #1 SMP Tue Jun 17 12:50:42 UTC 2008 i686 Intel(R) Core(TM)2 CPU T5600 @ 1.83GHz GenuineIntel GNU/Linux

Création de la machine virtuelle

Lancez VMware Fusion.

Cliquez sur le bouton Nouveau situé en bas de la fenêtre « Bibliothèque des machines virtuelles  » (ou menu « Fichier »).

PNG - 2.4 ko
VMWare Fusion : Bouton nouveau

Dans la fenêtre Assistant Nouvelle machine virtuelle cliquez sur Continuer sans disque.

PNG - 5.8 ko
Continuer sans disque

Sélectionnez Utiliser le fichier image du disque d’installation du système d’exploitation. Une fenêtre apparaît. Sélectionnez votre fichier image ISO et validez.

PNG - 6.9 ko
VMWare Fusion, sélecitonner l’image ISO de la distribution

Cliquez sur « Continuer ». Dans la boîte « Choisir le système d’exploitation », identifier le système d’exploitation et la version. Cliquez sur « Continuer ».

PNG - 10.5 ko
Fénêtre Choisir le système d’exploitation

Dans la boîte « Terminer », personnalisez les réglages et indiquezle titre de votre machine virtuelle (par exemple ici : « Gentoo 2008 ».).

PNG - 18 ko
Indiquez le nom de votre réglage.

Cliquez sur Terminer.

Les réglages complémentaires sont proposés. Vous pouvez avoir besoin d’accéder à cette machine virtuelle à distance sans passer par un routeur. Dans ce cas, réglez l’option « Réseau » sur « Pont ».

PNG - 3.9 ko
Réglages réseau : pont

VMware Fusion lance de votre machine virtuelle.

PNG - 15.2 ko
Linux : premières lignes du boot

Patientez jusqu’à la sélection du clavier.

PNG - 3.6 ko
Au premier démarrage de Gentoo, sélectionnez le clavier français.

Indiquez « fr » puis validez.

Patientez jusqu’à l’apparition du prompt livecd root #.

Installation à distance

Si vous désirez continuer l’installation à partir d’un terminal distant :

  • Lancez le démon ssh en entrant la commande : /etc/init.d/sshd start
  • Définissez un mot de passe (commande passwd)
  • Si vous avez un serveur DHCP (installation par défaut), utilisez la commande ifconfig pour récupérer l’adresse IP de votre machine virtuelle (valeur inet addr de eth0). Sinon, attribuez lui maintenant une adresse IP, nom, passerelle, etc.

Installation en local

Editez le fichier /etc/conf.d/keymaps et précisez votre clavier. Ne servira que si vous recommencez l’installation dans la première étape (oui ! il y a deux étapes).

Economie d’énergie

Attention aux réglages de votre économiseur d’énergie. Si arrêt en cours d’installation, il sera – en général – nécessaire de tout recommencer depuis le début (supprimer la machine virtuelle, etc.)

Script d’installation

Récupérez les scripts ci-dessous et consultez-les.

Vous êtes seul responsable de son utilisation sur votre machine.

L’ensemble de ces scripts d’installation écrit en sh est fortement inspiré de la remarquable documentation de Gentoo (en français).

La version compressée se trouve en fin de paragraphe.

L’installation est effectuée en deux étapes :

  1. le script #1 se charge de formater, préparer les disques et installées les distributions. A la fin de cette étape, la commande chroot fait basculer l’ensemble dans le nouveau monde. Vous devez charger le script #2 pour continuer l’opération.
  2. le script #2 compile et installe le noyau. ll complète la configuration par divers réglages.

Consultez ces scripts. Ils sont largement documentés. Et probablement perfectibles.

Installation Gentoo, étape #1

Le premier script à éxécuter :

#!/bin/sh
# @author: Christian Paulus (c) 2009 - http://www.quesaco.org
# @modification_date: Fri May  1 12:31:12 2009

echo "****************************************"
echo "Gentoo / MacOS-X VMware Fusion virtual machine installation script (GVMI)"
echo "Script d'installation de Gentoo sur machine virtuelle VMware / MacOS-X"
echo "Christian Paulus (c) 2009 - http://www.quesaco.org"
echo
echo "Etape #1: "
echo "- Formatage et partionnement du disque dur virtuel"
echo "- Montage des partitions destinées à recevoir les distributions"
echo "- Récupération des distributions 'stage3' et 'portage'"
echo "- Installation (copie) de ces distributions sur les points montés"
echo "- Montage des partitions indispensables à la suite de l'installation"
echo "- Utilisation de 'chroot' pour poursuivre l'installation"
echo "****************************************"

# @see: http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml

HOSTNAME="tux"
DOMAINE="foo.bar"

#****************************************
# les distributions
# @see: http://www.gentoo.org/main/en/mirrors2.xml#France
#****************************************
MIRROR_SITE="mirror.ovh.net"
DISTFILES="/gentoo-distfiles/releases"
STAGE_FILE="stage3-i486-20090422.tar.bz2"
STAGE_WGET="wget ftp://$MIRROR_SITE$DISTFILES/x86/current/$STAGE_FILE"
PORTAGE_FILE="portage-latest.tar.bz2"
PORTAGE_WGET="wget ftp://$MIRROR_SITE$DISTFILES/snapshots/current/$PORTAGE_FILE"

echo "########################################"
echo "Generic Machine Instal - part #1"
echo "########################################"


# @see: http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=1&chap=4

# @see: http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=1&chap=3
MY_IP=`ifconfig eth0 | sed -n -e 's/:127\.0\.0\.1 //g' -e 's/ *inet addr:\([0-9.]\+\).*/\1/gp'`
MY_NETMASK=`ifconfig eth0 | sed -n -e 's/\([^M]*\)Mask:\([0-9.]\+\).*/\2/gp'`
MY_BCAST=`ifconfig eth0 | sed -n -e 's/\([^B]*\)Bcast:\([0-9.]\+\).*/\2/gp'`
MY_GATEWAY=`route -n | grep "^0\.0\.0\.0" | sed -n -e 's/0\.0\.0\.0//g' -e 's/ *\([0-9.]\+\).*/\1/gp'`

if [ -z $MY_IP ]
        then
        echo "Configuration IP manquante..."
        echo "Abandon !"
else
        echo "Adresse IP machine: $MY_IP Broadcast: $MY_BCAST Netmask: $MY_NETMASK"
fi

if [ -z $MY_GATEWAY ]
        then
        echo "Configuration IP incomplète..."
        echo "Abandon !"
else
        echo "Adresse IP passerelle: $MY_GATEWAY"
fi

echo "Partitionner le disque dur ? [O|N]"
read REPONSE
case "$REPONSE" in
[oO])        # découper, partitionner et formater le disque dur
                echo "Partionnement du disque dur... "
                #@see: http://www.linuxmanpages.com/man8/parted.8.php
                parted /dev/sda mklabel msdos
                parted /dev/sda mkpartfs primary ext2 1 32
                # bootable
                parted -s /dev/sda set 1 boot
                # le swap
                parted /dev/sda mkpartfs primary linux-swap 32 560
                # le reste
                # @see: http://traduc.org/docs/HOWTO/vf/Filesystems-HOWTO.html#filesystems-HOWTO-fr-7
                parted /dev/sda mkpartfs primary ext2 560 4096
                # parted ne connait pas ext2
                # systeme de fichiers
                mke2fs /dev/sda1
                mke2fs -j /dev/sda3
                mkswap /dev/sda2
                swapon /dev/sda2
                # montage
                mount /dev/sda3 /mnt/gentoo
                mkdir /mnt/gentoo/boot
                mount /dev/sda1 /mnt/gentoo/boot
               
                # @see: http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=1&chap=5
                # installation de stage
                cd /mnt/gentoo
               
                # Récupération de $STAGE_FILE....
                $STAGE_WGET
                if [ "$?" -eq "0" ]
                                then
                                echo "Ok! [$?]"
                else
                                echo "Impossible de récupérer $STAGE_FILE.... [$?]"
                                echo "Abandon !"
                                exit
                fi
                # tar -xvjpf stage3-*.tar.bz2
                tar -xvjpf $STAGE_FILE
               
                # Récupération de $PORTAGE_FILE....
                $PORTAGE_WGET
                if [ "$?" -eq "0" ]
                                then
                                echo "Ok! [$?]"
                else
                                echo "Impossible de récupérer $PORTAGE_FILE.... [$?]"
                                echo "Abandon !"
                                exit
                fi
                # tar -xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
                tar -xvjf /mnt/gentoo/$PORTAGE_FILE -C /mnt/gentoo/usr
               
                # un peu de réseau
                echo "Recopie configuration resolve"
                cp -L /etc/resolv.conf /mnt/gentoo/etc/

                # se préparer au chroot
                # monter proc et dev
                mount -t proc none /mnt/gentoo/proc
                mount -o bind /dev /mnt/gentoo/dev
                # go!
                # @see: http://www.linuxmanpages.com/man1/chroot.1.php
                echo "########################################"
                echo "# chroot nous fait passer dans une autre dimension."
                echo "# Les données du script d'installation ne sont plus accessibles ici."
                echo "#"
                echo "# Pour continuer l'installation, lancez le script gvmi_step2.sh"
                echo "########################################"
                chroot /mnt/gentoo /bin/bash
               
                #
                # un autre monde...
               
        ;;
*)        # Ne rien faire ?
        echo "Opération étape #1 abandonnée"
        ;;
esac

Le code ci-dessus dans un fichier .zip :

Zip - 1.7 ko
gvmi_step1

Pour récupérer ce script sur votre machine virtuelle, vous pouvez utiliser la commande wget. Décompressez l’archive à l’aide de la commande unzip.

Installation Gentoo, étape #2

#!/bin/sh
# @author: Christian Paulus (c) 2009 - http://www.quesaco.org
# @modification_date: Fri May  1 12:31:12 2009

echo "****************************************"
echo "Gentoo / MacOS-X VMware Fusion virtual machine installation script (GVMI)"
echo "Script d'installation de Gentoo sur machine virtuelle VMware / MacOS-X"
echo "Christian Paulus (c) 2009 - http://www.quesaco.org"
echo
echo "Etape #2: "
echo "- Mise à jour des distributions"
echo "- Compilation et installation du noyau"
echo "- réglages complémentaires"
echo "- Installation de divers outils"
echo "- Instalation du noyau"
echo "- Installation de grub"
echo "****************************************"

# chroot oblige. Redeclarer les variables
HOSTNAME="tux"
DOMAINE="foo.bar"

echo "########################################"
echo "Generic Machine Instal - part #2"
echo "########################################"

echo ""

env-update
source /etc/profile
export PS1="(chroot) $PS1"

# documentation sur emerge :
# @see: http://linuxreviews.org/gentoo/emerge/

echo "########################################"
echo "# update portage"
echo "########################################"
emerge --sync
emerge portage

# @see: http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?part=1&chap=7
# configuration du noyau

# date
cp /usr/share/zoneinfo/Europe/Paris /etc/localtime

# installer les sources du noyau
emerge gentoo-sources

# noyau généric
emerge genkernel
zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6
echo "########################################"
echo "# compilation noyau"
echo "########################################"
# la compilation prend environ 30 mn sur mini_mac 1.83 Ghz
genkernel all

# indiquer les partitions du disque dur
cp /etc/fstab /etc/fstab.old
echo -n "# " > /etc/fstab
date >> /etc/fstab
echo "/dev/sda1   /boot        ext2    defaults,noatime     1 2" >> /etc/fstab
echo "/dev/sda2   none         swap    sw                   0 0" >> /etc/fstab
echo "/dev/sda3   /            ext3    noatime              0 1" >> /etc/fstab
echo "#/dev/cdrom  /mnt/cdrom   auto    noauto,user          0 0" >> /etc/fstab
echo "Contenu de /etc/fstab"
cat /etc/fstab

# les modules complémentaires :
# - la carte réseau
echo "pcnet32" >> /etc/modules.autoload.d/kernel-2.6

echo

MY_IP=`ifconfig eth0 | sed -n -e 's/:127\.0\.0\.1 //g' -e 's/ *inet addr:\([0-9.]\+\).*/\1/gp'`
MY_NETMASK=`ifconfig eth0 | sed -n -e 's/\([^M]*\)Mask:\([0-9.]\+\).*/\2/gp'`
MY_BCAST=`ifconfig eth0 | sed -n -e 's/\([^B]*\)Bcast:\([0-9.]\+\).*/\2/gp'`
MY_GATEWAY=`route -n | grep "^0\.0\.0\.0" | sed -n -e 's/0\.0\.0\.0//g' -e 's/ *\([0-9.]\+\).*/\1/gp'`

# complément réseau
echo "Nom machine: $HOSTNAME"
echo "$HOSTNAME" > /etc/hostname
echo "dns_domain_lo=\"$DOMAINE\"" >> /etc/conf.d/net
echo "config_eth0=(\"$MY_IP netmask $MY_NETMASK brd $MY_BCAST\")" >> /etc/conf.d/net
echo "routes_eth0=(\"default via $MY_GATEWAY\")" >> /etc/conf.d/net

# activer le réseau au démarrage
rc-update add net.eth0 default
# et dans la foulée, ssh

echo "$MY_IP $HOSTNAME.$DOMAINE $HOSTNAME" >> /etc/hosts

# divers compléments facultatifs (mettre en commentaires si besoin)
echo "########################################"
echo "# les logs systèmes"
echo "########################################"
emerge syslog-ng
rc-update add syslog-ng default
emerge logrotate
# le cron
emerge vixie-cron
rc-update add vixie-cron default
# transfert de fichiers
emerge ftp
# sshd pour continuer à prendre la main à distance après l'install
rc-update add sshd default
# éditeur de texte
emerge vim

# installer le noyau
emerge grub
cd /boot/
# echo "splashimage=(hd0,0)/boot/grub/splash.xpm.gz" >> /boot/grub/grub.conf
KERNEL=`ls -t kernel-* | head -n 1`
INITRD=`ls -t initramfs-* | head -n 1`

cp /boot/grub/grub.conf /boot/grub/grub.conf.old

echo -n "# " > /boot/grub/grub.conf
date >> /boot/grub/grub.conf
echo "" >> /boot/grub/grub.conf

echo "default 0" >> /boot/grub/grub.conf
echo "timeout 30" >> /boot/grub/grub.conf
echo "#splashimage=(hd0,0)/boot/grub/splash.xpm.gz" >> /boot/grub/grub.conf

RELEASE=`uname -r`

echo "title Gentoo Linux $RELEASE" >> /boot/grub/grub.conf
echo "root (hd0,0)" >> /boot/grub/grub.conf
echo "kernel /boot/$KERNEL root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3" >> /boot/grub/grub.conf
echo "initrd /boot/$INITRD" >> /boot/grub/grub.conf

grep -v rootfs /proc/mounts > /etc/mtab
grub-install --no-floppy /dev/sda

# modifier le clavier
# nano /etc/conf.d/keymaps
cp /etc/conf.d/keymaps /etc/conf.d/keymaps.ori
cat /etc/conf.d/keymaps.ori | sed -e 's/KEYMAP=\"us\"/KEYMAP=\"fr\"/' > /etc/conf.d/keymaps

echo
echo "########################################"
echo "# Mot de passe administrateur (root): "
echo "########################################"
passwd

echo
echo "########################################"
echo "# Vérifiez maintenant votre configuration."
echo "# Si ok, rebootez la machine (commande 'reboot')"
echo "#"
echo "# A tout de suite ;-)"
echo "########################################"

Le code ci-dessus dans un fichier .zip :

Zip - 1.8 ko
gvmi_step2

Pour récupérer ce script sur votre machine virtuelle, vous pouvez utiliser la commande wget. Décompressez l’archive à l’aide de la commande unzip.

Démarrer en single

Il semblerait que le démarrage en mode single ne fonctionne pas correctement sous grub. A vérifier.

Pour l’installation de Lilo, voir la documentation sur le site Gentoo.org.

Plussoyez !

Les forums sont fermés.

  • Installer une machine virtuelle 12 août 2009 11:46, par walter
    Bonjour,
    je n’utilise pas macosx,
    [trollon] j’uitlise un ordinateur, pas une machine a ecrire ameliore^^[trolloff], mais ce script m a l’air tres interessant.

    Je le telecharge et le test de ce pas.

    Comme ca, pourquoi utilise un stage3 fixe (stage3-i486-20090422.tar.bz2) au lieu du latest comme tu l as fait pour portage.

    Tres appreciable les commentaires donnant les references pour comprendre les commandes, juste en rajoute, qui explique ce que fait la portion de script(reference au ifconfig, pas mal de regex, pas simple a comprendre si on ne les a pas faites).

    je pinaille, en fait j adore ca ^^



    Si il marche bien, beau travail, ca va me simplifie l’installation de serveur.

    Gentoo est terrible, mais c’est quand meme long d’installer un serveur.

    Les forums sont fermés.