99 lines
3.1 KiB
Plaintext
99 lines
3.1 KiB
Plaintext
/**
|
|
|
|
\page l4re_getting_started Getting Started
|
|
|
|
Here you can find the first steps to boot a very simple setup. The setup
|
|
consists of the following components:
|
|
\li Fiasco.OC --- Microkernel
|
|
\li Sigma0 --- Root Pager
|
|
\li Moe --- Root Task
|
|
\li Ned --- Init Process
|
|
\li hello --- Hello World Application
|
|
|
|
The guide assumes that you already compiled the base components and describes
|
|
how to generate an ISO image, with GRUB 1 or GRUB 2 as a boot loader, that
|
|
can for example be booted within QEMU.
|
|
|
|
First you need a \c modules.list file that contains an entry for the scenario.
|
|
|
|
\code
|
|
modaddr 0x002000000
|
|
|
|
entry hello
|
|
kernel fiasco -serial_esc
|
|
roottask moe rom/hello.cfg
|
|
module l4re
|
|
module ned
|
|
module hello.cfg
|
|
module hello
|
|
\endcode
|
|
|
|
This file describes all the binaries and scripts to put into the ISO image,
|
|
and also describes the GRUB \c menu.lst contents. What you need to do is to
|
|
set the \c make variable \c MODULE_SEARCH_PATH to contain the path to your
|
|
Fiasco.OC build directory and the directory containing your \c hello.cfg
|
|
script.
|
|
|
|
The \c hello.cfg script should look like the following. A ready to use
|
|
version can be found in l4/conf/examples.
|
|
|
|
\code
|
|
require("L4");
|
|
L4.default_loader:start({}, "rom/hello");
|
|
\endcode
|
|
|
|
The first line of this script ensures that the \c L4 package is available
|
|
for the script. The second line uses the default loader object defined in that
|
|
package and starts the binary \c rom/hello.
|
|
\note All modules defined in \c modules.list are available as data spaces
|
|
(L4Re::Dataspace) and registered in a name space (L4Re::Namespace). This
|
|
name space is in turn available as 'rom' to the init process
|
|
(\ref l4re_servers_ned "Ned").
|
|
|
|
|
|
Now you can go to your L4Re build directory and run the following command.
|
|
\note The example assumes that you have created the \c modules.list and \c
|
|
hello.cfg files in the /tmp directory. Adapt if you created them
|
|
somewhere else.
|
|
|
|
\code
|
|
make grub1iso E=hello MODULES_LIST=/tmp/modules.list MODULE_SEARCH_PATH=/tmp:<path_to_fiasco_builddir>
|
|
\endcode
|
|
|
|
Or as an alternative use GRUB 2:
|
|
|
|
\code
|
|
make grub2iso E=hello MODULES_LIST=/tmp/modules.list MODULE_SEARCH_PATH=/tmp:<path_to_fiasco_builddir>
|
|
\endcode
|
|
|
|
Now you should be able to boot the image in QEMU by running:
|
|
|
|
\code
|
|
qemu-system-i386 -cdrom images/hello.iso -serial stdio
|
|
\endcode
|
|
|
|
If you press <ESC> in the terminal that shows you the serial output you
|
|
enter the Fiasco.OC kernel debugger... Have fun.
|
|
|
|
|
|
\subpage Customizations
|
|
|
|
A basic set of bootable entries can be found in \c l4/conf/modules.list. This file
|
|
is the default for any image creation as shown above. It is recommeded that
|
|
local modification regarding image creation are done in
|
|
\c conf/Makeconf.boot. Initially you may copy \c Makeconf.boot.example to
|
|
\c Makeconf.boot. You can overwrite \c MODULES_LIST to set your own
|
|
modules-list file. Set \c MODULE_SEARCH_PATH to your setup according to the
|
|
examples given in the file.
|
|
When configured a \c make call is reduced to:
|
|
|
|
\code
|
|
make grub2iso E=hello
|
|
\endcode
|
|
|
|
|
|
All other local configuration can be done in a
|
|
\c Makeconf.local file located in the \c l4 directory.
|
|
|
|
*/
|