aboutsummaryrefslogtreecommitdiff
path: root/Documentation/lessons/lesson1.md
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/lessons/lesson1.md')
-rw-r--r--Documentation/lessons/lesson1.md169
1 files changed, 0 insertions, 169 deletions
diff --git a/Documentation/lessons/lesson1.md b/Documentation/lessons/lesson1.md
deleted file mode 100644
index bbb3eb5582..0000000000
--- a/Documentation/lessons/lesson1.md
+++ /dev/null
@@ -1,169 +0,0 @@
-coreboot Lesson 1: Starting from scratch
-========================================
-
-From a fresh Ubuntu 16.04 or 18.04 install, here are all the steps required for
-a very basic build:
-
-Download, configure, and build coreboot
----------------------------------------
-
-### Step 1 - Install tools and libraries needed for coreboot
- $ sudo apt-get install -y bison build-essential curl flex git gnat libncurses5-dev m4 zlib1g-dev
-
-### Step 2 - Download coreboot source tree
- $ git clone https://review.coreboot.org/coreboot
- $ cd coreboot
-
-### Step 3 - Build the coreboot toolchain
-Please note that this can take a significant amount of time
-
- $ make crossgcc-i386 CPUS=$(nproc)
-
-Also note that you can possibly use your system toolchain, but the results are
-not reproducible, and may have issues, so this is not recommended. See step 5
-to use your system toolchain.
-
-### Step 4 - Build the payload - coreinfo
- $ make -C payloads/coreinfo olddefconfig
- $ make -C payloads/coreinfo
-
-### Step 5 - Configure the build
-
-##### Configure your mainboard
- $ make menuconfig
- select 'Mainboard' menu
- Beside 'Mainboard vendor' should be '(Emulation)'
- Beside 'Mainboard model' should be 'QEMU x86 i440fx/piix4'
- select < Exit >
-These should be the default selections, so if anything else was set, run
-`make distclean` to remove your old config file and start over.
-
-##### Optionally use your system toolchain (Again, not recommended)
- select 'General Setup' menu
- select 'Allow building with any toolchain'
- select < Exit >
-
-##### Select the payload
- select 'Payload' menu
- select 'Add a Payload'
- choose 'An Elf executable payload'
- select 'Payload path and filename'
- enter 'payloads/coreinfo/build/coreinfo.elf'
- select < Exit >
- select < Exit >
- select < Yes >
-
-##### check your configuration (optional step):
-
- $ make savedefconfig
- $ cat defconfig
-
-There should only be two lines (or 3 if you're using the system toolchain):
-
- CONFIG_PAYLOAD_ELF=y
- CONFIG_PAYLOAD_FILE="payloads/coreinfo/build/coreinfo.elf"
-
-### Step 6 - build coreboot
- $ make
-
-At the end of the build, you should see:
-
- Build emulation/qemu-i440fx (QEMU x86 i440fx/piix4)
-
-This means your build was successful. The output from the build is in the build
-directory. build/coreboot.rom is the full rom file.
-
-Test the image using QEMU
--------------------------
-
-### Step 7 - Install QEMU
- $ sudo apt-get install -y qemu
-
-### Step 8 - Run QEMU
-Start QEMU, and point it to the ROM you just built:
-
- $ qemu-system-x86_64 -bios build/coreboot.rom -serial stdio
-
-You should see the serial output of coreboot in the original console window, and
-a new window will appear running the coreinfo payload.
-
-Summary
--------
-
-### Step 1 summary - Install tools and libraries needed for coreboot
-You installed the minimum additional requirements for ubuntu to download and
-build coreboot. Ubuntu already has most of the other tools that would be
-required installed by default.
-
-* `build-essential` is the basic tools for doing builds. It comes pre-installed
-on some Ubuntu flavors, and not on others.
-* `git` is needed to download coreboot from the coreboot git repository.
-* `libncurses5-dev` is needed to build the menu for 'make menuconfig'
-* `m4, bison, curl, flex, zlib1g-dev, gcc, gnat` and `g++` or `clang`
-are needed to build the coreboot toolchain. `gcc` and `gnat` have to be
-of the same version.
-
-If you started with a different distribution, you might need to install many
-other items which vary by distribution.
-
-### Step 2 summary - Download coreboot source tree
-This will download a 'read-only' copy of the coreboot tree. This just means
-that if you made changes to the coreboot tree, you couldn't immediately
-contribute them back to the community. To pull a copy of coreboot that would
-allow you to contribute back, you would first need to sign up for an account on
-gerrit.
-
-### Step 3 summary - Build the coreboot toolchain.
-This builds one of the coreboot cross-compiler toolchains for X86 platforms.
-Because of the variability of compilers and the other required tools between
-the various operating systems that coreboot can be built on, coreboot supplies
-and uses its own cross-compiler toolchain to build the binaries that end up as
-part of the coreboot ROM. The toolchain provided by the operating system (the
-'host toolchain') is used to build various tools that will run on the local
-system during the build process.
-
-### Step 4 summary - Build the payload
-To actually do anything useful with coreboot, you need to build a payload to
-include in the rom. The idea behind coreboot is that it does the minimum amount
-possible before passing control of the machine to a payload. There are various
-payloads such as grub or SeaBIOS that are typically used to boot the operating
-system. Instead, we used coreinfo, a small demonstration payload that allows the
-user to look at various things such as memory and the contents of coreboot's
-cbfs - the pieces that make up the coreboot rom.
-
-### Step 5 summary - Configure the build
-This step configures coreboot's build options using the menuconfig interface to
-Kconfig. Kconfig is the same configuration program used by the linux kernel. It
-allows you to enable, disable, and change various values to control the coreboot
-build process, including which mainboard(motherboard) to use, which toolchain to
-use, and how the runtime debug console should be presented and saved.
-Anytime you change mainboards in Kconfig, you should always run `make distclean`
-before running `make menuconfig`. Due to the way that Kconfig works, values will
-be kept from the previous mainboard if you skip the clean step. This leads to a
-hybrid configuration which may or may not work as expected.
-
-### Step 6 summary - Build coreboot
-You may notice that a number of other pieces are downloaded at the beginning of
-the build process. These are the git submodules used in various coreboot builds.
-By default, the _blobs_ submodule is not downloaded. This git submodule may be
-required for other builds for microcode or other binaries. To enable downloading
-this submodule, select the option "Allow use of binary-only repository" in the
-"General Setup" menu of Kconfig
-This attempts to build the coreboot rom. The rom file itself ends up in the
-build directory as 'coreboot.rom'. At the end of the build process, the build
-displayed the contents of the rom file.
-
-### Step 7 summary - Install QEMU
-QEMU is a processor emulator which we can use to show coreboot
-
-### Step 8 summary - Run QEMU
-Here's the command line broken down:
-* `qemu-system-x86_64`
-This starts the QEMU emulator with the i440FX host PCI bridge and PIIX3 PCI to
-ISA bridge.
-* `-bios build/coreboot.rom`
-Use the bios rom image that we just built. If this is left off, the standard
-SeaBIOS image that comes with QEMU is used.
-* `-serial stdio`
-Send the serial output to the console. This allows you to view the coreboot
-debug output.