Virtuel Windows med VirtualBox

Ubuntu trin for trin guide

Installation af VirtualBox

Installer VirtualBox med

$ sudo apt-get install virtualbox

Adgang til usb-enheder
Hent og installer VirtualBox Extension Pack fra https://www.virtualbox.org/wiki/Downloads. Du kan lade browseren åbne filen og den installeres automatisk.

Åbn terminal og check dit logins gruppemedlemskab med

$ groups

Hvis gruppen ’vboxusers’ ikke er i listen så føjer du din bruger til gruppen med

$ sudo gpasswd -a $USER vboxusers

Opret virtuel maskine

I VirtualBox håndtering

Klik Ny.

  • Udfyld Navn (windows-10).
  • Udfyld Type – hvis den ikke er korrekt.
  • Udfyld Version – hvis den ikke er korrekt.

Klik Næste.

  • Vælg størrelse på hukommelse.
  • Windows 10 – mindst 2048MB.

Klik Næste.

  • Virtuel harddisk.
  • Brug forvalg.

Klik Opret.

Virtuel harddisk fil-type

  • Brug forvalg.

Klik Næste.

Virtuel harddisk lagring på fysisk disk

  • Brug forvalg.

Klik Næste.

Virtuel harddisk fil, placering og størrelse.

  • Brug forvalg.

Klik Opret.

Virtuel maskine opsætning

  • Marker den maskine du lige har oprettet. Hvis der kun er en er den allerede markeret.

Klik Opsætning.

For at kunne installere Windows skal du opsætte en installations kilde under Lagerenheder.

Opsætning

Generelt::Avanceret

  • Delt udklipsholder – aktiveres ved behov.
    • Gør det muligt at overføre tekst fra vært til virtuel og omvendt.
  • Træk og slip – aktiveres ved behov.
    • Gør det muligt at trække en fil fra vært til virtuel og omvendt.

System::Bundkort

  • Fjern unødvendigt diskettedrev.

System::CPU

  • Hvis det er muligt sættes til 2 CPU.

Skærm::Skærm

  • Ved HiDPI skærm sættes skaleringsfaktor til 150 % eller 200 %.
  • 3D og 2D aktiveres ved behov f.eks. CAD eller DTP.

Lagerenheder

  • Marker det tomme CD drev.
  • For indsætning af installations CD-aftryk .
  • Klik CD-skiven til højre.
  • Udpeg cd-aftryk eller dit fysiske drev.

Lydkort

  • Aktiveres eller deaktives efter behov.

Netværk
Ved netværksproblemer checkes at der bruges det rigtige netkort.

  • Klik på Avanceret for at se hvilket netkort der er anvendt.
    • Dvs. hvis du bruger WiFi skal det være dit WiFi kort der er markeret.
    • Der findes yderligere mulighed for at begrænse den virtuelle computers netværksadgang.
    • I nogle tilfælde er det nødvendigt at skifte forbindelse måde fra NAT til Netværksbro.

USB

  • Sættes ikke til bedre end det den fysiske computer har til rådighed f.eks. bruges ikke USB 3 hvis der kun er USB 2 til rådighed.

Delte mapper

Klik Mappe+ til højre.
Ved Mappesti klikkes PilNed
Klik Andet.

  • I din hjemmemappe kan du udpege en mappe du vil have adgang til i den virtuelle maskine.
  • Hvis du undlader at vælge mappe men blot klikker Åbn vil du have adgang til hele din hjemmemappe.

Klik Åbn.

  • Du kan redigere stien – fx hvis ændre fra bruger/doks til bruger.
  • Marker evt. tilvalg (skrivebeskyttet, automatisk tilslutning).

Klik OK.

Start virtuel maskine

 
Dobbeltklik på maskinen eller marker og klik på Start og Windows installeres på sædvanlig måde.
 
Når din virtuelle maskine er færdiginstalleret skal du have VirtualBox Gæstetilføjelser installeret. Disse har betydning for integration med mus og tilpasning af skærmopløsning.
 
Med den virtuelle maskine startet og du er logget ind.
 
Klik i VirtualBox vindues menu Enheder og vælg derefter Indsæt gæstetilføjelser CD-aftryk
 
Herefter vil Windows spørge dig hvad du vil gøre.
 
– Kør installationsprogrammet og accepter standard indstillinger.

Den delte mappe i Windows

  • Åbne Windows Stifinder.
  • Klik på Netværk.
  • Windows advarer: Netværksregistrering er slået fra.
  • Klik OK.

Nu vil der åbne en linje i toppen af Stifinder.

  • Klik på linjen og vælg Slå netværksregistrering og fildeling til.
  • Vælg at netværket skal gøres til privat netværk.

Nu kan du under Netværk vil du finde en sted med navnet VBOXSVR. Der finder du også den mappe du delte fra din linux.

Hvis du kaldte mappen doks vil du have en mappe der hedder \\VBOXSVR\doks.

Hvis du gerne vil have en genvej til i Windows kan du trække den op til Hurtig adgang.

Windows kan godt finde på selv at tilknytte et drev-bogstav typisk E: som du vil finde under Denne pc.
 
Ellers du kan højreklikke på den og vælge Tilknyt netværksdrev... – her kan du give den et bogstav fx Z:.

Hvor finder jeg min produktnøgle

Min Windows produktnøgle – hvor er den?

Linux terminal

sudo cat /sys/firmware/acpi/tables/MSDM

Windows
Hent programet FirmwareTablesView fra nirsoft.net

Det er også muligt at lave et script til backup af produktnøgle.
https://gallery.technet.microsoft.com/scriptcenter/Backup-Windows-product-key-1a200645

Eller vbscript – laves i notepad og gemmes med endelsen .vbs

Set WshShell = CreateObject("WScript.Shell")
MsgBox ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId"))
Function ConvertToKey(Key)
  Const KeyOffset = 52
  i = 28
  Chars = "BCDFGHJKMPQRTVWXY2346789"
  Do
    Cur = 0
    x = 14
    Do
      Cur = Cur * 256
      Cur = Key(x + KeyOffset) + Cur
      Key(x + KeyOffset) = (Cur \ 24) And 255
      Cur = Cur Mod 24
      x = x -1
    Loop While x >= 0
    i = i -1
    KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
    If (((29 - i) Mod 6) = 0) And (i <> -1) Then
      i = i -1
      KeyOutput = "-" & KeyOutput
    End If
  Loop While i >= 0
  ConvertToKey = KeyOutput
End Function

Hyper-V til VirtualBox

Har du konverteret din Windows til Hyper-V kan den konverteres til VirtualBox.

https://www.virtualbox.org/

De fleste Linux distibutioner har den i deres pakke/software installation. Du vil også få brug VirtualBox Extension Pack som kan hentes på VirtualBox web. Mac OSX fungerer muligvis anderledes.

For brug af USB lager skal din bruger tilhøre gruppen ‘vboxusers’ og det er en manuel opgave – check gruppe medlemskab

$ groups
lp wheel network video audio storage users

Tilknyt dit brugernavn

$ sudo gpasswd -a $USER vboxusers

Husk at gruppe medlemskab først træder i kraft ved næste login.

I eksemplet herunder er forudsat

  • en værts maskine med dual-core cpu, 4GB RAM, Intel lydkort
  • engelske mappe navne i home-folder
  • VHDX filen indeholder en Windows 10 (32-bit)
  • virtuel maskin-navn “din-vm”

Opret en mappe til din virtuelle maskine (BEMÆRK: venstre-vendt skråstreg før mellemrum)

$ mkdir -P ~/VirtualBox\ VMs/din-vm

Konverter vhdx-filen til vdi

$ VBoxManage clonehd /path/to/din-vm.vhdx ~/VirtualBox\ VMs/din-vm/din-vm.vdi

Hvis du er mest fortrolig med GUI kan du nu åbne VirtualBox fra genvejen i din distro’s menu system eller du kan forsætte i terminalen.

Terminal kommando til oprettelse og konfigurering af en virtual maskine der bruger din konverterede Hyper-V maskine er som følger.

Opret virtuel maskine

$ VBoxManage createvm --name "din-vm" --ostype "Windows10" --register

Sætte ram og cpu

$ VBoxManage modifyvm "din-vm" --cpus 1 --memory 2048 --longmode on --ioapic on

Sætte boot rækkefølge

$ VBoxManage modifyvm "din-vm" --boot1 disk --boot2 dvd

Sætte grafik og skærm

$ VBoxManage modifyvm "din-vm" --vram 128 --monitorcount 1

Sætte lydkort

$ VBoxManage modifyvm "din-vm" --audio pulse --audiocontroller hda

Sætte mus

$ VBoxManage modifyvm "din-vm" --usb on --usbehci on --mouse usbtablet

Sætte netværk til NAT/DHCP

$ VBoxManage modifyvm "din-vm" --nic1 nat

Oprette disk-styre-enhed

$ VBoxManage storagectl "din-vm" --name "IDE" --add ide --controller PIIX4 --hostiocache on --bootable

Sætte virtuel disk på disk-styre-enhed

$ VBoxManage storageattach "din-vm" --storagectl "IDE" --port 0 --device 0 --type hdd --medium "din-vm.vdi"

Sætte DVD-drev på disk-styre-enhed

$ VBoxManage storageattach "din-vm" --storagectl "IDE" --port 1 --device 0 --type dvddrive --passthrough off --medium host:/dev/sr0

Oprette delt mappe til Linux-home-folder Documents (Dokumenter)

$ VBoxManage sharedfolder add "din-vm" --name $(basename $HOME) --hostpath $HOME/Documents --automount

Windows til Hyper-V

Overfør din windows til virtuel maskine.

Windows opsættes til RDP (Remote Desktop Protocol) på dansk Fjernskrivebord.
Vær sikker på at du har ret til login på Fjernskrivebord.

Flyt data væk fra C:
Det kan være sekundær disk, flytbar disk, cloud, netværk …

Skift størrelse på C: til maks 127GB.
Ved fysisk disk med mere end 127GB kan det være nødvendigt at defragmentere den frie plads før det er muligt at skifte størrelse på C:.

Windows XP bruges fx. http://www.aomeitech.com/download.html

Windows 7, 8.x, 10 bruges Diskhåndtering.

Efter størrelsesændring kan det være en fordel men ikke nødvendigt at konsolidere den frie plads med SDelete, et gratis Microsoft program.

Hvis du bruger SSD diske skal du ikke bruge SDelete da dette slider unødigt på hukommelseskredsene.

https://technet.microsoft.com/en-us/sysinternals/sdelete.aspx

Nu bruges et andet gratis Microsoft program Disk2vhd.

https://technet.microsoft.com/en-us/sysinternals/ee656415.aspx

Dette program kloner computer fra dit C: drev til et format der kan bruges med Microsoft HyperV eller VirtualPC.

Husk at gemme den virtuelle disk som VHDX – det udvidede HyperV format.

Disk2vhd kan gemme den på den computer der klones men kan med fordel gemmes på et eksternt medie fx. en flytbar harddisk, USB eller netværkslager. Husk at der skal være mindst 127GB ledig plads da dette er den maksimale størrelse for den virtuelle harddisk.

HyperV til VirtualBox

Setting up a Magento VM (maintenance purpose)

A client recently asked me to move their Magento to another host. A problem arise since the new host do not provide shell access thus maintaining Magento patches became an issue.

I found and forked this from
Credit where credit is due.
https://www.nerdoncoffee.com/uncategorized/setting-up-a-magento-vm-and-allowing-remote-access/

Grab the VMDK from here

https://bitnami.com/stack/magento/virtual-machine
  • Convert to a qcow2 image

    qemu-img convert -f vmdk -O qcow2 bitnami-magento-1.9.1.0-0-ubuntu-14.04.vmdk magento.qcow2

  • Create a vm and set that is the hard disk image

  • Change all interfaces to virtio 14.04 has paravirtual drivers already installed so is good to go. Why ? Because it will speed up slow as Magento
  • Create a bridge
  • Follow the wiki

    https://wiki.archlinux.org/index.php/Bridge_with_netctl

  • Add your interfaces as appropriate e.g

    Description=”Example Bridge connection”
    Interface=br0
    Connection=bridge
    BindsToInterfaces=(eth0 eth1 tap0 enp2s0)
    IP=dhcp

  • Start it and enable it at boot

    sudo netctl start bridge
    sudo netctl enable bridge

  • Change the Nic to use the new bridge (br0) as the Network source

  • Start the VM
  • Configure whatever you like on your vm
    you could use port forwarding, port triggering, dmz, vpn, ssh etc…

As I don’t really care about this little vm (its just for dev purposes) I threw it in the DMZ zone (make sure it has a static IP – I just did a dhcp reservation and set the mac of the vnic)

  • Adding a DNS A record so you don’t have to remember the ip
    log in to your dns registrar (look up terminology) – I use cloudflare so I just added it in there for this blog as magento.nerdoncoffee.com)

  • Modify your vm
    in /opt/bitnami/apps/magento/conf/htaccess.conf php_value memory_limit 512M

  • Update Apache2 on your vm
    [text]
    #

ServerName magento.example.com

ServerAlias www.magento.example.com

DocumentRoot “/opt/bitnami/apps/magento/htdocs”

#

Include “/opt/bitnami/apps/magento/conf/httpd-app.conf”

#
ServerName magento.nerdoncoffee.com
ServerAlias magento.nerdoncoffee.com www.magento.nerdoncoffee.com
DocumentRoot “/opt/bitnami/apps/magento/htdocs”
Include “/opt/bitnami/apps/magento/conf/httpd-app.conf”

#

ServerName magento.example.com

ServerAlias www.magento.example.com

DocumentRoot “/opt/bitnami/apps/magento/htdocs”

SSLEngine on

SSLCertificateFile “/opt/bitnami/apps/magento/conf/certs/server.crt”

SSLCertificateKeyFile “/opt/bitnami/apps/magento/conf/certs/server.key”

#

Include “/opt/bitnami/apps/magento/conf/httpd-app.conf”

#

ServerName magento.nerdoncoffee.com
ServerAlias magento.nerdoncoffee.com www.magento.nerdoncoffee.com
DocumentRoot “/opt/bitnami/apps/magento/htdocs”
SSLEngine on
SSLCertificateFile “/opt/bitnami/apps/magento/conf/certs/server.crt”
SSLCertificateKeyFile “/opt/bitnami/apps/magento/conf/certs/server.key”

Include “/opt/bitnami/apps/magento/conf/httpd-app.conf”
[/text]
OR
[text]
ServerName magento.nerdoncoffee.com
ServerAlias magento.nerdoncoffee.com
DocumentRoot “/opt/bitnami/apps/magento/htdocs”
Include “/opt/bitnami/apps/magento/conf/httpd-app.conf”

#

ServerName magento.example.com

ServerAlias www.magento.example.com

DocumentRoot “/opt/bitnami/apps/magento/htdocs”

SSLEngine on

SSLCertificateFile “/opt/bitnami/apps/magento/conf/certs/server.crt”

SSLCertificateKeyFile “/opt/bitnami/apps/magento/conf/certs/server.key”

#

Include “/opt/bitnami/apps/magento/conf/httpd-app.conf”

#
ServerName magento.nerdoncoffee.com
ServerAlias magento.nerdoncoffee.com
DocumentRoot “/opt/bitnami/apps/magento/htdocs”
SSLEngine on
SSLCertificateFile “/opt/bitnami/apps/magento/conf/certs/server.crt”
SSLCertificateKeyFile “/opt/bitnami/apps/magento/conf/certs/server.key”

Include “/opt/bitnami/apps/magento/conf/httpd-app.conf”
[/text]

nano /opt/bitnami/apps/magento/conf/htaccess.conf

at the bottom in the directories node

[text]
SetEnvIf Host www.magento.nerdoncoffee.com MAGE_RUN_CODE=magento.nerdoncoffee.com
SetEnvIf Host www.magento.nerdoncoffee.com MAGE_RUN_TYPE=website
SetEnvIf Host ^magento.nerdoncoffee.com MAGE_RUN_CODE=magento.nerdoncoffee.com
SetEnvIf Host ^magento.nerdoncoffee.com MAGE_RUN_TYPE=website
[/text]
Now uncomment the following file in /opt/bitnami/apps/magento/conf/htaccess.conf
[text]

you can put here your magento root folder

path relative to web root

RewriteBase /magento/
[/text]
Restart apache in your vm

sudo /opt/bitnami/ctlscript.sh restart apache

References
* https://bitnami.com/stack/magento/virtual-machine
* https://wiki.archlinux.org/index.php/Bridge_with_netctl
* https://wiki.bitnami.com/Virtual_Appliances_Quick_Start_Guide
* https://wiki.bitnami.com/Virtual_Appliances_Quick_Start_Guide#How_to_enable_sshd.3f

Replace a String in Multiple Files

I recently had to search a huge amount of files (Magento webshop) and replace an url. I did a search an found this.

Credit where credit is due
Forked from http://vasir.net/blog/ubuntu/replace_string_in_multiple_files

I recently had to replace every occurrence of a certain word / string in a ton of files spanning multiple directories, and this is the quickest way I’ve found to do it. It uses grep to search for a certain word and if it find its it runs sed to replace the strings you want. Note: This will not work on windows systems
Basic Format

grep -rl matchstring somedir/ | xargs sed -i ‘s/string1/string2/g’

Note: The forward slash ‘/’ delimiter in the sed argument could also be a different delimiter (such as the pipe ‘|’ character). The pipe delimiter might be useful when searching through a lot of html files if you didn’t want to escape the forward slash, for instance.
matchstring is the string you want to match, e.g., “football” string1 would ideally be the same string as matchstring, as the matchstring in the grep command will pipe only files with matchstring in them to sed. string2 is the string that replace string1. There may be times when you want to use grep to find only files that have some matchstring and then replace on a different string in the file than matchstring. For example, maybe you have a lot of files and only want to only replace on files that have the matchstring of ‘phonenumber’ in them, and then replace ‘555-5555’ with ‘555-1337’. Not that great of an example (you could just search files for that phone number instead of the string ‘phonenumber’), but your imagination is probably better than mine.
Example

grep -rl ‘windows’ ./ | xargs sed -i ‘s/windows/linux/g’

This will search for the string ‘windows’ in all files relative to the current directory and replace ‘windows’ with ‘linux’ for each occurrence of the string in each file.