Hoewel de voordelen van een homogene serveromgeving enorm zijn, komen we ook in de Microsoft-wereld allerlei ‘vreemde eenden’ tegen. Gelukkig hebben de meeste fabrikanten van besturingssystemen ingezien dat we beter samen kunnen leven dan elkaar proberen te bestrijden. Dit geldt ook voor Microsoft en de Linux gemeenschap. Bij beide kanten zien we dat er steeds meer nadruk gelegd wordt op compatibiliteit en interoperabiliteit. Een goed voorbeeld is de ondersteuning van Linux virtual machines op Hyper-V hosts, hiervoor heeft Microsoft speciale Linux-versies van de Hyper-V Integration Services beschikbaar gemaakt.
Die Integration Services zijn zorgen er voor dat de VM betere performance haalt door goede driverondersteuning, maar maakt ook communicatie tussen de VM en de hypervisor mogelijk. Zo kan de hypervisor de heartbeat van de VM volgen, de klok synchroniseren of hem op een nette manier afsluiten vanuit de Hyper-V managment console of VMM.
De Linux-kernel met alle bijbehorende software vinden we terug in honderden verschillende distributies. Voor dit artikel heb ik gekozen voor CentOS. CentOS is een distributie voor serversystemen en is gebaseerd op het commerciële pakket Red Hat Enterprise Linux (RHEL). De huidige versie van CentOS is 6.2 en deze versie gebruik ik ook voor dit artikel. Officieel worden op dit moment alleen nog versies 6.0 en 6.1 ondersteund maar voor dit artikel maakt dat geen verschil. Meer informatie over ondersteunde Virtual Machine besturingssystemen vind je op deze pagina.
Verder ga ik voor dit artikel uit van een minimale server waaraan we alleen componenten toevoegen wanneer we die echt nodig hebben. Deze werkwijze beveel ik ook aan voor wanneer je een Linux server in wilt zetten voor een specifiek doel.
Benodigdheden
Voordat we kunnen starten hebben we het volgende nodig:
- CentOS 6.2 installatie-cd (ISO)
- Hyper-V Linux Integration Services 3.2 (ISO)
De CentOS binaries zijn beschikbaar via allerlei HTTP en FTP mirrorservers en via het Torrent P2P netwerk. De mirrorlijst voor Nederland vind je hier. Voor dit artikel gebruiken we het volgende bestand: CentOS-6.2-x86_64-minimal.iso. Dit bestand is 322 MB groot en bevat precies voldoende om een basic server uit te rollen, extra componenten kunnen we later eenvoudig toevoegen over een internetverbinding.
De Linux Integration Services zijn er in twee versies:
- Versie 3.2 voor RHEL 6.x en CentOS 6.x
- Versie 2.1 voor RHEL 5.x, CentOS 5.x en SUSE linux Enterprise Server 10/11
Voor CentOS 6.x voegen de Integration Services de volgende functionaliteit aan de VM toe: drivers voor IDE, SCSI, netwerk en muis en ondersteuning voor tijdsynchronisatie, OS shutdown en heartbeat.
In ons geval downloaden we dus versie 3.2 en slaan de ISO op.
Aanmaken van de Virtual Machine
We maken voor deze server een VM aan zoals we dat normaal gesproken ook doen. Er zijn een paar zaken om rekening mee te houden:
- 1024 MB geheugen. Minder mag maar bij minder dan 652 MB verloopt de installatie text-based in plaats van grafisch.
- 10 GB disk. Een minimale CentOS 6 installatie kan met veel minder toe, maar we houden rekening met extra capaciteit voor de applicaties.
- Synthetic network adapter. Na de installatie heeft CentOS nog geen driverondersteuning maar dat lossen we op met de Hyper-V IC. Het is niet nodig om eerst een Legacy adapter toe te voegen, dit maakt het configureren van de synthetic network adapter in CentOS alleen maar ingewikkelder.
Installatie CentOS
Wanneer we de gedownloade CentOS ISO moeten en de VM starten doorlopen we de grafische CentOS installatieprocedure. Deze zal ik scherm voor scherm behandelen:
Druk op Enter of wacht om de installatie te starten.
We gaan er vanuit dat de ISO tijdens het downloaden niet corrupt is geraakt dus kiezen Skip. Mocht je de ISO toch willen testen, denk er dan aan dat deze procedure vooral bedoeld is voor CD’s en DVD’s en dat de installer na het testen de tray opent om de volgende disk in te leggen. Voor ons Hyper-V gebruikers betekent dit dus dat je de ISO even opnieuw moet mounten om verder te kunnen.
Klik op Next om verder te gaan. Wanneer je in een RDP-sessie werkt dan kun je de muis niet gebruiken, gebruik dan tab en F12 (volgende scherm) of F11 (vorige scherm).
Klik op Next of druk F12.
Kies U.S. International en klik op Next of druk F12.
In dit artikel gebruiken we alleen de VHD dus accepteren we de default waarde.
Kies Yes, discard any data.
Geef de FQDN van de server.
Kies de juiste tijdzone.
Geef het root-wachtwoord in, dit account is vergelijkbaar met het standaard Administrator account.
Aangezien we een lege VHD hebben zullen de bovenste twee opties het zelfde resultaat geven.
Nu de installer de nieuwe partitionering voorbereid heeft krijgen we nog een laatste waarschuwing voordat deze naar disk weggeschreven wordt. Kies Write changes to disk.
De daadwerkelijke installatie wordt nu gestart. De benodigde componenten en software wordt in de vorm van packages naar disk geschreven. Omdat we gekozen hebben voor een minimale installatie zal dit slechts een paar minuten duren.
De installatie van CentOS is nu klaar. Klik Reboot of druk F12 om de server opnieuw op te starten.
Configuratie Integration Services en netwerk
Het eerste deel zit er op, we hebben nu een VM voorzien van CentOS 6.2. De volgende stap is het installeren van de drivers en services voor Hyper-V, waaronder een driver voor de synthetic network adapter. Dit doen we in het volgende deel van dit artikel. Om te beginnen mounten we de Linux Hyper-V IC ISO aan de VM:
We loggen de eerste keer in met root, dit is de enige gebruiker op ons systeem. Vervolgens koppelen we de DVD aan een lokale directory en navigeren naar deze directory.
mount /dev/cdrom /media
cd /media
ls –l
In deze directory vinden we een aantal .rpm installatiepakketten voor onder andere x86 en x64 platformen en een uitvoerbaar script. Om de juiste componenten te installeren hoeven we alleen het shellscript install.sh maar te starten.
./install.sh
reboot
Na de installatie herstarten we de server met het reboot commando en loggen we opnieuw in als root. Omdat onze server tijdens de installatie niet voorzien was van een werkende netwerkadapter is het netwerk niet juist geconfigureerd. Als eerste maken we het network configuratie-bestand aan met de editor vi:
vi /etc/sysconfig/network
Druk i om naar edit-mode te gaan en type:
NETWORKING=yes
Druk op ESC om uit de edit-mode te gaan en type:
:qw
…gevolgd door een druk op Enter. Het bestand is nu opgeslagen en we hebben de editor vi weer verlaten. De volgende stap is om een configuratiebestand voor onze NIC aan te maken, dit bestand heet ifcfg-eth0.
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Druk i om naar edit-mode te gaan en type:
NAME=eth0
HWADDR="00:15:5D:02:FA:1D"
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO="static"
IPADDR=192.168.2.98
NETMASK=255.255.255.0
DNS1=192.168.2.81
GATEWAY=192.168.2.1
Of voor DHCP:
NAME=eth0
HWADDR="00:15:5D:02:FA:1D"
DEVICE="eth0"
ONBOOT=yes
BOOTPROTO="dhcp"
Druk op ESC om uit de edit-mode te gaan en type:
:qw
…gevolgd door een druk op Enter. Het bestand is nu opgeslagen en we hebben de editor vi weer verlaten. Let op: gebruik niet bovenstaande MAC adres maar het echte MAC adres van je synthetic network adapter. Je kunt deze vinden in de instellingen van je VM:
Het aanmaken van deze twee configuratiebestanden is hiermee afgerond. Om de configuratie actief te maken moeten we de network service opnieuw starten waarna we de status van de intergaces kunnen opvragen met ifconfig.
service network restart
ifconfig
Zoals we in bovenstaand screenshot kunnen zien is onze interface eth0 actief geworden en heeft hij met succes DHCP gegevens opgepikt. We kunnen de werking nu testen met basic netwerktests als ping en tracrt maar ook door het systeem op internet te laten zoeken naar de laatste updates.
yum update
Hoe nu verder?
Tot op dit moment hebben we steeds als root gewerkt en net als onder Windows is het best practice om je dagelijkse werkzaamheden als gewone gebruiker uit te voeren. Daarom maken we eerst een gebruiker aan:
adduser gebruikersnaam
passwd gebruikersnaam
Wanneer we nu met deze gebruiker inloggen op de server dan zien we dat voor bepaalde werkzaamheden root-toegang vereist is. Wanneer dat nodig is kunnen we met het su commando tijdelijk onder het root-account werken.
We zien hier dat het onder mijn normale account niet mogelijk is om software te installeren. Wanneer ik met su tijdelijk als root werk lukt het wel om de installatie van vim te starten.
Een andere voor de hand liggende stap is om niet langer op de console te blijven werken maar om een SSH sessie op te zetten met een client als bijvoorbeeld Putty.
Samenvattend…
In dit artikel hebben we gezien hoe we een Virtual Machine kunnen voorzien van CentOS Linux. We hebben de Linux Integration Services geïnstalleerd zodat de synthetic network adapter ondersteund werd en we de basic netwerkinstellingen door konden voeren. Het feit dat networking niet out-of-the-box werkt maakt het werken met een CentOS Hyper-V guest wat omslachtiger, maar zeker niet onmogelijk.