The word 'coreboot' should always be written in lowercase, even at the start of a sentence. Unfortunately, some external websites and projects are spelling coreboot with an uppercase C, so references to those pages can't be changed without breaking the link. Change-Id: I79824da8a9ed36a1e4fe23a1711a89535267bf5f Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/20031 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
		
			
				
	
	
		
			672 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			672 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
%
 | 
						|
% This document is released under the GPL
 | 
						|
% Initially written by Stefan Reinauer, <stepan@coresystems.de>
 | 
						|
%
 | 
						|
 | 
						|
\documentclass[titlepage,12pt]{article}
 | 
						|
\usepackage{a4}
 | 
						|
\usepackage{graphicx}
 | 
						|
\usepackage{epsfig}
 | 
						|
\usepackage{epstopdf}
 | 
						|
\usepackage{url}
 | 
						|
\usepackage{color}
 | 
						|
% \usepackage{geometry}
 | 
						|
\usepackage[pdftex]{hyperref}
 | 
						|
% \usepackage{makeidx}
 | 
						|
% \makeindex
 | 
						|
% \geometry{left=2cm,right=2cm,top=2cm,bottom=2cm}
 | 
						|
 | 
						|
\hypersetup{
 | 
						|
    urlbordercolor={1 1 1},
 | 
						|
    menubordercolor={1 1 1},
 | 
						|
    linkbordercolor={1 1 1},
 | 
						|
    colorlinks=false,
 | 
						|
    % pdfpagemode=None,  % PDF-Viewer starts without TOC
 | 
						|
    % pdfstartview=FitH,
 | 
						|
    pdftitle={coreboot Porting Guide},
 | 
						|
    pdfauthor={Zheng Bao},
 | 
						|
    pdfsubject={coreboot configuration and build process},
 | 
						|
    pdfkeywords={coreboot, AMD, configuration, Build}
 | 
						|
}
 | 
						|
 | 
						|
\setlength{\parindent}{0pt}
 | 
						|
\setlength{\hoffset}{0pt}
 | 
						|
 | 
						|
\title{coreboot from Scratch}
 | 
						|
\author{Stefan Reinauer $<$stepan@coresystems.de$>$\and Zheng Bao $<$zheng.bao@amd.com$>$}
 | 
						|
\date{Dec 4th, 2013}
 | 
						|
 | 
						|
\begin{document}
 | 
						|
 | 
						|
\maketitle
 | 
						|
 | 
						|
\thispagestyle{empty}
 | 
						|
 | 
						|
\tableofcontents
 | 
						|
 | 
						|
\newpage
 | 
						|
 | 
						|
\section{What is coreboot}
 | 
						|
coreboot aims to replace the normal BIOS found on x86, AMD64, PPC,
 | 
						|
Alpha, and other machines with a Linux kernel that can boot Linux from a cold
 | 
						|
start. The startup code of an average coreboot port is about 500 lines of
 | 
						|
assembly and 5000 lines of C. It executes 16 instructions to get into 32bit
 | 
						|
protected mode and then performs DRAM and other hardware initializations
 | 
						|
required before Linux can take over.
 | 
						|
 | 
						|
The projects primary motivation initially was maintenance of large
 | 
						|
clusters. Not surprisingly interest and contributions have come from
 | 
						|
people with varying backgrounds.  Nowadays a large and growing number of
 | 
						|
Systems can be booted with coreboot, including embedded systems,
 | 
						|
Desktop PCs and Servers.
 | 
						|
 | 
						|
This document is used to build, modify, and port the coreboot code
 | 
						|
base on the AMD platform.
 | 
						|
 | 
						|
 | 
						|
\section{Changes}
 | 
						|
 | 
						|
 \begin{itemize}
 | 
						|
 \item 2013/12/20 Add Git, Gerrit, toolchains building.
 | 
						|
 \item 2009/04/19 replace LinuxBIOS with coreboot
 | 
						|
 \item 2004/06/02 url and language fixes from Ken Fuchs $<$kfuchs@winternet.com$>$
 | 
						|
 \item 2004/02/10 ACPI and option ROM updates
 | 
						|
 \item 2003/11/18 initial release
 | 
						|
 \end{itemize}
 | 
						|
 | 
						|
%
 | 
						|
% Build Requirements
 | 
						|
%
 | 
						|
 | 
						|
\section{Build Requirements}
 | 
						|
To build coreboot for AMD64 from the sources you need a recent Linux.
 | 
						|
SUSE Linux 11.2, CentOS release 6.3, Fedora Core 16, Cygwin, FreeBSD,
 | 
						|
NetBSD are known to work fine.
 | 
						|
 | 
						|
To build the toolchain, you need following host compilers:
 | 
						|
 | 
						|
 \begin{itemize}
 | 
						|
 \item GNUtar
 | 
						|
 \item GNUpatch
 | 
						|
 \item GNUmake
 | 
						|
 \item GCC
 | 
						|
 \item binutils
 | 
						|
 \item bison
 | 
						|
 \item flex
 | 
						|
 \item m4
 | 
						|
 \item wget
 | 
						|
 \end{itemize}
 | 
						|
 | 
						|
Besides the tools above, after the toolchains are built, you also need the following
 | 
						|
tools to build the source.
 | 
						|
 | 
						|
 \begin{itemize}
 | 
						|
 \item git: Get the source code from repository
 | 
						|
 \item libncurses-dev (or ncursesw, ncurses, curses, pdcursesw, pdcurses): for menuconfig
 | 
						|
 \item python: Optional for gdb.
 | 
						|
 \item perl: Optional for gdb.
 | 
						|
 \end{itemize}
 | 
						|
 | 
						|
%
 | 
						|
% Getting coreboot
 | 
						|
%
 | 
						|
 | 
						|
\section{Getting coreboot}
 | 
						|
The latest coreboot sources are available via GIT.
 | 
						|
For users who doesn't need to change and commit the code:
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git clone https://review.coreboot.org/p/coreboot
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
For developers, you need to get a gerrit account which you can register
 | 
						|
at \url{https://review.coreboot.org}. Please refer section ~\ref{sec:gerrit}
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git clone ssh://<username>@review.coreboot.org:29418/coreboot
 | 
						|
$ git clone https://[<username>:<password>@]review.coreboot.org/coreboot.git
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
Checks out a sub-repository in the 3rdparty directory.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git submodule update --init --checkout
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
%
 | 
						|
% Building the toolchain
 | 
						|
%
 | 
						|
 | 
						|
\section{Building the toolchain}
 | 
						|
coreboot recommends and guarantees the toolchain integrated with coreboot.
 | 
						|
Linux distributions usually modify their compilers in ways incompatible with coreboot.
 | 
						|
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ cd coreboot
 | 
						|
$ make crossgcc
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
or
 | 
						|
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ cd util/crossgcc
 | 
						|
$ buildgcc
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
The buildgcc will try to get packages from website. You need to make sure you can
 | 
						|
get access the internet. Or you can get the source.tar.gz and put it in util/crossgcc/tarballs.
 | 
						|
 | 
						|
{ \small
 | 
						|
\textcolor{blue} {Welcome to the} \textcolor{red} {coreboot} \textcolor{blue} {cross toolchain builder v1.23 (September 20th, 2013)}
 | 
						|
 | 
						|
Target arch is now i386-elf
 | 
						|
 | 
						|
Will skip GDB ... ok
 | 
						|
 | 
						|
Downloading tar balls ...
 | 
						|
 | 
						|
 * gmp-5.1.2.tar.bz2 (cached)
 | 
						|
 | 
						|
 * mpfr-3.1.2.tar.bz2 (cached)
 | 
						|
 | 
						|
 * mpc-1.0.1.tar.gz (cached)
 | 
						|
 | 
						|
 * libelf-0.8.13.tar.gz (cached)
 | 
						|
 | 
						|
 * gcc-4.7.3.tar.bz2 (cached)
 | 
						|
 | 
						|
 * binutils-2.23.2.tar.bz2 (cached)
 | 
						|
 | 
						|
 * acpica-unix-20130626.tar.gz (cached)
 | 
						|
 | 
						|
Downloaded tar balls ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Unpacking and patching ...
 | 
						|
 | 
						|
 * gmp-5.1.2.tar.bz2
 | 
						|
 | 
						|
 * mpfr-3.1.2.tar.bz2
 | 
						|
 | 
						|
 * mpc-1.0.1.tar.gz
 | 
						|
 | 
						|
 * libelf-0.8.13.tar.gz
 | 
						|
 | 
						|
 * gcc-4.7.3.tar.bz2
 | 
						|
 | 
						|
 * binutils-2.23.2.tar.bz2
 | 
						|
 | 
						|
   o binutils-2.23.2\_arv7a.patch
 | 
						|
 | 
						|
   o binutils-2.23.2\_no-bfd-doc.patch
 | 
						|
 | 
						|
 * acpica-unix-20130626.tar.gz
 | 
						|
 | 
						|
Unpacked and patched ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Building GMP 5.1.2 ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Building MPFR 3.1.2 ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Building MPC 1.0.1 ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Building libelf 0.8.13 ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Building binutils 2.23.2 ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Building GCC 4.7.3 ...  ok
 | 
						|
 | 
						|
Skipping Expat (Python scripting not enabled)
 | 
						|
 | 
						|
Skipping Python (Python scripting not enabled)
 | 
						|
 | 
						|
Skipping GDB (GDB support not enabled)
 | 
						|
 | 
						|
Building IASL 20130626 ... \textcolor {green}{ok}
 | 
						|
 | 
						|
Cleaning up... \textcolor {green}{ok}
 | 
						|
 | 
						|
\textcolor {green}{You can now run your i386-elf cross toolchain from /home/baozheng/x86/coreboot-gerrit/util/crossgcc/xgcc.}
 | 
						|
}
 | 
						|
If you are lucky, you can get toolchains located in util/crossgcc/xgcc.
 | 
						|
 | 
						|
%
 | 
						|
% Build coreboot
 | 
						|
%
 | 
						|
 | 
						|
\section{Building coreboot}
 | 
						|
\subsection{Build main module of coreboot}
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ cd coreboot
 | 
						|
$ make menuconfig
 | 
						|
.config - coreboot v4.0-4895-gc5025a4-dirty Configuration
 | 
						|
+------------------------ coreboot Configuration -------------------------+
 | 
						|
|  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |
 | 
						|
|  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |
 | 
						|
|  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </> |
 | 
						|
|  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < >       |
 | 
						|
| +---------------------------------------------------------------------+ |
 | 
						|
| |        General setup  --->                                          | |
 | 
						|
| |        Mainboard  --->                                              | |
 | 
						|
| |        Architecture (x86)  --->                                     | |
 | 
						|
| |        Chipset  --->                                                | |
 | 
						|
| |        Devices  --->                                                | |
 | 
						|
| |        VGA BIOS  --->                                               | |
 | 
						|
| |        Display  --->                                                | |
 | 
						|
| |        PXE ROM  --->                                                | |
 | 
						|
| |        Generic Drivers  --->                                        | |
 | 
						|
| |        Console  --->                                                | |
 | 
						|
| |    [ ] Relocatable Modules                                          | |
 | 
						|
| |        System tables  --->                                          | |
 | 
						|
| |        Payload  --->                                                | |
 | 
						|
| |        Debugging  --->                                              | |
 | 
						|
| |    ---                                                              | |
 | 
						|
| +----v(+)-------------------------------------------------------------+ |
 | 
						|
+-------------------------------------------------------------------------+
 | 
						|
|                    <Select>    < Exit >    < Help >                     |
 | 
						|
+-------------------------------------------------------------------------
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
Select Mainboard -$>$ Mainboard Vendor -$>$ AMD
 | 
						|
                 -$>$ Mainboard Model  -$>$ Olive Hill
 | 
						|
 | 
						|
Then save, exit and run make.
 | 
						|
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ make
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
The built image, coreboot.rom, is located at folder build.
 | 
						|
 | 
						|
\section{Programming coreboot to flash memory}
 | 
						|
The image resulting from a coreboot build can be directly programmed to
 | 
						|
a flash device, either using an external flash programmers, e.g., Dediprog SF100, or by using the
 | 
						|
Linux flash utility, flashrom.
 | 
						|
 | 
						|
 | 
						|
\subsection{Add modules and payload}
 | 
						|
 | 
						|
\subsubsection{VGA BIOS}
 | 
						|
There is a big Chance that you need to get a VGA BIOS.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
.config - coreboot v4.0 Configuration
 | 
						|
------------------------------------------------------------------------------
 | 
						|
+-------------------------------- VGA BIOS --------------------------------+
 | 
						|
|  Arrow keys navigate the menu.  <Enter> selects submenus --->.           |
 | 
						|
|  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,  |
 | 
						|
|  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </>  |
 | 
						|
|  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < > module |
 | 
						|
| +----------------------------------------------------------------------+ |
 | 
						|
| |    [*] Add a VGA BIOS image                                          | |
 | 
						|
| |    (vgabios.bin) VGA BIOS path and filename                          | |
 | 
						|
| |    (1002,1306) VGA device PCI IDs                                    | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| +----------------------------------------------------------------------+ |
 | 
						|
+--------------------------------------------------------------------------+
 | 
						|
|                     <Select>    < Exit >    < Help >                     |
 | 
						|
+--------------------------------------------------------------------------+
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
Select VGA BIOS. ``The VGA device PCI IDs'' should be the same as your device. Get the
 | 
						|
Option ROM from Vendor's website.
 | 
						|
 | 
						|
\subsubsection{Payload}
 | 
						|
coreboot in itself is "only" minimal code for initializing a mainboard
 | 
						|
with peripherals. After the initialization, it jumps to a payload.
 | 
						|
 | 
						|
Currently, SeaBIOS is the most widely used payload. The best way to integrate SeaBIOS
 | 
						|
is setting it in menuconfig.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
+------------------------------- Payload ---------------------------------+
 | 
						|
|  Arrow keys navigate the menu.  <Enter> selects submenus --->.           |
 | 
						|
|  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes,  |
 | 
						|
|  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </>  |
 | 
						|
|  for Search.  Legend: [*] built-in  [ ] excluded  <M> module  < > module |
 | 
						|
| +----------------------------------------------------------------------+ |
 | 
						|
| |        Add a payload (SeaBIOS)  --->                                 | |
 | 
						|
| |        SeaBIOS version (1.7.2.1)  --->                               | |
 | 
						|
| |    [*] Use LZMA compression for payloads (NEW)                       | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| |                                                                      | |
 | 
						|
| +----------------------------------------------------------------------+ |
 | 
						|
+--------------------------------------------------------------------------+
 | 
						|
|                     <Select>    < Exit >    < Help >                     |
 | 
						|
+--------------------------------------------------------------------------+
 | 
						|
\end{verbatim}
 | 
						|
The script in Makefile will automatically checkout, config, build the SeaBIOS source,
 | 
						|
and integrat the binary into the final image.
 | 
						|
 | 
						|
%
 | 
						|
% Working with Git
 | 
						|
%
 | 
						|
 | 
						|
\section{Working with Git}
 | 
						|
\subsection{Configuration of Git}
 | 
						|
Inside the checkout you should install a commit-msg hook that adds a
 | 
						|
Change-Id into commit messages, which uniquely identifies the logical
 | 
						|
change in Gerrit even across multiple iterations of the commit. The
 | 
						|
hook only needs to be installed once per clone, and installation can
 | 
						|
be done with:
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ cd coreboot
 | 
						|
$ cp ./util/gitconfig/* .git/hooks
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
configure your name and email in git.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git config --global user.name "Your Name Comes Here"
 | 
						|
$ git config --global user.email your.email@example.com'
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
The name~\ref{user name} and email~\ref{Contact Information} should be the same the settings in gerrit.
 | 
						|
Otherwise you can not push you code to community.
 | 
						|
 | 
						|
Then run the following command once, to tell git that by default you
 | 
						|
want to submit all commits in the currently checked-out branch for
 | 
						|
review on gerrit:
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git config remote.origin.push HEAD:refs/for/master
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
The above configurations for git has been integrated into Makefile. You can run
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ make gitconfig
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
\subsection{Work flow}
 | 
						|
 | 
						|
It is recommended that you make a new branch when you start to work, not pushing changes to master.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git checkout master -b mybranch
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
After you have done your changes, run:
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git add file_need_to_submit.c
 | 
						|
$ git commit -m "my first change."
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
% Does anyone have a better word to describe the phylosophy of spliting changes to patches?
 | 
						|
You need to realize that the changes you have made should be well devided into
 | 
						|
several commits. Each of them has one and only one meaning. You could use git rebase -i to
 | 
						|
split, squash, remove, rewrite you comment.
 | 
						|
 | 
						|
Here is an example of a well-formatted commit message:
 | 
						|
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
examplecomponent: Refactor duplicated setup into a function
 | 
						|
 | 
						|
Setting up the demo device correctly requires the exact same register
 | 
						|
values to be written into each of the PCI device functions. Moving the
 | 
						|
writes into a function allows also otherexamplecomponent to use them.
 | 
						|
 | 
						|
Signed-off-by: Joe Hacker <joe@hacker.email>
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
Then you can push the code.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ git push
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
You can go to the ~\ref{sec:gerrit} gerrit to see if your changes is successfully pushed.
 | 
						|
 | 
						|
Often it might happen that the patch you sent for approval is not good
 | 
						|
enough from the first attempt. Gerrit and git make it easy to track
 | 
						|
patch evolution during the review process until patches meet our
 | 
						|
quality standards and are ready for approval.
 | 
						|
 | 
						|
You can easily modify a patch sent to gerrit by you or even by someone
 | 
						|
else. Just apply it locally using one of the possible ways to do it,
 | 
						|
make a new local commit that fixes the issues reported by the
 | 
						|
reviewers, then rebase the change by preserving the same Change-ID. We
 | 
						|
recommend you to use the git rebase command in interactive mode,
 | 
						|
 | 
						|
Once your patch gets a +2 comment, your patch can be merged (cherry-pick, actually) to origin/master.
 | 
						|
 | 
						|
%
 | 
						|
% Working with Gerrit
 | 
						|
%
 | 
						|
 | 
						|
\section{Working with Gerrit}
 | 
						|
\label{sec:gerrit}
 | 
						|
If you are a coreboot user, not planning to contribute, you can skip this section.
 | 
						|
\subsection{Get gerrit account}
 | 
						|
You need to get an OpenID first. Currently Google account give you an OpenID. It means, if you have a gmail account, you have an OpenID. You can try to signed in.
 | 
						|
click \url{https://review.coreboot.org}
 | 
						|
 | 
						|
%\includegraphics[width=6.00in,height=1.00in]{gerrit_signin.png}
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
+-----------------------------------------------------------+
 | 
						|
|All    Projects  Documentation           Register  Sign In |
 | 
						|
|Open Merged   Abandoned                                    |
 | 
						|
|Search for status:open                                     |
 | 
						|
+-----------------------------------------------------------+
 | 
						|
|Subject      Status   Owner  Project  Branch Updated CR V  |
 | 
						|
|cpu: Rename..      Alexandru coreboot master 1:20 PM +1    |
 | 
						|
|cpu: Only a..      Alexandru coreboot master 1:17 PM    X  |
 | 
						|
|arch/x86: D..      Alexandru coreboot master 1:09 PM       |
 | 
						|
|                                                           |
 | 
						|
|                                                  Next ->  |
 | 
						|
|Press '?' to view keyboard shortcuts | Powered by Gerrit   |
 | 
						|
+-----------------------------------------------------------+
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
Click ``Sign In'', You will get
 | 
						|
 | 
						|
%\includegraphics[width=6.00in,height=4.00in]{openid.png}
 | 
						|
 | 
						|
You will be redirected to Google to get logging in.
 | 
						|
 | 
						|
% \includegraphics[width=6.00in,height=1.50in]{login.png}
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
Sign In to Gerrit Code Review at review.coreboot.org
 | 
						|
+--------------------------------------------------+
 | 
						|
+--------------------------------------------------+
 | 
						|
[] Remember me
 | 
						|
Sign In Cancel
 | 
						|
Sign in with a Google Account
 | 
						|
Sign in with a Yahoo! ID
 | 
						|
What is OpenID?
 | 
						|
 | 
						|
OpenID provides secure single-sign-on, without revealing your passwords to this website.
 | 
						|
 | 
						|
There are many OpenID providers available. You may already be member of one!
 | 
						|
 | 
						|
Get OpenID
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
\subsection{Configure account}
 | 
						|
Click the dropdown button near the user name and click ``Settings''
 | 
						|
 | 
						|
% \includegraphics[width=6.00in,height=4.00in]{settings}
 | 
						|
% \epsfig{figure=keystroke_left}
 | 
						|
% \epstopdf {file=settings.eps}
 | 
						|
% \epsfig{file=settings.eps}
 | 
						|
 | 
						|
\label{user name} In ``profile'' section, type the user name for git. This probably can be changed only once.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
Profile               Username      zbao
 | 
						|
Preferences           Full Name     Zheng Bao
 | 
						|
Watched Projects      Email Address zheng.bao@amd.com
 | 
						|
Contact Information   Registered    Jun 28, 2011 4:33 PM
 | 
						|
SSH Public Keys       Account ID    1000034
 | 
						|
HTTP Password
 | 
						|
Identities
 | 
						|
Groups
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
\label{Contact Information} In ``Contact Information'', enter you full name and your Email, which should be configured in your .gitconfig
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
      Full Name  __________________________________
 | 
						|
Preferred Email  ______________   Registered Email
 | 
						|
 | 
						|
Save Changes
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
In ``SSH Public Keys'' section, upload your public key.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
Status  Algorithm   Key Comment
 | 
						|
 | 
						|
Delete
 | 
						|
Add SSH Public Key
 | 
						|
 > How to Generate an SSH Key
 | 
						|
+--------------------------+
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
|                          |
 | 
						|
+--------------------------+
 | 
						|
clear       Add  Close
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
Click ``Add Key ...''
 | 
						|
Go back to you linux command line and type:
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
$ ssh-keygen
 | 
						|
Generating public/private rsa key pair.
 | 
						|
Enter file in which to save the key (/home/zhengbao/.ssh/id_rsa):
 | 
						|
Enter passphrase (empty for no passphrase):
 | 
						|
Enter same passphrase again:
 | 
						|
Your identification has been saved in /home/zhengbao/.ssh/id_rsa.
 | 
						|
Your public key has been saved in /home/zhengbao/.ssh/id_rsa.pub.
 | 
						|
The key fingerprint is:
 | 
						|
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx zhengb@host.domain
 | 
						|
The key's randomart image is:
 | 
						|
+--[ RSA 2048]----+
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
|                 |
 | 
						|
+-----------------+
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
The data in ~/.ssh/id\_rsa.pub is your public key. Copy them to the box in the page of ``SSH Public Keys'' and click add.
 | 
						|
 | 
						|
In ``HTTP Password'' section, click button ``Generate Password''. You will get the password for http checkout.
 | 
						|
{ \small
 | 
						|
\begin{verbatim}
 | 
						|
Username    XXX
 | 
						|
Password    XXXXXXXXXXXX
 | 
						|
 | 
						|
Generate Password   Clear Password
 | 
						|
 | 
						|
\end{verbatim}
 | 
						|
}
 | 
						|
 | 
						|
\subsection{Reviewing Changes}
 | 
						|
For each listed changes in Gerrit, you can review, comment, evaluate,
 | 
						|
cherry-pick, and even re-submit them. For you own patches, only you can
 | 
						|
abandon them. Click in the file and commit message, you can add in-line comment.
 | 
						|
 | 
						|
%
 | 
						|
% 14 Glossary
 | 
						|
%
 | 
						|
 | 
						|
\section{Glossary}
 | 
						|
\begin{itemize}
 | 
						|
\item payload
 | 
						|
 | 
						|
coreboot only cares about low level machine initialization, but also has
 | 
						|
very simple mechanisms to boot a file either from FLASHROM or IDE. That
 | 
						|
file, possibly a Linux Kernel, a boot loader or Etherboot, are called
 | 
						|
payload, since it is the first software executed that does not cope with
 | 
						|
pure initialization.
 | 
						|
 | 
						|
\item flash device
 | 
						|
 | 
						|
Flash devices are commonly used in all different computers since unlike
 | 
						|
ROMs they can be electronically erased and reprogrammed.
 | 
						|
 | 
						|
\item Gerrit
 | 
						|
 | 
						|
Gerrit is a web based code review system, facilitating online code
 | 
						|
reviews for projects using the Git version control system.
 | 
						|
 | 
						|
Gerrit makes reviews easier by showing changes in a side-by-side
 | 
						|
display, and allowing inline comments to be added by any reviewer.
 | 
						|
 | 
						|
Gerrit simplifies Git based project maintainership by permitting any
 | 
						|
authorized user to submit changes to the master Git repository, rather
 | 
						|
than requiring all approved changes to be merged in by hand by the
 | 
						|
project maintainer. This functionality enables a more centralized
 | 
						|
usage of Git.
 | 
						|
 | 
						|
\end{itemize}
 | 
						|
 | 
						|
\newpage
 | 
						|
 | 
						|
%
 | 
						|
% 14 Bibliography
 | 
						|
%
 | 
						|
 | 
						|
\section{Bibliography}
 | 
						|
\subsection{Additional Papers on coreboot}
 | 
						|
 | 
						|
\begin{itemize}
 | 
						|
 \item
 | 
						|
 \textit{\url{https://www.coreboot.org/Documentation}}
 | 
						|
\end{itemize}
 | 
						|
 | 
						|
\subsection {Links}
 | 
						|
 | 
						|
\begin{itemize}
 | 
						|
 \item Etherboot: \textit{\url{http://www.etherboot.org/}}
 | 
						|
 \item OpenBIOS: \textit{\url{http://www.openbios.org/}}
 | 
						|
 \item Flashrom: \textit{\url{http://www.flashrom.org/}}
 | 
						|
 \item Seabios: \textit{\url{http://www.seabios.org/}}
 | 
						|
\end{itemize}
 | 
						|
 | 
						|
 | 
						|
\end{document}
 |