Je huidige OS virtualiseren.

Wat

Je koopt of krijgt een nieuwe laptop. Nog steeds worden deze vaak geleverd met een voorgeïnstalleerd OS. Vaak is dit niet het OS dat je graag wilt gebruiken. Toch wil je het voorgeïnstalleerde OS virtueel beschikbaar houden.

Waarom

Hieronder geef ik een paar redenen waarom je het geïnstalleerde OS zou willen vervangen maar wel virtueel beschikbaar wilt houden.

Redenen voor het vervangen van je host OS:

- Je krijgt een 32 bits OS op een 64 bits machine
- Niet alle apparatuur is (volledig) te benutten met het geleverde OS (denk aan sata schijven of meer dan 3.6 GB intern geheugen)
- Het geleverde OS biedt niet genoeg vrijheid.
 

Redenen om het geleverde OS virtueel beschikbaar te houden:

- De support afdeling biedt anders geen support.
- Er zijn applicaties voorgeïnstalleerd / geconfigureerd waarbij herinstallatie niet kan of teveel tijd kost.
- Je ontvangt bestanden waarvan het bestandsformaat niet "open" is maar die je wel dient te gebruiken.

Origineel OS virtueel vanaf de originele partitie

Hoe

Op deze pagina beschrijf ik hoe je het meegeleverde OS van je laptop kunt gebruiken voor een virtuele machine in Virtualbox.
In mijn situatie is het geleverde, huidige OS Windows XP en is het gewenste OS Ubuntu 9.04 64.
Dit zou net zo goed Windows 7, Vista of Mac OS-x86 moeten kunnen zijn. De letterlijke commando's kunnen dan iets afwijken.

Nadat je de stappen hebt gevolgd kun je:
- Dual booten in het huidige danwel het gewenste OS. (Zie Let op! blok bij stap 10)
- Het gewenste OS als Host OS gebruiken met daarop het huidige OS als guest


bron: http://mesbalivernes.blogspot.com/2008/01/virtual-box-booting-from-existing.html

Stap 1: Verklein de bestaande partitie(s)


Om ruimte te maken voor het gewenste OS gaan we bestaande partities verkleinen. Start de live CD van Ubuntu 9.04 en maak met een partitie tool de meegeleverde partitie kleiner. Ik gebruik gparted. Deze vind je onder System, Administration, Partition Editor.

gparted verkleint de huidige partities

Stap 2: Installeer Ubuntu

Installeer Ubuntu en laat de bestaande partities in tact. Dat houdt in dat je hem niet formatteert en ook niet mount als b.v. /windows/c. 
Na de installatie heb je een dual boot systeem.

Stap 3: Maak een back-up van je huidige systeem

We willen we de partitie van ons originele OS uiteraard back-uppen voordat we verder gaan. Hiervoor kun je een tool gebruiken die images kan maken. Ik gebruik dd:

dd if=/dev/sda1 of=/home/thomas/.Virtualbox/HardDisks/sda1.dd


Tip: Als je het bestand gecomprimeerd wilt opslaan is het verstandig om eerst in je huidige OS een nul-scriptje te draaien. Een nul script is een script dat een bestand maakt met allemaal nullen totdat de schijf vol is en deze vervolgens verwijdert. Dit zorgt ervoor dat de vrije ruimte optimaal kan worden gecomprimeerd.
 

Stap 4: installeer Virtualbox

We gaan nu Virtualbox installeren. Hoewel Virtualbox OSE in de standaard Ubuntu repo's zit en we dus aan:

sudo apt-get install virtualbox-ose


genoeg zouden hebben vind ik mijn virtualisatie programma belangrijk genoeg om hem up-to-date te houden. Ik kies dus voor het downloaden van de meest recente versie van Virtualbox . Let op kies de versie die past bij je host OS. in dit geval dus Ubuntu 9.04 64 bits.

Stap 5: een MBR bestand maken

We gaan er straks voor zorgen dat het guest syteem alleen maar aan de partities kan komen waar het originele OS op staat. We zullen dus een nep MBR (master boot record) moeten maken die niet dual boot. Als we van onze werkelijke MBR booten kunnen we voor Ubuntu kiezen i.p.v. Windows XP en daarmee de stabiliteit van ons hele systeem in gevaar brengen.

We gaan eerst maar eens naar de directory waar Virtualbox zijn harde schijven staan opgeslagen. Mijn gebruikrsnaam is thomas dus ik type:

cd
cd .VirtualBox/HardDisks/


Ik ben nu in de directory: /home/thomas/.VirtualBox/HardDisks/. We gaan nu de software die we nodig hebben installeren en het MBR bestand maken.

sudo apt-get install mbr
install-mbr --force mymbr.mbr


Stap 6: lees en schrijf rechten op /dev/sda1

Deze stap is een beetje riskant. Om Virtualbox toegang te geven tot de fysieke partities moeten we een senario bewandelen die ons systeem potentieel bloot kan stellen aan indringers. Ik beschrijf 3 senario's je mag er zelf 1 kiezen.

- geef iedereen lees en schrijfrechten op /dev/sda1:

Het volgende commando:
sudo chmod a+rw /dev/sda1
Gunt alle gebruikers van ons systeem lees en schrijf rechten op de partitie van ons origibele OS. Tegenwoordig zit er in udev een subproces dat regelmatig deze permissies weer terug zet naar de originele waarden. Als je voor deze optie kiest zul je dus regelmatig moeten controleren of de rechten nog goed staan of een weg moeten vinden om deze uitdaging heen.

- Voeg jezelf toe aan de groep disk

Het volgende commando:
sudo usermod -a -G disk thomas

voeg je de gebruiker thomas toe aan de groep disk. Vergeet niet een keer helemaal uit en aan te loggen om het groepslidmaatschap te activeren.

- Start Virtualbox als root

Pas de snelkoppeling van Virtualbox aan, rechtermuis op Applications en dan edit menu, en maak van het commando:

gksudo VirtualBox

In plaat van VirtualBox. De volgende keer dat je het icoontje gebruikt wordt Virtualbox door root uitgevoerd.

Stap 7: Maak het .vmdk bestand

We gaan nu met 1 commando het .vmdk bestand maken dat verwijst naar de partitie waar het originele OS op staat. Je zult de gebruikersnaam moeten vervangen door die van jezelf.

sudo VBoxManage internalcommands createrawvmdk -filename /home/thomas/.VirtualBox/HardDisks/WinXP.vmdk -rawdisk /dev/sda -partitions 1 -mbr /home/thomas/.VirtualBox/HardDisks/mymbr.mbr -relative -register


Laat het opvallen dat alle paden absoluut zijn, voor zover absoluut bestaat natuurlijk :-). Dit was een voorwaarde in eerdere versie van Virtualbox en ik heb nog geen tijd gehad te controleren of Virtuabox al wat schappelijker is geworden ondertussen.

Stap 8: de eigenaar van de harddisk bestanden

We hebben enkele commandos met sudo uitgevoerd en deze hebben bestanden gemaakt die nu nog van root zijn. om "Access denied" fouten te voorkomen versanderen we de eigenaar van deze bestanden. Pas de eigenaar aan van alle bestanden in deze Harddisk directory:

sudo chown thomas:thomas *

Stap 9: Maak de VM

Start Virtualbox en maak een nieuwe machine die deze nieuwe schijf gebruikt. Vergeet niet om Enable IO apic aan te zetten.
Je kun nu je VM starten.

Het is een verstandig plan om verschillende hardware profielen te maken. Op die manier zorg je ervoor dat het originele OS minder verward raakt als je afwisselend virtueel en fysiek boot.


Je virtuele machine definieren in virtualbox

Stap 10: installeer de additions

Let op!
De Virtualbox guest additions zijn Guest OS drivers die vele handige functies toevoegen aan je guest OS die ik dagelijks gebruik zoals:
- Seamless desktop integratie (zie afbeelding)
- Shared folders (bestanden delen tussen host en guest)
- Automatisch desktop vergroten en verkleinen
- enz.
Echter na deze stap is booten vanaf de originele partitie zeer waarschijnlijk niet meer mogelijk. In mijn ogen ook niet nodig maar dat oordeel laat ik aan de lezer.



Na het starten en inloggen zal Windows nieuwe drivers ophalen voor de apparaten die hij erbij gekregen heeft. Daarna kies je, nog voor het rebooten, voor: Devices, install virtualbox guest additions. Browse naar de CD in je guest OS en start het installatie programma.

Na deze wizard herstart je je VM en ben je klaar.

Windows XP in seamless mode

Stap 11 Van je originele systeem naar een dynamically expanding .vdi

Dus, Je kunt nu toch niet meer booten vanaf /dev/sda1. Dan kunnen we deze ook maar beter vervangen door een .vdi bestand. Ik noem een paar redenen:
- Je vdi bestand neemt niet meer ruimte in als nodig.
- Een .vdi bestand is een bestand dat mee kan in een standaard back-up routine.
- Een .vdi bestand is makkelijk uit te wisselen met anderen.
- Een .vdi bestand kan ook vanaf een netwerk worden gebruikt.

Was al het voorgaande dan overbodig? Nee, voor deze stap heb je de toegang tot je partitie nodig en toegang tot een werkende MBR.

- Stop de VM die we net gemaakt hebben.
- Maak in Virtualbox je nieuwe hardeschijf. ik kies voor 80 GB maar i.i.g. groter dan de bestaande sda1 en dynamically expanding
- Koppel deze aan je bestaande VM als Primary slave (sdb)
- Koppel de Ubuntu .iso als cd en controleer dat hij hiervan gaat booten.

- Start de VM op.

- Maak met fdisk of cfdisk sdb1 aan. geef het type 7 (NTFS/HPFS)
- Maak sdb1 active (toggle boot flag)
- Sluit af en sla op.

Met het volgende commando maak je het ntfs filesysteem:

mkfs.ntfs -f /dev/sdb1

Met -f voorkom je dat de hele partitie met nullen gevuld wordt en daarmee je dynamische hardeschijf zijn volledige omvang aanneemt.

Maak 2 tijdelijk directory's mount sda1 en sdb1 en copieer alle bestanden en copieer de MBR:


mkdir /mnt/sda1
mkdir /mnt/sdb1
mount /dev/sda1 /mnt/sda1
mount /dev/sdb1 /mnt/sdb1
cp -r /mnt/sda1/* /mnt/sdb1/
dd if=/dev/sda of=/dev/sdb bs=446 count=1


- Sluit de VM af.
- Verwijder de .vmdk hardeschijf en maak van de nieuwe .vdi de primary.
- Ontkoppel de cd.

Starten en klaar.

Stap 12: Opruimen

Als je na verloop van tijd merkt dat alles werk en je gaat niet meer terug dan kun je nog eens van de ubuntu install cd (fysiek) booten om de originele partities te verwijderen en de ubuntu partitie te vergroten. De backup die je gemaakt hebt van de partitie "sda.dd" kun je ook verwijderen als je alleen nog maar de .vdi gebruikt. Beide .vmdk bestanden kunnen weg. Het bestand mymbr.mbr kan weg.

Conclusie

Virtualiseren van een bestaande machine op de eigen hardware is mogelijk en redelijk eenvoudig. Je moet even weten hoe en daar helpt dit stukje bij. Beter zou het zijn als alle systemen met een besturingssysteem naar keuze van de gebruiker zouden worden uitgeleverd. Als bedrijfsspecifieke of bedrijfskritische software een specifiek OS vereist zou je de werkstations als virtuele machines vanuit een wolk aan moeten bieden.

Deze routine zal door veel ubuntu gebruikers uitgevoerd worden. Het is eigenlijk niet meer dan logisch dat ubuntu tijdens de installatie het virtualiseren van het huidige OS als optie aanbiedt.

Todo

- Spel en stijl check
- Dit hele verhaal ombouwen tot een script dat tijdens of vlak na de instalatie kan worden gestart.

Comments