• Home
  • History
  • Annotate
  • only in this directory
NameDateSize

..25-Jul-201930

cleanREADME.awkH A D25-Jul-2019149

cleanTex.awkH A D25-Jul-2019162

generate_readme_tex.shH A D25-Jul-2019662

HakefileH A D25-Jul-2019593

helloWorld2.pdfH A D25-Jul-201929 KiB

helloWorldApp.texH A D25-Jul-201915.1 KiB

PracticalGuide.texH A D25-Jul-20192.6 KiB

readme.texH A D25-Jul-20195.6 KiB

readme.tex

1\section{Supported PC hardware%
2  \label{supported-pc-hardware}%
3}
4
5Barrelfish supports following PC hardware :
6%
7\begin{quote}
8%
9\begin{itemize}
10
11\item x86 CPUs in either IA-32 or AMD64 mode. The following are known to work:
12%
13\begin{itemize}
14
15\item Intel Xeon Clovertown, Gainestown, Beckton (X5355, E5520, X7560, L5520,
16L7555)
17
18\item AMD Opteron Santa Rosa, Barcelona, Shanghai, Istanbul, Magny Cours
19(2220, 8350, 8374, 8380, 8431, 6174)
20
21\end{itemize}
22
23\end{itemize}
24
25\end{quote}
26
27The biggest compatibility problems are likely to be in the PCI/ACPI code. We
28usually discover new quirks (or missing functionality in the ACPI glue code)
29on each new machine we test. The following systems are known to work:
30%
31\begin{quote}
32%
33\begin{itemize}
34
35\item Intel x5000XVN
36
37\item Tyan n6650W and S4985
38
39\item Supermicro H8QM3-2
40
41\item Dell PowerEdge R610 and R905
42
43\item Sun Fire X2270 and X4440
44
45\item Intel/Quanta QSSC-S4R
46
47\item Lenovo X200 and X301 laptops
48
49\item ASUS Eee PC 1015PEM netbooks
50
51\end{itemize}
52
53\end{quote}
54
55The e1000n driver should work with most recent Intel gigabit ethernet
56controllers (see the list in devices/e1000.dev). We've mostly used the
5782572EI (PCI device ID 0x1082).
58
59You should also be able to boot Barrelfish on a recent version of QEMU (0.14);
60note that the e1000 device emulated by QEMU is not supported by our driver.
61
62
63\section{Required Tools%
64  \label{required-tools}%
65}
66
67The following are required to build Barrelfish and its tools:
68%
69\begin{quote}
70%
71\begin{itemize}
72
73\item GCC 4.x
74%
75\begin{itemize}
76
77\item 4.4.5, and 4.5.2 are known to work
78
79\item cross-compiling between i386 and x86\_64 works (requires libc6-dev-i386
80to build 32 bit on 64 bit machine)
81
82\item for the ARM port, we recommend the EABI tools available from \href{http://www.codesourcery.com/sgpp/lite/arm}{CodeSourcery}.
83
84\end{itemize}
85
86\item GNU binutils (2.19 is known to work)
87
88\item GNU make
89
90\item GHC v7.4 and Parsec 3.1
91- older versions of the tree supported v6.10 or v6.12.2 with Parsec 2.1
92- GHC v6.12.1 has a known bug and is unable to build our tools
93- earlier versions of GHC are unsupported
94
95\end{itemize}
96
97\end{quote}
98
99Our build system may not be very portable; if in doubt, try building on a
100recent Debian or Ubuntu system, as these are what we use.
101
102
103\section{Building%
104  \label{building}%
105}
106\newcounter{listcnt0}
107\begin{list}{\arabic{listcnt0}.}
108{
109\usecounter{listcnt0}
110\setlength{\rightmargin}{\leftmargin}
111}
112
113\item Assuming you have already unpacked the sources, create a build directory
114%
115\begin{quote}{\ttfamily \raggedright \noindent
116\$~mkdir~build~\&\&~cd~build
117}
118\end{quote}
119\end{list}
120
1211. Run \texttt{hake.sh}, giving it the path to the source directory and target
122architecture(s)
123%
124\begin{quote}{\ttfamily \raggedright \noindent
125\$~../hake/hake.sh~-s~../~-a~x86\_64
126}
127\end{quote}
128
129This will configure the build directory and use GHC to compile and then run
130hake, a tool used to generate the \texttt{Makefile}.
131
1323. Optionally, edit the configuration parameters in \texttt{hake/Config.hs} and
133run \texttt{make rehake} to apply them.
134\setcounter{listcnt0}{0}
135\begin{list}{\arabic{listcnt0}.}
136{
137\usecounter{listcnt0}
138\addtocounter{listcnt0}{3}
139\setlength{\rightmargin}{\leftmargin}
140}
141
142\item Run make, and wait
143%
144\begin{quote}{\ttfamily \raggedright \noindent
145\$~make
146}
147\end{quote}
148
149\item If everything worked, you should now be able to run Barrelfish inside QEMU
150%
151\begin{quote}{\ttfamily \raggedright \noindent
152\$~make~sim
153}
154\end{quote}
155\end{list}
156
157
158\section{Installing and Booting%
159  \label{installing-and-booting}%
160}
161
162Barrelfish requires a Multiboot-compliant bootloader that is capable of loading
163an ELF64 image. At the time of writing, this doesn't include the default GRUB.
164Your options are either:
165%
166\begin{quote}
167%
168\begin{itemize}
169
170\item use the pre-loader ``elver'' that can be found in the tools directory
171
172\item patch GRUB to support a 64-bit kernel image, using this \href{http://savannah.gnu.org/bugs/?17963}{patch}.
173
174\end{itemize}
175
176\end{quote}
177
178``Installing'' Barrelfish currently consists of copying the ELF files for the CPU
179driver and user programs to a location that the target machine can boot from,
180and writing a suitable menu.lst file that instructs the bootloader (GRUB) which
181programs to load and the arguments to pass them.
182
183If you specify an appropriate INSTALL\_PREFIX, \texttt{make install} will copy the
184binaries to the right place for you, eg
185%
186\begin{quote}{\ttfamily \raggedright \noindent
187\$~make~install~INSTALL\_PREFIX=/tftpboot/barrelfish
188}
189\end{quote}
190
191We usually boot Barrelfish via PXE/TFTP, although loading from a local disk
192also works. Instructions for setting up GRUB to do this are beyond the scope of
193this document. Assuming you have such a setup, here is a sample menu.lst file
194for a basic diskless boot that doesn't do anything useful beyond probing the
195PCI buses and starting a basic shell
196%
197\begin{quote}{\ttfamily \raggedright \noindent
198title~~~Barrelfish\\
199root~~~~(nd)\\
200kernel~/barrelfish/x86\_64/sbin/elver\\
201module~/barrelfish/x86\_64/sbin/cpu\\
202module~/barrelfish/x86\_64/sbin/init\\
203module~/barrelfish/x86\_64/sbin/mem\_serv\\
204module~/barrelfish/x86\_64/sbin/monitor\\
205module~/barrelfish/x86\_64/sbin/ramfsd~boot\\
206module~/barrelfish/x86\_64/sbin/skb~boot\\
207modulenounzip~/barrelfish/skb\_ramfs.cpio.gz~nospawn\\
208module~/barrelfish/x86\_64/sbin/acpi~boot\\
209module~/barrelfish/x86\_64/sbin/pci~boot\\
210module~/barrelfish/x86\_64/sbin/spawnd~boot\\
211module~/barrelfish/x86\_64/sbin/serial\\
212module~/barrelfish/x86\_64/sbin/fish
213}
214\end{quote}
215
216There are many other programs you can load (take a look around the usr tree for
217examples). To start a program on a core other than the BSP core, pass
218\texttt{core=N} as its first argument.
219
220If things work, you should see output on both the VGA console and COM1.
221
222
223