Hur man kör Windows 7 på fysisk hårddisk över VirtualBox

Här kan du dela med dig av dina bästa tips och knep.
Kategoriregler
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
medvetandet
Inlägg: 1
Blev medlem: 16 feb 2011, 09:49
OS: Kubuntu
Utgåva: 22.10 Kinetic Kudu

Hur man kör Windows 7 på fysisk hårddisk över VirtualBox

Inlägg av medvetandet »

Hej,

********OBS! Var försiktiga så att ni inte lyckas boota samma OS som gäst som det ni köra. Har personligen inte testat det men skulle tro att det kan sluta illa. Jag är ingen expert utan skriver endast ned vad som fungerade för mig om det hjälper er på något sätt att få det att fungera för er så är det jätte kul men jag tar inget ansvar för om något går fel. Ni bär ansvar för vad ni gör med eran hårdvara.**********

Hårdvara:
Dator: DELL Latitude E5510
CPU: Intel core i5
RAM: 4 GB
Hårddisk: 300 GB
Grafik: Intel HD

Info om mitt Linux System:
OS: KUbuntu 10.10

Kod: Markera allt

$ uname -a
Linux mans-LJPC 2.6.35-22-generic #35-Ubuntu SMP Sat Oct 16 20:45:36 UTC 2010 x86_64 GNU/Linux
Lite mer info hittas i bifogade filen system.txt

Info om mitt Windows System:
OS: WIndows 7 Professional 32-bit

Info om VirtualBox:
Version: 3.2.8 OSE

Kod: Markera allt

$ sudo apt-cache show virtualbox-ose
Package: virtualbox-ose
Priority: optional
Section: universe/misc
Installed-Size: 31716
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Virtualbox Team <pkg-virtualbox-devel@lists.alioth.debian.org>
Architecture: amd64
Version: 3.2.8-dfsg-2ubuntu1
Depends: libc6 (>= 2.11), libcurl3 (>= 7.16.2-1), libgcc1 (>= 1:4.1.1), libpng12-0 (>= 1.2.13-4), libpython2.6 (>= 2.6), libsdl1.2debian (>= 1.2.10-1), libssl0.9.8 (>= 0.9.8m-1), libstdc++6 (>= 4.2.1), libvncserver0, libx11-6, libxcursor1 (>> 1.1.2), libxext6, libxml2 (>= 2.7.4), libxmu6, libxt6, zlib1g (>= 1:1.1.4), python (>= 2.4), python-central (>= 0.6.11), adduser
Recommends: virtualbox-ose-dkms (= 3.2.8-dfsg-2ubuntu1), virtualbox-ose-qt (= 3.2.8-dfsg-2ubuntu1), libgl1-mesa-glx | libgl1, libqt4-opengl (>= 4:4.5.3), libqtcore4 (>= 4:4.5.3), libqtgui4 (>= 4:4.5.3)
Suggests: virtualbox-guest-additions, libasound2, libpulse0, vde2
Conflicts: virtualbox, virtualbox-2.0, virtualbox-2.1, virtualbox-2.2, virtualbox-3.0
Filename: pool/universe/v/virtualbox-ose/virtualbox-ose_3.2.8-dfsg-2ubuntu1_amd64.deb
Size: 9051000
MD5sum: cf35270cf74f9f7365e3728f255ca9ab
SHA1: aeecf304119480b1570a779753356c788ee95a91
SHA256: f60f258ac2f2140553ec5feda6c9ae223acbba322f138bf3481328a93610d5a5
Description: x86 virtualization solution - base binaries
 VirtualBox is a free x86 virtualization solution allowing a wide range
 of x86 operating systems such as Windows, DOS, BSD or Linux to run on a
 Linux system.
 .
 This package provides the binaries for the Open Source Edition of
 VirtualBox. The virtualbox-ose-dkms package is also required in order
 to compile the kernel modules needed for virtualbox-ose. A graphical user
 interface for VirtualBox is provided by the package virtualbox-ose-qt.
Homepage: http://www.virtualbox.org/
Python-Version: >= 2.4
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Jag har en lite rörig partitionering av min hårddisk men det är inget som ni ska ta efter fdisk ger följande:

Kod: Markera allt

$ fdisk -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x77e3ed41

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           5       40131   de  Dell Utility
/dev/sda2   *           6          18      102400    7  HPFS/NTFS
Partition 2 does not end on cylinder boundary.
/dev/sda3              18       10204    81817600    7  HPFS/NTFS
/dev/sda4           10204       38914   230608897    5  Extended
/dev/sda5           10204       12636    19529728   83  Linux
/dev/sda6           12636       37698   201312256   83  Linux
/dev/sda7           37698       37820      975872   82  Linux swap / Solaris
/dev/sda8           37820       38914     8787968    b  W95 FAT32
OBS! att jag inte körde sudo det kan vara så att ni behöver köra det, jag har lagt till gruppen disk till min användare vilket jag kommer gå igenom längre fram.

I detta läget kan jag nu köra dual boot mellan KUbuntu och Windows 7 inget märkvärdigt här. Windows 7 har två partitioner sda2 och sda3 där sda2 är 100 MB och det är här som windows 7 boot manager installerats. Jag har därefter skapat en extended partition där jag partitionerat disken för mitt Linux system. Jag har skrivit över MBR med grub efter KUbuntu installation om man vill ha kvar MBR från windows 7 så går det nog bra men det är inget jag testat.

För att kunna köra windows 7 som både gäst OS och som "native" behöver vi först skapa en vmdk fil som är en virtuel disk. I vårat fall ska vi inte skapa en vanlig virtuel disk fil eftersom vi vill köra på våran befintliga windows 7 disk. VirtualBox har ett verktyg som kan hjälpa os med detta som heter VBoxManage ni hittar info om detta i länken http://www.virtualbox.org/manual/ch08.html.

Innan vi kan använda os av VBoxMange på våran disk så måste vi först se till så att vi kan göra detta utan att köra som sudo. I mitt fall har jag min hårddisk på device file /dev/sda om om man kör kommandot

Kod: Markera allt

$ ls -la /dev/sda*
brw-rw---- 1 root disk 8, 0 2011-02-16 08:21 /dev/sda
brw-rw---- 1 root disk 8, 1 2011-02-16 08:12 /dev/sda1
brw-rw---- 1 root disk 8, 2 2011-02-16 08:12 /dev/sda2
brw-rw---- 1 root disk 8, 3 2011-02-16 08:12 /dev/sda3
brw-rw---- 1 root disk 8, 4 2011-02-16 08:12 /dev/sda4
brw-rw---- 1 root disk 8, 5 2011-02-16 08:12 /dev/sda5
brw-rw---- 1 root disk 8, 6 2011-02-16 08:12 /dev/sda6
brw-rw---- 1 root disk 8, 7 2011-02-16 08:12 /dev/sda7
brw-rw---- 1 root disk 8, 8 2011-02-16 08:12 /dev/sda8
Här kan vi se att ägaren är root men att även gruppen disk kan göra det så det vi nu ska göra är att lägga till gruppen "disk" till våran användare mha kommandot

Kod: Markera allt

$ sudo usermod -a -G disk myusername
När detta är gjort logga ut och in igen för att få det att verka. Nu tillhör våran användare "myusername" gruppen "disk" som då har skrivrättigheter och läsrättigheter till device filerna /dev/sda*. Se till att ändra "myusername" till den använder som det gäller i ditt fall.

Nu kan vi köra följande VBoxManage kommando för att testa detta

Kod: Markera allt

$ VBoxManage internalcommands listpartitions -rawdisk /dev/sda
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8_OSE
(C) 2005-2010 Oracle Corporation
All rights reserved.

Number  Type   StartCHS       EndCHS      Size (MiB)  Start (Sect)
1       0xde  0   /1  /1   4   /254/63            39           63
2       0x07  5   /25 /21  17  /216/7            100        81920
3       0x07  17  /216/8   1023/254/63         79900       286720
5       0x83  1023/254/63  1023/254/63         19072    163923968
6       0x83  1023/254/63  1023/254/63        196594    202985472
7       0x82  1023/254/63  1023/254/63           953    605612032
8       0x0b  1023/254/63  1023/254/63          8582    607565824
Så nu är det dags att skapa vmdk filen med VBoxManage ni hittar mer info om hur man gör detta i länken http://www.virtualbox.org/manual/ch09.html#id382227. Om ni vill använda er av en hel hårdisk kan ni använda er av följande länk http://blarts.wordpress.com/2007/12/06/ ... isty-fawn/. Det vi ska göra är att skapa en vmdk fil som endast ger tillgång till vissa partitioner på disken. Hur man gör dett kan ni hitta i länken http://www.virtualbox.org/manual/ch09.html#id382227 om ni söker efter "Access to individual physical hard disk partitions".

Följande kommando åstadkommer det vi vill

Kod: Markera allt

$ mkdir /home/myusername/virtualbox
$ VBoxManage internalcommands createrawvmdk -filename /home/myusername/virtualbox/win7.vmdk -rawdisk /dev/sda -partitions 2,3,5 -register
Vad detta kommando gör är att skapa en vmdk fil som gör det möjligt för gäst OS som kör i VirtualBox möjlighet att komma åt de fysiska partitionerna (diskarna) 2,3 och 5. Dessa nummer motsvarar device filerna /dev/sda2, /dev/sda3 och /dev/sda5. Egentligen är inte partition 5 nödvändigt men för att vi ska kunna testa detta i etapper så lägger vi till den. Anledningen till partition 5 är för att i etapp 1 så kommer vi testa att det går att boota in till grub som installerats på hårddisken efter att grub startat kommer grub att behöva
få tillgång till /boot/grub katalogen som i mitt fall ligger på partition 5 ni kanske har placerat /boot på en egen partition och då är det den som ni ska ta med i kommandot ovan. Det sista flagan "-register" ser till så att vmdk filen registreras i VirtualBox.

Starta VirtualBox och gå till File->Virtual Media Manager och klicka på Hard Disks tabben. Ni borde nu se en disk win7.vmdk. Gå tillbaka och klicka på Machine->New. Gå igenom följande steg:
1. Klicka på "Next"
2. Skriv in "Name" win7, välj Microsoft Windows som "Operating System" och välj Windows 7 om ni kör 32-bitar som "Version". Klicka på "Next".
3 Välj mängden minne, eftersom jag har 4 GB så valde jag nästan 2 GB. Klicka på "Next".
4. Klicka i rutan "Boot Hard Disk" om den inte redan är i kryssad. Välj sedan "Use existing har disk" och välj win7.vmdk. Klicka på "Next".
5. När detta är gjort ska en virtuel maskin skapats. Klicka nu på "Settings" och välj "system" kryssa i "Enable IO APIC" under fliken "Motherboard". Se också till att under fliken "Acceleration" att både "Enable VT-x/AMD-V" och "Enable Nested Paging" är ikryssade. Klicka på "OK".

Nu är vi klara med den första etappen och det är dags att test.
*****************OBS!, när ni nu startar windows 7 från VirtualBox kommer grub från hård disken startas och där med kommer alla inställningar som ni har gälla se därför till att ni inte har något default alternativ som kommer starta. Det är viktigt att ni inte försöker starta samma OS som ni kör VirtualBox i se därför till att ni iallafall har "set timeout=10" satt i /boot/grub/grub.cfg om inte måste ni konfigurera om detta i filen /etc/default/grub och sedan köra om update-grub*************

Start windows 7 genom VirtualBox och se till att ni inte av misstag startar samma OS som ni redan kör VirtualBox i. Om detta fungera kan ni forsätta läsa annars skriv en kommentar så ska jag se om jag kan hjälpa er.

Nästa steg blir att se till att vi slipper det nervpirrande problemet med att råka boota in i samma OS som vi redan kör. Jag fick iden från följande länk http://www.rajatarya.com/website/taming ... tualbox-vm i en kommentar skriven av en "D Parker". D Parker skriver följande:
I was afraid that some day I might accidentally boot into Linux, which would be really ugly since it would be trying the boot the same OS the host was running and almost surely cause corruption. So as a trick I created a boot floppy image with grub for the Windows VM and changed the menu so Windows was the only choice. I attached this image to the VM, made sure it the boot order had the floppy first, and now I can boot Windows cleanly either natively or through VirtualBox.
Det låter ju bra det är ju precis vad vi vill åstadkomma :). Dock fick jag lite problem med att skapa en floppy image med grub installerat efter lite googlande så ser det ut som om grub-mkrescue hade tidigare en flaga som man kunde sätta till att skapa en floppy image eller en CD image dock är det inte ett alternativ längre utan nu kan man endast skapa en CD image. För att skapa denna CD image med grub på ska följande steg utföras:

Kod: Markera allt

$ cd 
$ mkdir iso
$ cd iso
$ mkdir -p boot/grub
$ cd boot/grub
Nu är det dags att konfigurera grub så att endast posten med windows 7 finns kvar i grub.cfg filen som vi placerar i våran CD image. Dessa stegen får ni anpassa efter hur eran befintliga grub är konfigurerad i mitt fall behöver jag endast ta bort min post med ubuntu och sedan min post med memtest.

Kod: Markera allt

$ sudo chmod -x /etc/grub.d/10_linux
$ sudo chmod -x /etc/grub.d/20_memtest86+
Generera en ny grub konfigurations fil

Kod: Markera allt

$ sudo grub-mkconfig > grub.cfg
Installera xorris om det skulle behövas grub-mkrescue behöver den iallafall.

Kod: Markera allt

$ sudo apt-get install xorriso
$ grub-mkrescue --modules="linux ext2 fat fshelp ls boot pc ntfs" --output=/home/mans/virtualbox/grub2.iso iso
/
Vilka moduler ni behöver välja kan varijera beroende på vad ni kör men jag valde dessa och det fungerade för mig iallafall.

Nästa steg nu blir att se till så att när VirtualBox startar att den väljer att boota från våran CD image med våran nyligen konfigurerad grub som endast har window 7 som boot alternativ istället för att köra våran "native" grub version.

Starta VirtualBox gå sedan till "Settings" och välj "Storage" under "Storage Tree" välj "IDE Controller" och välj "Add CD/DVD device". Se till att "Slot" är satt till "IDE Secondary Master" och därefter välj våran grub.iso som "CD/DVD device". Se sedan till att under "System" och fliken "Motherboard" att "Boot Order" har "CD/DVD-ROM" ikryssad.

Så det va det det:). Nu borde ni kunna starta windows 7 från VirtualBox. En grub med endast windows 7 som boot alternativ borde dyka upp. Ni borde även kunna köra windows 7 som "native" OS.
Bilagor
system.txt
(5.16 KiB) Nerladdad 167 gånger
Senast redigerad av 1 medvetandet, redigerad totalt 19 gånger.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Hur man kör Windows 7 på fysisk hårddisk över VirtualBox

Inlägg av m!rage »

Bra guide. Lägg gärna kommandona inom code-taggar så blir texten lättare att följa.
Att lägga till sig själv i gruppen disk gör att man ger sin egen användare möjlighet att göra precis vad som helst med hårddiskarna, inklusive att kringgå allt vad Unix-rättigheter betyder (tror jag). Jag är lite för paranoid för det och jag hittar ingen annan lösning för att få det att fungera så jag la ner det här projektet för den här gången.
Skriv svar

Återgå till "Guider"