VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg/ReadMe.txt@ 36424

Last change on this file since 36424 was 36424, checked in by vboxsync, 14 years ago

doc: note about mingw-w64 on recent Ubuntu releases were added.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1$Id: ReadMe.txt 36424 2011-03-25 12:29:29Z vboxsync $
2
3Setting up the source trees
4===========================
5
6Check out the EDK2 trunk/edk2 to some directory of your choice (the command
7creates an edk2 subdirectory):
8
9 svn checkout \
10 --username guest --password guest \
11 -r9332 https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2 edk2
12
13Enter into the edk2 directory and check out EFI/Firmware2/VBoxPkg into a
14VBoxPkg subdirectory:
15
16 svn checkout \
17 http://www.virtualbox.org/svn/vbox/trunk/src/VBox/Devices/EFI/Firmware2/VBoxPkg VBoxPkg
18
19Enter into the VBoxPkg/Include and check out include/iprt and include/VBox:
20
21 svn checkout http://www.virtualbox.org/svn/vbox/trunk/include/iprt iprt
22 svn checkout http://www.virtualbox.org/svn/vbox/trunk/include/VBox VBox
23
24Then copy version-generated.h from
25<VBox-trunk>/out/win.*/*/version-generated.h (into VBoxPkg/include/).
26<VBox-trunk>/out/win.*/*/product-generated.h (into VBoxPkg/include/).
27
28
29Symlink alternative for Vista
30-----------------------------
31
32Say you've got VBox checked out as e:\vbox\trunk and you're on 32-bit Windows
33and having done a debug build. Check out EDK2 somewhere (see above). Then do:
34
35 kmk_ln -s %VBOXSVN%\src\VBox\Devices\EFI\Firmware2\VBoxPkg\ edk2\VBoxPkg
36 kmk_ln -s %VBOXSVN%\include\iprt\ edk2\VBoxPkg\Include\iprt
37 kmk_ln -s %VBOXSVN%\include\VBox\ edk2\VBoxPkg\Include\VBox
38 kmk_ln -s %VBOXSVN%\out\win.x86\debug\version-generated.h edk2\VBoxPkg\Include\version-generated.h
39 kmk_ln -s %VBOXSVN%\out\win.x86\debug\product-generated.h edk2\VBoxPkg\Include\product-generated.h
40
41MinGW for Linux
42================
43
44To install MinGW on Ubuntu systems, just perform
45
46 apt-get install mingw32-binutils mingw32 mingw32-runtime
47
48After that, you can even avoid setting up symlinks, as build script will do
49that automagically.
50
51MinGW-w64 for Linux
52===================
53To build the X64 firmware on Linux, the wimgw-w64 port of mingw is required.
54The binaries are available at:
55
56 http://sourceforge.net/projects/mingw-w64/files/
57
58on recent Ubuntu systems mingw-w64 is available in repository:
59
60 apt-get install mingw-w64
61
62Some non-fatal warnings might appears while compiling on Linux machine so it
63is recommended to disable -Werror at Conf/tools_def.txt:*_UNIXGCC_X64_CC_FLAGS.
64
65While building some versions of wingw-w64/linker might complain that __ModuleEntryPoint wasn't found (and fills entry point field with some default value)
66to fix that, just split the the definition (IA32 and X64),with removing leading underscore '_' for X64 at Conf/tools_def.txt:
67 *_UNIXGCC_*_DLINK_FLAGS=... -entry _$(IMAGE_ENTRY_POINT) ...
68 to
69 *_UNIXGCC_IA32_DLINK_FLAGS=... -entry _$(IMAGE_ENTRY_POINT) ...
70 *_UNIXGCC_X64_DLINK_FLAGS=... -entry $(IMAGE_ENTRY_POINT) ...
71
72Setting up the environment
73==========================
74
75First, enter the VirtualBox environment using tools/env.cmd (and whatever
76local additions you normally use).
77
78Go to the EDK2 source tree you set up in the previous section and run
79VBoxPkg/env.cmd (Windows) and VBoxPkg/env.sh (Unix).
80
81That's it. You can now run build.
82
83
84Patching
85========
86
87VBox guests and hardware required some modifications in EDK2 do before
88building some patches are required:
89
90 cat VBoxPkg/edk2.patch-pmtimer | patch -p0
91 cat VBoxPkg/edk2.patch-no_blocking_partition | patch -p0
92 cat VBoxPkg/edk2.patch-ovmf_pei | patch -p0
93 cat VBoxPkg/edk2.patch-no_blocking_partition | patch -p0
94 cat VBoxPkg/edk2.patch-apple | patch -p0
95 cat VBoxPkg/edk2.patch-rtc | patch -p0
96 cat VBoxPkg/edk2.patch-mem_acpi | patch -p0
97 cat VBoxPkg/edk2.patch-idtgdt | patch -p0
98
99
100Building
101========
102Edit Cont/target.txt:
103
104 $ cat Conf/target.txt
105 ACTIVE_PLATFORM = VBoxPkg/VBoxPkgOSE.dsc
106 TARGET = DEBUG
107 TARGET_ARCH = IA32
108 TOOL_CHAIN_CONF = Conf/tools_def.txt
109 TOOL_CHAIN_TAG = UNIXGCC
110 MAX_CONCURRENT_THREAD_NUMBER = 1
111 MULTIPLE_THREAD = Disable
112 BUILD_RULE_CONF = Conf/build_rule.txt
113
114The make program is called 'build' (edk2\BaseTools\Bin\Win32\build.exe). To
115start building just execute 'build'. If you have a multicore machine and run
116into bad build errors, try 'build -n 1' to avoid mixing up errors. For more
117options try 'build --help'.
118
119
120Running
121=======
122
123Copy (or symlink) Build\VBoxPkg\DEBUG_MYTOOLS\FV\VBOX.fd to the
124VirtualBox bin directory as vboxefi.fv.
125 copy e:\edk2\Build\VBoxPkg\DEBUG_MYTOOLS\FV\VBOX.fd e:\vbox\trunk\out\win.x86\debug\bin\VBoxEFI32.fd
126 or
127 kmk_ln -s e:\edk2\Build\VBoxPkg\DEBUG_MYTOOLS\FV\VBOX.fd e:\vbox\trunk\out\win.x86\debug\bin\VBoxEFI32.fd
128
129You need to build have a VirtualBox debug build with the following in your
130Note that these options will not change the VirtualBox behavior only enable
131the EFI feature.
132
133Create a new VM with enabled EFI support.
134
135Currently all there is to see is in the log output and debugger. Suggested
136log setup (debug builds only):
137
138 set VBOX_LOG=dev_efi.e.l2
139 set VBOX_LOG_DEST=stderr
140 set VBOX_LOG_FLAGS=unbuffered msprog thread
141
142And suggested way of starting the VM:
143
144 VirtualBox.exe --startvm efi
145
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette