https://wiki.tudos.org/ikiw/api.php?action=feedcontributions&user=Ron&feedformat=atomTUDOS-Wiki - User contributions [en]2024-03-29T12:29:13ZUser contributionsMediaWiki 1.41.0https://wiki.tudos.org/ikiw/index.php?title=CD_image&diff=101CD image2007-11-20T16:07:23Z<p>Ron: spelling fixes</p>
<hr />
<div>Creating a CD image with L4 binaries is fairly easy. First you have to create a directory where you put all the files that should go on the CD. This directory will be the root of your CD image. Change into that directory and create a directory called ''boot'' in that directory you put another directory ''grub''. Into the directory ''boot/grub'' you copy a Grub stage2 file that can boot CD images:<br />
<br />
cp /usr/lib/grub/i386-pc/stage2_eltorito boot/grub/<br />
<br />
Then you copy all the files to your CD image, that is, somewhere below the root directory of your CD image.<br />
<br />
Grub will look for an [[menu.lst]] file in the ''boot/grub'' directory. Thus, either place your main menu.lst there or create a menu.lst that will load your other menu.lst. Either way, be aware that booting from a CD will load from ''(cd)/'' instead of ''(nd)/tftpboot''.<br />
<br />
<br />
When all the files are placed "on the disk" we make a CD image from that directory using mkisofs:<br />
<br />
mkisofs -R -b boot/grub/stage2_eltorito <br />
-no-emul-boot -boot-load-size 4 -boot-info-table<br />
-hide-rr-moved<br />
-J -joliet-long<br />
-o "cd-image.iso" .<br />
<br />
Do not forget the dot at the end of the command line, as it tells mkisofs which directory to create the image from (here: current directory). The mkisofs command will create a CD image named ''cd-image.iso'' that can then be used to burn it to a CD disk or as image for virtual machines ([[QEmu]], VMWare).<br />
<br />
To ease the step of creating a CD image we provide a script in ''$(L4DIR)/tool/bin'': isocreator. It takes two arguments: the directory to create the image from and the name of the CD image file. With the above setup, we would use isocreator like this:<br />
<br />
$(L4DIR)/tool/bin/isocreator . cd-image.iso</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Gcc-stack&diff=99Gcc-stack2007-11-19T10:36:39Z<p>Ron: /* CCache */ update on colorgcc bug</p>
<hr />
<div>=== Color-GCC ===<br />
<br />
When parsing the output of gcc it is often useful to get some hints on what is important and what is not. The [http://packages.debian.org/etch/colorgcc colorgcc] tool does a great job in parsing the output of gcc and making errors and warnings appear in dominant colors.<br />
<br />
To use colorgcc install the software, then create links in your personal bin directory to the colorgcc binary with the name of the gcc version you use:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc<br />
~/bin/ > ln -s /usr/bin/colorgcc g++<br />
<br />
Then add your personal bin directory as the first directory into your search path variable (PATH), e.g., by adding the following line to your ''.bashrc'':<br />
<br />
export PATH=~/bin/:$PATH<br />
<br />
I do have additionally links for the different versions of gcc to enable the use of colorgcc for them as well:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc-4.2<br />
~/bin/ > ln -s /usr/bin/colorgcc g++-4.2<br />
<br />
=== CCache ===<br />
<br />
[http://ccache.samba.org/ ccache] is a program that caches the output of gcc invocations. If the input of a gcc invocation does not change, the cached output is used instead of invoking gcc again. This can tremendously speed up recompiles of your L4 tree. To use ccache you may either alias your gcc command to call ''ccache gcc'' instead. To combine ccache with colorgcc write the following lines into the file ''~/.colorgccrc'':<br />
<br />
gcc: ccache /usr/bin/gcc<br />
g++: ccache /usr/bin/g++<br />
<br />
It's important to use the full path to gcc and g++ here, because otherwise gcc and g++ from your local bin directory would be used again. If you have additional links for gcc to colorgcc you should add those as well.<br />
<br />
'''''Note''''': colorgcc version 1.3.2-5 (Debian) had problems with the described setup. colorgcc version 1.3.2-6 (Debian) fixed these problems.<br />
<br />
=== Dist-CC ===<br />
<br />
[http://distcc.samba.org/ distcc] is another tool that can speed up your compile process. Dist-CC distributes the invocations of gcc to other servers running the distccd daemon. This way you can utilize other computers to compile your source tree for you. This is especially useful if you can build in parallel. Please follow the instructions on the distcc homepage on how to set up a distcc network. To combine the invocation of distcc with colorgcc and ccache add the following line to your .bashrc (or appropriate):<br />
<br />
export CCACHE_PREFIX="distcc"<br />
<br />
This will make ccache invoke distcc with the gcc command line itself received. While editing .bashrc, you might as well add an appropriate distcc configuration line:<br />
<br />
export DISTCC_HOSTS='localhost/3 compile-host1/4 compile-host2/4'<br />
<br />
Have fun!</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Reporting_Bugs&diff=98Reporting Bugs2007-11-19T10:29:32Z<p>Ron: updates posted on EMSCB mailing list by Björn</p>
<hr />
<div>In order to be able to help a bug report including the following information should be send to l4-hackers@os.inf.tu-dresden.de<br />
<br />
# General information on the bug<br />
#* What happens?<br />
#* When does it happen?<br />
#* Can it be reproduced? How?<br />
# General information on the environment, especially containing:<br />
#* used hardware for Fiasco native<br />
#** CPU, RAM, virtualization software<br />
#** Devices, if involved <br />
#* Host configuration when using Fiasco-UX<br />
#** Host Linux kernel<br />
#** Linux distribution used <br />
#* used software<br />
#** Fiasco version<br />
#** L4Env version (which OTC Snapshot, which SVN tag, which patchlevel) <br />
#* used tools (compilers, utilities, ...)<br />
# How to reproduce the bug<br />
#* GRUB menu.lst entry if booting native '''OR''' Fiasco-UX command line<br />
#* Simple step-by-step description what to do if the issue needs interaction<br />
# Logs (as email attachment or web links, please)<br />
#* A complete kernel debugger log from your terminal program<br />
#* L4Linux syslog if involved<br />
# Configuration (as email attachment or web links, please)<br />
#* Fiasco configuration (fiasco-build-dir/globalconfig.out)<br />
#* L4Env configuration (l4-build-dir/Makeconf.bid.local)<br />
#* L4Linux configuration if involved (l4lx-build-dir/.config)<br />
#* Loader startup scripts if involved<br />
# Further information<br />
#* Please provide all the patches you applied to our source code.<br />
#* Please provide the source code of the applications involved (if this source code cannot already be obtained from another source - in this case you might want to point us at this source.)<br />
#* Provide any additional information that you think might help to understand the bug.<br />
#* In some cases, we may not be able to reproduce the problem locally just using sources. In this case, provide us with the binaries triggering the bug. A frozen VMWare image with the bug can also be helpful.<br />
<br />
Items 1 through 5 are mandatory if you expect a proper bug fix :)</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Reporting_Bugs&diff=97Reporting Bugs2007-11-19T10:22:53Z<p>Ron: add list of items that should appear in a bug-report</p>
<hr />
<div>In order to be able to help a bug report including the following information should be send to l4-hackers@os.inf.tu-dresden.de<br />
<br />
# General information on the bug<br />
#* What happens?<br />
#* When does it happen?<br />
#* Can it be reproduced? How?<br />
# General information on the environment, especially containing:<br />
#* used hardware<br />
#* used tools (compilers, utilities, ...)<br />
#* used software (Fiasco version, L4Env version (which OTC Snapshot, which SVN tag, which patchlevel?)<br />
# Error messages and logs<br />
#* a complete log is appreciated<br />
# Configuration files for<br />
#* Fiasco<br />
#* L4Linux (if invoked)<br />
#* dynamic startup at Loader (if invoked)<br />
# How did you start the test case?<br />
#* GRUB menu.lst entry OR<br />
#* Fiasco UX command line<br />
# All patches applied to our source code.<br />
# Source code of the applications triggering the bug (unless this source code can already be obtained from another source - in that case point us at this source.)<br />
# Provide any additional information that you think might help to understand the bug.<br />
# In some cases, we may not be able to reproduce the problem locally just using sources. In this case, provide us with the binaries triggering the bug. A frozen VMWare image with the bug can also be helpful.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Main_Page&diff=96Main Page2007-11-19T10:19:59Z<p>Ron: /* TUDOS Wiki */</p>
<hr />
<div>= TUDOS Wiki =<br />
<br />
The TUDOS wiki is a community driven knowledge gatherer for the TUDOS project and its L4 technology.<br />
<br />
<br />
* Introductions: [[What is L4]]? [[What is TUDOS]]?<br />
* [[TUDOS Software Components]]<br />
* Security<br />
* [[Getting TUDOS]]<br />
* [[HOWTOs]] around TUDOS<br />
* [[Programming]] on TUDOS<br />
* [[TUDOS in action]]<br />
* [[Links/References]]<br />
* [[Reporting Bugs]]</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Gcc-stack&diff=85Gcc-stack2007-10-26T15:26:12Z<p>Ron: /* CCache */</p>
<hr />
<div>=== Color-GCC ===<br />
<br />
When parsing the output of gcc it is often useful to get some hints on what is important and what is not. The [http://packages.debian.org/etch/colorgcc colorgcc] tool does a great job in parsing the output of gcc and making errors and warnings appear in dominant colors.<br />
<br />
To use colorgcc install the software, then create links in your personal bin directory to the colorgcc binary with the name of the gcc version you use:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc<br />
~/bin/ > ln -s /usr/bin/colorgcc g++<br />
<br />
Then add your personal bin directory as the first directory into your search path variable (PATH), e.g., by adding the following line to your ''.bashrc'':<br />
<br />
export PATH=~/bin/:$PATH<br />
<br />
I do have additionally links for the different versions of gcc to enable the use of colorgcc for them as well:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc-4.2<br />
~/bin/ > ln -s /usr/bin/colorgcc g++-4.2<br />
<br />
=== CCache ===<br />
<br />
[http://ccache.samba.org/ ccache] is a program that caches the output of gcc invocations. If the input of a gcc invocation does not change, the cached output is used instead of invoking gcc again. This can tremendously speed up recompiles of your L4 tree. To use ccache you may either alias your gcc command to call ''ccache gcc'' instead. To combine ccache with colorgcc write the following lines into the file ''~/.colorgccrc'':<br />
<br />
gcc: ccache /usr/bin/gcc<br />
g++: ccache /usr/bin/g++<br />
<br />
It's important to use the full path to gcc and g++ here, because otherwise gcc and g++ from your local bin directory would be used again. If you have additional links for gcc to colorgcc you should add those as well.<br />
<br />
'''''Note''''': with colorgcc version 1.3.2-5 this construct is no longer possible because the executable matching rules have been made stricter. Also something like:<br />
<br />
gcc-4.1: ccache /usr/bin/gcc-4.1<br />
gcc-4.2: ccache /usr/bin/gcc-4.2<br />
<br />
will no longer work. You may only use one of ''cc'', ''c++'', ''gcc'', ''g++'', ''g77'', ''f77'', or ''gcj''.<br />
<br />
A [http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=20;filename=colorgcc.patch;att=1;bug=446110 patch] to this [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=446110 bug] has been published.<br />
<br />
=== Dist-CC ===<br />
<br />
[http://distcc.samba.org/ distcc] is another tool that can speed up your compile process. Dist-CC distributes the invocations of gcc to other servers running the distccd daemon. This way you can utilize other computers to compile your source tree for you. This is especially useful if you can build in parallel. Please follow the instructions on the distcc homepage on how to set up a distcc network. To combine the invocation of distcc with colorgcc and ccache add the following line to your .bashrc (or appropriate):<br />
<br />
export CCACHE_PREFIX="distcc"<br />
<br />
This will make ccache invoke distcc with the gcc command line itself received. While editing .bashrc, you might as well add an appropriate distcc configuration line:<br />
<br />
export DISTCC_HOSTS='localhost/3 compile-host1/4 compile-host2/4'<br />
<br />
Have fun!</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Gcc-stack&diff=84Gcc-stack2007-10-26T15:18:34Z<p>Ron: /* CCache */ changes made in colorgcc version 1.3.2-5</p>
<hr />
<div>=== Color-GCC ===<br />
<br />
When parsing the output of gcc it is often useful to get some hints on what is important and what is not. The [http://packages.debian.org/etch/colorgcc colorgcc] tool does a great job in parsing the output of gcc and making errors and warnings appear in dominant colors.<br />
<br />
To use colorgcc install the software, then create links in your personal bin directory to the colorgcc binary with the name of the gcc version you use:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc<br />
~/bin/ > ln -s /usr/bin/colorgcc g++<br />
<br />
Then add your personal bin directory as the first directory into your search path variable (PATH), e.g., by adding the following line to your ''.bashrc'':<br />
<br />
export PATH=~/bin/:$PATH<br />
<br />
I do have additionally links for the different versions of gcc to enable the use of colorgcc for them as well:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc-4.2<br />
~/bin/ > ln -s /usr/bin/colorgcc g++-4.2<br />
<br />
=== CCache ===<br />
<br />
[http://ccache.samba.org/ ccache] is a program that caches the output of gcc invocations. If the input of a gcc invocation does not change, the cached output is used instead of invoking gcc again. This can tremendously speed up recompiles of your L4 tree. To use ccache you may either alias your gcc command to call ''ccache gcc'' instead. To combine ccache with colorgcc write the following lines into the file ''~/.colorgccrc'':<br />
<br />
gcc: ccache /usr/bin/gcc<br />
g++: ccache /usr/bin/g++<br />
<br />
It's important to use the full path to gcc and g++ here, because otherwise gcc and g++ from your local bin directory would be used again. If you have additional links for gcc to colorgcc you should add those as well.<br />
<br />
'''''Note''''': with colorgcc version 1.3.2-5 this construct is no longer possible because the executable matching rules have been made stricter. Also something like:<br />
<br />
gcc-4.1: ccache /usr/bin/gcc-4.1<br />
gcc-4.2: ccache /usr/bin/gcc-4.2<br />
<br />
will no longer work. You may only use one of ''cc'', ''c++'', ''gcc'', ''g++'', ''g77'', ''f77'', or ''gcj''.<br />
<br />
=== Dist-CC ===<br />
<br />
[http://distcc.samba.org/ distcc] is another tool that can speed up your compile process. Dist-CC distributes the invocations of gcc to other servers running the distccd daemon. This way you can utilize other computers to compile your source tree for you. This is especially useful if you can build in parallel. Please follow the instructions on the distcc homepage on how to set up a distcc network. To combine the invocation of distcc with colorgcc and ccache add the following line to your .bashrc (or appropriate):<br />
<br />
export CCACHE_PREFIX="distcc"<br />
<br />
This will make ccache invoke distcc with the gcc command line itself received. While editing .bashrc, you might as well add an appropriate distcc configuration line:<br />
<br />
export DISTCC_HOSTS='localhost/3 compile-host1/4 compile-host2/4'<br />
<br />
Have fun!</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Fiasco&diff=81Fiasco2007-10-17T08:54:28Z<p>Ron: New page: The Fiasco microkernel started as a reimplementation of the L4 Version 2 API specification. Back then, the only existing implementation was a closed source assembly kernel written by Joche...</p>
<hr />
<div>The Fiasco microkernel started as a reimplementation of the L4 Version 2 API specification. Back then, the only existing implementation was a closed source assembly kernel written by Jochen Liedtke. Michael Hohmuth and other implemented the L4 Version 2 API from scratch and using C++ as programming language.<br />
<br />
Starting around 2003 the strict adherence to the L4 Version 2 API was softened and new features and other API implementations were added to Fiasco.<br />
<br />
In 2007 the actually supported API of Fiasco was too disjunct with the Version 2 API, so Fiasco received its own API name which is ''L4.Fiasco''.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=80HOWTOs2007-09-21T14:42:11Z<p>Ron: /* Other How-Tos */ add ccache to list</p>
<hr />
<div>How to build and run.<br />
<br />
=== Build ===<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
** [http://os.inf.tu-dresden.de/fiasco/use.html]<br />
* [[L4Env]]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux]<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]<br />
* [[Quickstart]]<br />
<br />
=== Running/Using ===<br />
<br />
* Systems to use<br />
** hardware requirements<br />
** virtual machines<br />
*** [[QEmu]]<br />
*** Fiasco-UX<br />
*** VMware<br />
*** Virtualbox<br />
** Boot from [[CD image|CD]]<br />
** Boot from [[TFTP server]]<br />
* serial console<br />
* [[GRUB]]<br />
** [[menu.lst]]<br />
*** [[menu.lst-Examples]]<br />
** TUDOS GRUB [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network<br />
<br />
=== Other How-Tos ===<br />
<br />
* [[gcc-stack|stacking colorgcc, ccache, distcc, and gcc]]</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Gcc-stack&diff=79Gcc-stack2007-09-21T14:36:52Z<p>Ron: add page on how to combine colorgcc, ccache, and distcc</p>
<hr />
<div>=== Color-GCC ===<br />
<br />
When parsing the output of gcc it is often useful to get some hints on what is important and what is not. The [http://packages.debian.org/etch/colorgcc colorgcc] tool does a great job in parsing the output of gcc and making errors and warnings appear in dominant colors.<br />
<br />
To use colorgcc install the software, then create links in your personal bin directory to the colorgcc binary with the name of the gcc version you use:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc<br />
~/bin/ > ln -s /usr/bin/colorgcc g++<br />
<br />
Then add your personal bin directory as the first directory into your search path variable (PATH), e.g., by adding the following line to your ''.bashrc'':<br />
<br />
export PATH=~/bin/:$PATH<br />
<br />
I do have additionally links for the different versions of gcc to enable the use of colorgcc for them as well:<br />
<br />
~/bin/ > ln -s /usr/bin/colorgcc gcc-4.2<br />
~/bin/ > ln -s /usr/bin/colorgcc g++-4.2<br />
<br />
=== CCache ===<br />
<br />
[http://ccache.samba.org/ ccache] is a program that caches the output of gcc invocations. If the input of a gcc invocation does not change, the cached output is used instead of invoking gcc again. This can tremendously speed up recompiles of your L4 tree. To use ccache you may either alias your gcc command to call ''ccache gcc'' instead. To combine ccache with colorgcc write the following lines into the file ''~/.colorgccrc'':<br />
<br />
gcc: ccache /usr/bin/gcc<br />
g++: ccache /usr/bin/g++<br />
<br />
It's important to use the full path to gcc and g++ here, because otherwise gcc and g++ from your local bin directory would be used again. If you have additional links for gcc to colorgcc you should add those as well.<br />
<br />
=== Dist-CC ===<br />
<br />
[http://distcc.samba.org/ distcc] is another tool that can speed up your compile process. Dist-CC distributes the invocations of gcc to other servers running the distccd daemon. This way you can utilize other computers to compile your source tree for you. This is especially useful if you can build in parallel. Please follow the instructions on the distcc homepage on how to set up a distcc network. To combine the invocation of distcc with colorgcc and ccache add the following line to your .bashrc (or appropriate):<br />
<br />
export CCACHE_PREFIX="distcc"<br />
<br />
This will make ccache invoke distcc with the gcc command line itself received. While editing .bashrc, you might as well add an appropriate distcc configuration line:<br />
<br />
export DISTCC_HOSTS='localhost/3 compile-host1/4 compile-host2/4'<br />
<br />
Have fun!</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=78HOWTOs2007-09-21T14:18:03Z<p>Ron: /* Running/Using */ add list of other HowTos</p>
<hr />
<div>How to build and run.<br />
<br />
=== Build ===<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
** [http://os.inf.tu-dresden.de/fiasco/use.html]<br />
* [[L4Env]]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux]<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]<br />
* [[Quickstart]]<br />
<br />
=== Running/Using ===<br />
<br />
* Systems to use<br />
** hardware requirements<br />
** virtual machines<br />
*** [[QEmu]]<br />
*** Fiasco-UX<br />
*** VMware<br />
*** Virtualbox<br />
** Boot from [[CD image|CD]]<br />
** Boot from [[TFTP server]]<br />
* serial console<br />
* [[GRUB]]<br />
** [[menu.lst]]<br />
*** [[menu.lst-Examples]]<br />
** TUDOS GRUB [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network<br />
<br />
=== Other How-Tos ===<br />
<br />
* [[gcc-stack|stacking colorgcc, distcc, and gcc]]</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=TFTP_server&diff=76TFTP server2007-09-17T08:23:41Z<p>Ron: typo fix</p>
<hr />
<div>Booting from a TFTP server has the advantage that you do not have to recreate a boot-medium every time you change a binary. Thus, for development and debugging, the use of a TFTP server is highly recommended. Each current distribution has a TFTP server package. If you want to load binaries via PXE from your TFTP server you will need [http://packages.debian.org/search?keywords=tftpd-hpa&searchon=names&suite=all&section=all tftp-hpa].<br />
<br />
Once you installed the TFTP server it can be started on demand by inserting the following line into your ''/etc/inetd.conf'' (if it isn't already):<br />
<br />
tftp dgram udp wait.5000 root /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot<br />
<br />
The last parameter in the line (''/tftpboot'') tells the TFTP server where to look for files. If this directory does not exist, create it. Also create a directory ''boot'' in your home directory. Then create a symbolic link from that ''boot'' directory to a sub-directory with your user name in ''tftpboot'':<br />
<br />
cd /tftpboot<br />
ln -s /home/<your login>/boot <your login><br />
<br />
Put your [[menu.lst]] files and binaries into that directory or link them. You can, for instance, link the ''bin'' directory from your build directory into your ''boot'' directory. Now, each entry in the [[menu.lst]] that loads from the TFTP server will fetch the files from your ''boot'' directory. The menu.lst entry:<br />
<br />
module (nd)/tftpboot/<your login>/bin/x86/bootstrap<br />
<br />
Will load the file bootstrap from your ''boot'' directory. You have to specify the full path (including ''tftpboot'') because you can specify more than one directory as parameters for ''in.tftpd'' and the TFTP server has to know which to look in. Please consult the man page of the TFTP server for further details.<br />
<br />
When booting with [[QEmu]]'s TFTP server, you do not have to have a running TFTP server, but the layout of the directories should be the same.<br />
<br />
If you are the sole user of the TFTP server you may, of course, specify the ''boot'' directory directly as the parameter of the TFTP server. In a multi-user environment with a single TFTP server the above setup proved useful.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=TFTP_server&diff=75TFTP server2007-09-17T08:22:09Z<p>Ron: add intro on TFTP server</p>
<hr />
<div>Booting from a TFTP server has the advantage that you do not have to recreate a boot-medium every time you change a binary. Thus, for development and debugging, the use of a TFTP server is highly recommended. Each current distribution has a TFTP server package. If you want to load binaries via PXE from your TFTP server you will need [http://packages.debian.org/search?keywords=tftpd-hpa&searchon=names&suite=all&section=all tftp-hpa].<br />
<br />
Once you installed the TFTP server it can be started on demand by inserting the following line into your ''/etc/inetd.conf'' (if it isn't already):<br />
<br />
tftp dgram udp wait.5000 root /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot<br />
<br />
The last parameter in the line (''/tftpboot'') tells the TFTP server where to look for files. If this directory does not exist, create it. Also create a directory ''boot'' in your home directory. Then create a symbolic link tfrom that ''boot'' directory to a sub-directory with your user name in ''tftpboot'':<br />
<br />
cd /tftpboot<br />
ln -s /home/<your login>/boot <your login><br />
<br />
Put your [[menu.lst]] files and binaries into that directory or link them. You can, for instance, link the ''bin'' directory from your build directory into your ''boot'' directory. Now, each entry in the [[menu.lst]] that loads from the TFTP server will fetch the files from your ''boot'' directory. The menu.lst entry:<br />
<br />
module (nd)/tftpboot/<your login>/bin/x86/bootstrap<br />
<br />
Will load the file bootstrap from your ''boot'' directory. You have to specify the full path (including ''tftpboot'') because you can specify more than one directory as parameters for ''in.tftpd'' and the TFTP server has to know which to look in. Please consult the man page of the TFTP server for further details.<br />
<br />
When booting with [[QEmu]]'s TFTP server, you do not have to have a running TFTP server, but the layout of the directories should be the same.<br />
<br />
If you are the sole user of the TFTP server you may, of course, specify the ''boot'' directory directly as the parameter of the TFTP server. In a multi-user environment with a single TFTP server the above setup proved useful.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=QEmu&diff=74QEmu2007-09-16T12:00:37Z<p>Ron: /* TFTP server */ link to Grub page</p>
<hr />
<div>[http://fabrice.bellard.free.fr/qemu/ Qemu] is a PC emulator that can be<br />
used instead of a real PC to test your L4 applications. In order to boot<br />
something with Qemu we have to create a bootable device as we would for a real<br />
PC. You can, for instance, create a CD image to boot or you use a tftp server<br />
to load your binaries.<br />
<br />
The instructions specified here are for Qemu version 0.9.0. Other versions are<br />
mentioned explicitly.<br />
<br />
<br />
===CD image===<br />
<br />
Follow the instructions to [[CD image|create a CD image]] of your software. Once you<br />
obtained the image you can use it as the emulators CD drive (''-cdrom'') and<br />
tell Qemu to boot from it (''-boot d'').<br />
<br />
The full command line would be:<br />
<br />
qemu -cdrom /path/to/your/cd-image.iso -boot d<br />
<br />
===TFTP server===<br />
<br />
One of the nice feature of Qemu is its built-in TFTP server. The advantage of<br />
using a TFTP server to boot your software is that you do not have to recreate<br />
the CD image if something changes. You simple replace the binary to use.<br />
<br />
If you want to use the built-in TFTP server specify the ''-tftp'' Option. Of<br />
course this only enable the TFTP server in Qemu--a boot image is still<br />
required. The easiest way is to cat the stage1 and stage2 of [[GRUB|Grub]] together<br />
into one image. You can use the two files from you local installation of [[GRUB|Grub]]<br />
in ''/usr/lib/grub/i386-pc/''.<br />
<br />
cat /usr/lib/grub/i386-pc/stage1 /usr/lib/grub/i386-pc/stage2 > grub_disk<br />
<br />
You may, of course, use your own version [[GRUB|Grub]] instead of the installed.<br />
<br />
Now, you use the created ''grub_disk'' as boot image of qemu and the ''-tftp''<br />
Option to tell the Qemu TFTP Server where to look for files (in this case in<br />
the root directory):<br />
<br />
qemu grub_disk -tftp /<br />
<br />
The Qemu will boot a [[GRUB|Grub]] with a command line where you may load your<br />
configuration file ([[menu.lst]]) for Grub. If you want to directly boot <br />
this configuration file whenever you boot Grub,<br />
simply open the created ''grub_disk'' in an editor, search for the string<br />
'''(nd)/tftp/menu.lst''' and replace it with the location of your<br />
configuration file. (For Grub version 0.97-os.6 the string is at offset<br />
0x41c.) Do '''not''' insert your string but overwrite the existing string.<br />
There are enough zeros after the string that can be overwritten.<br />
<br />
===PXE boot===<br />
<br />
With recent versions of Qemu (currently only snapshots after February 19th<br />
2007), you may also boot over the network using PXE. You will need a PXE Grub<br />
stage2. After you obtained the recent Qemu and the PXE Grub you can boot Qemu<br />
with:<br />
<br />
qemu -tftp / -bootp /usr/lib/grub/i386-pc/pxegrub -boot n<br />
<br />
Again you can modify the ''pxegrub'' binary to directly boot your preferred<br />
[[menu.lst]]. (For Grub version 0.97-os.6 the string is at offset 0x61c.)<br />
<br />
<br />
===Useful options===<br />
<br />
L4 software print lots of useful information on the serial line which can be<br />
helpful when debugging. To interact with the serial console of Qemu use the<br />
option ''-serial'':<br />
<br />
qemu ... -serial stdio<br />
<br />
You may also want to modify the amount of memory Qemu uses with the ''-m''<br />
option (here 256 MB):<br />
<br />
qemu ... -m 256</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=QEmu&diff=73QEmu2007-09-16T11:56:43Z<p>Ron: /* CD image */ fix link to CD image</p>
<hr />
<div>[http://fabrice.bellard.free.fr/qemu/ Qemu] is a PC emulator that can be<br />
used instead of a real PC to test your L4 applications. In order to boot<br />
something with Qemu we have to create a bootable device as we would for a real<br />
PC. You can, for instance, create a CD image to boot or you use a tftp server<br />
to load your binaries.<br />
<br />
The instructions specified here are for Qemu version 0.9.0. Other versions are<br />
mentioned explicitly.<br />
<br />
<br />
===CD image===<br />
<br />
Follow the instructions to [[CD image|create a CD image]] of your software. Once you<br />
obtained the image you can use it as the emulators CD drive (''-cdrom'') and<br />
tell Qemu to boot from it (''-boot d'').<br />
<br />
The full command line would be:<br />
<br />
qemu -cdrom /path/to/your/cd-image.iso -boot d<br />
<br />
===TFTP server===<br />
<br />
One of the nice feature of Qemu is its built-in TFTP server. The advantage of<br />
using a TFTP server to boot your software is that you do not have to recreate<br />
the CD image if something changes. You simple replace the binary to use.<br />
<br />
If you want to use the built-in TFTP server specify the ''-tftp'' Option. Of<br />
course this only enable the TFTP server in Qemu--a boot image is still<br />
required. The easiest way is to cat the stage1 and stage2 of grub together<br />
into one image. You can use the two files from you local installation of Grub<br />
in ''/usr/lib/grub/i386-pc/''.<br />
<br />
cat /usr/lib/grub/i386-pc/stage1 /usr/lib/grub/i386-pc/stage2 > grub_disk<br />
<br />
You may, of course, use your own version Grub instead of the installed.<br />
<br />
Now, you use the created ''grub_disk'' as boot image of qemu and the ''-tftp''<br />
Option to tell the Qemu TFTP Server where to look for files (in this case in<br />
the root directory):<br />
<br />
qemu grub_disk -tftp /<br />
<br />
The Qemu will boot a Grub with a command line where you may load your<br />
configuration file ([[menu.lst]]) for Grub. If you want to directly boot <br />
this configuration file whenever you boot Grub,<br />
simply open the created ''grub_disk'' in an editor, search for the string<br />
'''(nd)/tftp/menu.lst''' and replace it with the location of your<br />
configuration file. (For Grub version 0.97-os.6 the string is at offset<br />
0x41c.) Do '''not''' insert your string but overwrite the existing string.<br />
There are enough zeros after the string that can be overwritten.<br />
<br />
<br />
===PXE boot===<br />
<br />
With recent versions of Qemu (currently only snapshots after February 19th<br />
2007), you may also boot over the network using PXE. You will need a PXE Grub<br />
stage2. After you obtained the recent Qemu and the PXE Grub you can boot Qemu<br />
with:<br />
<br />
qemu -tftp / -bootp /usr/lib/grub/i386-pc/pxegrub -boot n<br />
<br />
Again you can modify the ''pxegrub'' binary to directly boot your preferred<br />
[[menu.lst]]. (For Grub version 0.97-os.6 the string is at offset 0x61c.)<br />
<br />
<br />
===Useful options===<br />
<br />
L4 software print lots of useful information on the serial line which can be<br />
helpful when debugging. To interact with the serial console of Qemu use the<br />
option ''-serial'':<br />
<br />
qemu ... -serial stdio<br />
<br />
You may also want to modify the amount of memory Qemu uses with the ''-m''<br />
option (here 256 MB):<br />
<br />
qemu ... -m 256</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=CD_image&diff=72CD image2007-09-16T11:54:58Z<p>Ron: add first draft on how to create a CD image</p>
<hr />
<div>Creating a CD image with L4 binaries is fairly easy. First you have to create a directory where you put all the files that should go on the CD. This directory will be the root of your CD image. Change into that directory and create a directory called ''boot'' in that directory you put another directory ''grub''. Into the directory ''boot/grub'' you copy a Grub stage2 file that can boot CD images:<br />
<br />
cp /usr/lib/grub/i386-pc/stage2_eltorito boot/grub/<br />
<br />
Then you copy all the files to your CD image, that is, somewhere below the root directory of your CD image.<br />
<br />
Grub will look for an [[menu.lst]] file in the ''boot/grub'' directory. Thus, either place your main menu.lst there or create a menu.lst that will load your other menu.lst. Either way, be aware that booting from a CD will load from ''(cd)/'' instead of ''(nd)/tftpboot''.<br />
<br />
<br />
When all the files are placed "on the disk" we make a CD image from that directory using mkisofs:<br />
<br />
mkisofs -R -b boot/grub/stage2_eltorito <br />
-no-emul-boot -boot-load-size 4 -boot-info-table<br />
-hide-rr-moved<br />
-J -joliet-long<br />
-o "cd-image.iso" .<br />
<br />
Do not forget the dot at the end of the command line, as it tells mkisofs which directory to create the image from (here: current directory). The mkisofs command will create a CD image named ''cd-image.iso'' that can then be used to burn it to a CD disk or as image for virtual machines ([[QEmu]], VMWare).<br />
<br />
To ease the step of creating a CD image we provide a script in ''$(L4DIR)/tool/bin'': isocreator. It takes two arguments: the directory to create the image from and the nae of the CD image file. With the above setup we would use isocreator like this:<br />
<br />
$(L4DIR)/tool/bin/isocreator . cd-image.iso</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=71HOWTOs2007-09-16T11:41:57Z<p>Ron: /* Running/Using */ two new entries</p>
<hr />
<div>How to build and run.<br />
<br />
=== Build ===<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
** [http://os.inf.tu-dresden.de/fiasco/use.html]<br />
* [[L4Env]]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux]<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]<br />
* [[Quickstart]]<br />
<br />
=== Running/Using ===<br />
<br />
* Systems to use<br />
** hardware requirements<br />
** virtual machines<br />
*** [[QEmu]]<br />
*** Fiasco-UX<br />
*** VMware<br />
*** Virtualbox<br />
** Boot from [[CD image|CD]]<br />
** Boot from [[TFTP server]]<br />
* serial console<br />
* [[GRUB]]<br />
** [[menu.lst]]<br />
*** [[menu.lst-Examples]]<br />
** TUDOS GRUB [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=QEmu&diff=70QEmu2007-09-16T11:32:00Z<p>Ron: add first draft of booting with qemu</p>
<hr />
<div>[http://fabrice.bellard.free.fr/qemu/ Qemu] is a PC emulator that can be<br />
used instead of a real PC to test your L4 applications. In order to boot<br />
something with Qemu we have to create a bootable device as we would for a real<br />
PC. You can, for instance, create a CD image to boot or you use a tftp server<br />
to load your binaries.<br />
<br />
The instructions specified here are for Qemu version 0.9.0. Other versions are<br />
mentioned explicitly.<br />
<br />
<br />
===CD image===<br />
<br />
Follow the instructions to [create a CD image] of your software. Once you<br />
obtained the image you can use it as the emulators CD drive (''-cdrom'') and<br />
tell Qemu to boot from it (''-boot d'').<br />
<br />
The full command line would be:<br />
<br />
qemu -cdrom /path/to/your/cd-image.iso -boot d<br />
<br />
<br />
===TFTP server===<br />
<br />
One of the nice feature of Qemu is its built-in TFTP server. The advantage of<br />
using a TFTP server to boot your software is that you do not have to recreate<br />
the CD image if something changes. You simple replace the binary to use.<br />
<br />
If you want to use the built-in TFTP server specify the ''-tftp'' Option. Of<br />
course this only enable the TFTP server in Qemu--a boot image is still<br />
required. The easiest way is to cat the stage1 and stage2 of grub together<br />
into one image. You can use the two files from you local installation of Grub<br />
in ''/usr/lib/grub/i386-pc/''.<br />
<br />
cat /usr/lib/grub/i386-pc/stage1 /usr/lib/grub/i386-pc/stage2 > grub_disk<br />
<br />
You may, of course, use your own version Grub instead of the installed.<br />
<br />
Now, you use the created ''grub_disk'' as boot image of qemu and the ''-tftp''<br />
Option to tell the Qemu TFTP Server where to look for files (in this case in<br />
the root directory):<br />
<br />
qemu grub_disk -tftp /<br />
<br />
The Qemu will boot a Grub with a command line where you may load your<br />
configuration file ([[menu.lst]]) for Grub. If you want to directly boot <br />
this configuration file whenever you boot Grub,<br />
simply open the created ''grub_disk'' in an editor, search for the string<br />
'''(nd)/tftp/menu.lst''' and replace it with the location of your<br />
configuration file. (For Grub version 0.97-os.6 the string is at offset<br />
0x41c.) Do '''not''' insert your string but overwrite the existing string.<br />
There are enough zeros after the string that can be overwritten.<br />
<br />
<br />
===PXE boot===<br />
<br />
With recent versions of Qemu (currently only snapshots after February 19th<br />
2007), you may also boot over the network using PXE. You will need a PXE Grub<br />
stage2. After you obtained the recent Qemu and the PXE Grub you can boot Qemu<br />
with:<br />
<br />
qemu -tftp / -bootp /usr/lib/grub/i386-pc/pxegrub -boot n<br />
<br />
Again you can modify the ''pxegrub'' binary to directly boot your preferred<br />
[[menu.lst]]. (For Grub version 0.97-os.6 the string is at offset 0x61c.)<br />
<br />
<br />
===Useful options===<br />
<br />
L4 software print lots of useful information on the serial line which can be<br />
helpful when debugging. To interact with the serial console of Qemu use the<br />
option ''-serial'':<br />
<br />
qemu ... -serial stdio<br />
<br />
You may also want to modify the amount of memory Qemu uses with the ''-m''<br />
option (here 256 MB):<br />
<br />
qemu ... -m 256</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=69HOWTOs2007-09-16T11:24:42Z<p>Ron: /* Running/Using */</p>
<hr />
<div>How to build and run.<br />
<br />
=== Build ===<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
** [http://os.inf.tu-dresden.de/fiasco/use.html]<br />
* [[L4Env]]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux]<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]<br />
* [[Quickstart]]<br />
<br />
=== Running/Using ===<br />
<br />
* Systems to use<br />
** hardware requirements<br />
** virtual machines<br />
*** [[QEmu]]<br />
*** Fiasco-UX<br />
*** VMware<br />
*** Virtualbox<br />
* serial console<br />
* [[GRUB]]<br />
** [[menu.lst]]<br />
*** [[menu.lst-Examples]]<br />
** TUDOS GRUB [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Programming&diff=62Programming2007-08-29T09:57:57Z<p>Ron: link to L4Env page</p>
<hr />
<div>You can program for L4 using the [[L4Env]].</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=L4Env&diff=61L4Env2007-08-29T09:56:41Z<p>Ron: add link to manuals</p>
<hr />
<div>The L4 Environment, short L4Env, is a programming environment for applications that should run on the L4.Fiasco kernel. L4Env was developed to provide basic building blocks such as a C library or memory management.<br />
<br />
===Reasoning===<br />
<br />
Prior to L4Env application developer wrote their software to use the basic mechanisms provided by the L4 microkernel. These included software to provide functions, such as ''malloc'', ''free'', ''printf'', etc. Because, the implementations were mostly similar and application developers should be writing applications, instead of support libraries, these software was combined into a programming environment.<br />
<br />
Now that the L4Env provided basic functionality, more applications and more sophisticated software could be made run on L4.<br />
<br />
L4Env might not be perfect and contain all the functionality someone might require, it has proven to be a stable basis. And, as demand requires, it grows to include more functionality.<br />
<br />
===What it provides===<br />
<br />
* thread startup and termination<br />
* task startup and termination<br />
* memory management (pager, malloc, free)<br />
* services to start the system (bootstrap, roottask, etc.)<br />
* basic name service<br />
* dynamically start applications (loader, tftp, bmodfs)<br />
* C library (port of a subset of the uClibc)<br />
<br />
More complex services are provided in additional packages:<br />
<br />
* l4vfs: virtual console (vt100) support, higher level name service, basic file server, many more<br />
* ports of different graphic libraries: qt3, qt4, sdl, etc.<br />
* basic window manager: nitpicker, DOpE<br />
<br />
===What it does not provide===<br />
<br />
* pthread library<br />
* full file system support<br />
<br />
===Further information===<br />
<br />
* [http://www.inf.tu-dresden.de/index.php?node_id=1587 L4Env manuals] (generated from current SVN sources)</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=L4Env&diff=60L4Env2007-08-29T09:55:22Z<p>Ron: start L4Env page</p>
<hr />
<div>The L4 Environment, short L4Env, is a programming environment for applications that should run on the L4.Fiasco kernel. L4Env was developed to provide basic building blocks such as a C library or memory management.<br />
<br />
===Reasoning===<br />
<br />
Prior to L4Env application developer wrote their software to use the basic mechanisms provided by the L4 microkernel. These included software to provide functions, such as ''malloc'', ''free'', ''printf'', etc. Because, the implementations were mostly similar and application developers should be writing applications, instead of support libraries, these software was combined into a programming environment.<br />
<br />
Now that the L4Env provided basic functionality, more applications and more sophisticated software could be made run on L4.<br />
<br />
L4Env might not be perfect and contain all the functionality someone might require, it has proven to be a stable basis. And, as demand requires, it grows to include more functionality.<br />
<br />
===What it provides===<br />
<br />
* thread startup and termination<br />
* task startup and termination<br />
* memory management (pager, malloc, free)<br />
* services to start the system (bootstrap, roottask, etc.)<br />
* basic name service<br />
* dynamically start applications (loader, tftp, bmodfs)<br />
* C library (port of a subset of the uClibc)<br />
<br />
More complex services are provided in additional packages:<br />
<br />
* l4vfs: virtual console (vt100) support, higher level name service, basic file server, many more<br />
* ports of different graphic libraries: qt3, qt4, sdl, etc.<br />
* basic window manager: nitpicker, DOpE<br />
<br />
===What it does not provide===<br />
<br />
* pthread library<br />
* full file system support</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=59HOWTOs2007-08-29T09:29:39Z<p>Ron: link to l4env</p>
<hr />
<div>How to build and run.<br />
<br />
=== Build ===<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
** [http://os.inf.tu-dresden.de/fiasco/use.html]<br />
* [[L4Env]]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux]<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]<br />
* [[Quickstart]]<br />
<br />
=== Running/Using ===<br />
<br />
* Systems to use<br />
** hardware requirements<br />
** virtual machines<br />
*** QEmu<br />
*** Fiasco-UX<br />
*** VMware<br />
*** Virtualbox<br />
* serial console<br />
* [[GRUB]]<br />
** [[menu.lst]]<br />
** TUDOS GRUB [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Menu.lst&diff=57Menu.lst2007-08-23T12:50:22Z<p>Ron: more links</p>
<hr />
<div>The menu.lst specifies the menu that GRUB presents the user on boot. A basic entry looks like this:<br />
<br />
<pre><br />
title GRUB Menu Test<br />
kernel (nd)/tftpboot/user/bootstrap -serial<br />
module (nd)/tftpboot/user/fiasco<br />
module (nd)/tftpboot/user/sigma0<br />
module (nd)/tftpboot/user/roottask<br />
</pre><br />
<br />
The ''title'' keyword specifies the text to be shown in the GRUB menu. The ''kernel'' keyword specifies the name of the binary that should be started after all modules were loaded into memory. The ''module'' keywords specified additional modules. See the list of [http://www.gnu.org/software/grub/manual/grub.html#Commands GRUB commands] for a full reference.<br />
<br />
The above order of modules has to '''always''' be the same for an L4 system: <br />
# ''bootstrap'' starts the <br />
# ''fiasco'' kernel, which in turn expects the next two modules to be <br />
# ''sigma0'' and <br />
# ''roottask''.<br />
<br />
Because bootstrap enlarges its size when running, there has to be some free space after the bootstrap binary. To achieve this you may add the ''modaddr'' keyword after the bootstrap line, or give the ''--modaddr'' Option to bootstrap. The ''modaddr'' keyword is one of our local [[TUDOS GRUB|extensions to GRUB]].<br />
<br />
<pre><br />
title GRUB Menu Test<br />
kernel (nd)/tftpboot/user/bootstrap -serial<br />
modaddr 0x00200000<br />
module (nd)/tftpboot/user/fiasco<br />
module (nd)/tftpboot/user/sigma0<br />
module (nd)/tftpboot/user/roottask<br />
</pre><br />
<br />
Or:<br />
<br />
<pre><br />
title GRUB Menu Test<br />
kernel (nd)/tftpboot/user/bootstrap -serial -modaddr=0x00200000<br />
module (nd)/tftpboot/user/fiasco<br />
module (nd)/tftpboot/user/sigma0<br />
module (nd)/tftpboot/user/roottask<br />
</pre><br />
<br />
As you noticed, all the modules start with ''(nd)/tftpboot/user/''. The ''(nd)'' tells GRUB to use the network device to get the files via TFTP. Usually GRUB obtained a network address and the IP of the TFTP server from it's DHCP server. The following file-name is then used to query the file at the TFTP server. Thus to load your binaries using TFTP you will need:<br />
<br />
* a DHCP server giving the test-box an IP and the IP of the TFTP server<br />
* a TFTP server with access to the binaries to load<br />
* a network card that is supported by GRUB (GRUB is pretty aged, so are the supported network cards)</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=56HOWTOs2007-08-23T12:46:36Z<p>Ron: link to menu.lst</p>
<hr />
<div>How to build and run.<br />
<br />
=== Build ===<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
** [http://os.inf.tu-dresden.de/fiasco/use.html]<br />
* L4Env<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux]<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]<br />
* [[Quickstart]]<br />
<br />
=== Running/Using ===<br />
<br />
* Systems to use<br />
** hardware requirements<br />
** virtual machines<br />
*** QEmu<br />
*** Fiasco-UX<br />
*** VMware<br />
*** Virtualbox<br />
* serial console<br />
* [[GRUB]]<br />
** [[menu.lst]]<br />
** TUDOS GRUB [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Menu.lst&diff=55Menu.lst2007-08-23T12:46:06Z<p>Ron: What a basic menu.lst looks like</p>
<hr />
<div>The menu.lst specifies the menu that GRUB presents the user on boot. A basic entry looks like this:<br />
<br />
<pre><br />
title GRUB Menu Test<br />
kernel (nd)/tftpboot/user/bootstrap -serial<br />
module (nd)/tftpboot/user/fiasco<br />
module (nd)/tftpboot/user/sigma0<br />
module (nd)/tftpboot/user/roottask<br />
</pre><br />
<br />
The ''title'' keyword specifies the text to be shown in the GRUB menu. The ''kernel'' keyword specifies the name of the binary that should be started after all modules were loaded into memory. The ''module'' keywords specified additional modules.<br />
<br />
The above order of modules has to be always the same for an L4 system: bootstrap starts the Fiasco kernel, which in turn expects the next two modules to be ''sigma0'' and ''roottask''.<br />
<br />
Because bootstrap enlarges its size when running, there has to be some free space after the bootstrap binary. To achieve this you may add the ''modaddr'' keyword after the bootstrap line, or give the ''--modaddr'' Option to bootstrap.<br />
<br />
<pre><br />
title GRUB Menu Test<br />
kernel (nd)/tftpboot/user/bootstrap -serial<br />
modaddr 0x00200000<br />
module (nd)/tftpboot/user/fiasco<br />
module (nd)/tftpboot/user/sigma0<br />
module (nd)/tftpboot/user/roottask<br />
</pre><br />
<br />
Or:<br />
<br />
<pre><br />
title GRUB Menu Test<br />
kernel (nd)/tftpboot/user/bootstrap -serial -modaddr=0x00200000<br />
module (nd)/tftpboot/user/fiasco<br />
module (nd)/tftpboot/user/sigma0<br />
module (nd)/tftpboot/user/roottask<br />
</pre><br />
<br />
As you noticed, all the modules start with ''(nd)/tftpboot/user/''. The ''(nd)'' tells GRUB to use the network device to get the files via TFTP. Usually GRUB obtained a network address and the IP of the TFTP server from it's DHCP server. The following file-name is then used to query the file at the TFTP server. Thus to load your binaries using TFTP you will need:<br />
<br />
* a DHCP server giving the test-box an IP and the IP of the TFTP server<br />
* a TFTP server with access to the binaries to load<br />
* a network card that is supported by GRUB (GRUB is pretty aged, so are the supported network cards)</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=GRUB&diff=54GRUB2007-08-23T12:18:47Z<p>Ron: link to menu.lst</p>
<hr />
<div>[http://www.gnu.org/software/grub/ GRUB] is the boot-loader most commonly used with L4. The boot-loader is used to ''load'' the binary images of the system to run into main-memory. The source can be (in the case of GRUB) hard-disk, floppy, network. CD-ROM, and others. Experience showed that, if you have the resources, booting via network is fastest for development cycles. You can build your software, copy it into a directory accessible to the TFTP Server, and then load the images via TFTP over the network.<br />
<br />
GRUB supports the multiboot standard, that is, it can load multiple binaries into main-memory and then start executing one of them. This is used by the L4 System: All the binaries are loaded into main memory and then bootstrap is executed which uses the multiboot information provided by GRUB to find and start the other binaries. To know which files to load, GRUB reads a file called [[menu.lst]].</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=GRUB&diff=53GRUB2007-08-23T12:16:37Z<p>Ron: start page on GRUB</p>
<hr />
<div>[http://www.gnu.org/software/grub/ GRUB] is the boot-loader most commonly used with L4. The boot-loader is used to ''load'' the binary images of the system to run into main-memory. The source can be (in the case of GRUB) hard-disk, floppy, network. CD-ROM, and others. Experience showed that, if you have the resources, booting via network is fastest for development cycles. You can build your software, copy it into a directory accessible to the TFTP Server, and then load the images via TFTP over the network.<br />
<br />
GRUB supports the multiboot standard, that is, it can load multiple binaries into main-memory and then start executing one of them. This is used by the L4 System: All the binaries are loaded into main memory and then bootstrap is executed which uses the multiboot information provided by GRUB to find and start the other binaries. To know which files to load, GRUB reads a file called menu.lst.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=52HOWTOs2007-08-23T12:06:22Z<p>Ron: </p>
<hr />
<div>How to build and run.<br />
<br />
=== Build ===<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
** [http://os.inf.tu-dresden.de/fiasco/use.html]<br />
* L4Env<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux]<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]<br />
* [[Quickstart]]<br />
<br />
=== Running/Using ===<br />
<br />
* Systems to use<br />
** hardware requirements<br />
** virtual machines<br />
*** QEmu<br />
*** Fiasco-UX<br />
*** VMware<br />
*** Virtualbox<br />
* serial console<br />
* [[GRUB]]<br />
** menu.lst<br />
** TUDOS GRUB [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Prerequisites&diff=51Prerequisites2007-08-23T12:00:47Z<p>Ron: partitioning the page</p>
<hr />
<div>===Basic System===<br />
<br />
To build the system you need the following:<br />
* x86 Linux host system (64bit is also supposed to work)<br />
* gcc/g++-4.1 or gcc/g++-4.2<br />
* make<br />
* perl<br />
* python<br />
* gawk<br />
* sed<br />
* libcurses-dev<br />
* bison/flex<br />
<br />
Good to have:<br />
* subversion client<br />
* doxygen to build documentation<br />
<br />
All those should be part of any recent Linux distribution.<br />
<br />
===Additional Packages===<br />
<br />
Additional tools required by different packages:<br />
<br />
* sdl<br />
** automake 1.4</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Prerequisites&diff=50Prerequisites2007-08-23T11:59:57Z<p>Ron: add remarks on prerequisites for additional packages</p>
<hr />
<div>To build the system you need the following:<br />
* x86 Linux host system (64bit is also supposed to work)<br />
* gcc/g++-4.1 or gcc/g++-4.2<br />
* make<br />
* perl<br />
* python<br />
* gawk<br />
* sed<br />
* libcurses-dev<br />
* bison/flex<br />
<br />
Good to have:<br />
* subversion client<br />
* doxygen to build documentation<br />
<br />
All those should be part of any recent Linux distribution.<br />
<br />
Additional tools required by different packages:<br />
<br />
* sdl<br />
** automake 1.4</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=User:Ron&diff=44User:Ron2007-08-15T15:17:35Z<p>Ron: New page: Usually hacking [http://www.tudos.org/dice/ Dice].</p>
<hr />
<div>Usually hacking [http://www.tudos.org/dice/ Dice].</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Prerequisites&diff=43Prerequisites2007-08-15T14:51:47Z<p>Ron: bison is required (yacc won't work), flex is needed</p>
<hr />
<div>To build the system you need the following:<br />
* x86 Linux host system (64bit is also supposed to work)<br />
* gcc/g++-4.1 or gcc/g++-4.2<br />
* make<br />
* perl<br />
* python<br />
* gawk<br />
* sed<br />
* libcurses-dev<br />
* bison/flex<br />
<br />
Good to have:<br />
* subversion client<br />
* doxygen to build documentation<br />
<br />
All those should be part of any recent Linux distribution.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Prerequisites&diff=42Prerequisites2007-08-15T14:50:36Z<p>Ron: need doxygen to build docs</p>
<hr />
<div>To build the system you need the following:<br />
* x86 Linux host system (64bit is also supposed to work)<br />
* gcc/g++-4.1 or gcc/g++-4.2<br />
* make<br />
* perl<br />
* python<br />
* gawk<br />
* sed<br />
* libcurses-dev<br />
* bison/yacc<br />
<br />
Good to have:<br />
* subversion client<br />
* doxygen to build documentation<br />
<br />
All those should be part of any recent Linux distribution.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Prerequisites&diff=41Prerequisites2007-08-15T14:49:52Z<p>Ron: need sed as well</p>
<hr />
<div>To build the system you need the following:<br />
* x86 Linux host system (64bit is also supposed to work)<br />
* gcc/g++-4.1 or gcc/g++-4.2<br />
* make<br />
* perl<br />
* python<br />
* gawk<br />
* sed<br />
* libcurses-dev<br />
* bison/yacc<br />
<br />
Good to have:<br />
* subversion client<br />
<br />
All those should be part of any recent Linux distribution.</div>Ronhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=40Quickstart2007-08-15T14:34:54Z<p>Ron: merge l4env, configure and build as with other steps, also makes current dir obvious</p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
** ''hello'' is a simple set of programs, ''l4linux-2.6-env'' is everything needed for L4Linux.<br />
<br />
$ cd /path/to/src<br />
$ svn checkout -N http://svn.tudos.org/repos/tudos/trunk tudos<br />
$ cd tudos<br />
$ ./repomgr co hello<br />
$ ./repomgr co l4linux-2.6-env<br />
<br />
* L4Env: Create a build directory, configure and build<br />
<br />
$ mkdir /path/to/obj/tudos<br />
$ cd /path/to/src/tudos/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /path/to/src/tudos/kernel/fiasco<br />
$ make BUILDDIR=/path/to/obj/fiasco<br />
$ cd /path/to/obj/fiasco<br />
$ make<br />
<br />
* L<sup>4</sup>Linux<br />
** Get the source, configure and build<br />
<br />
$ cd /path/to/src<br />
$ svn co http://svn.tudos.org/repos/l4linux/trunk l4linux-2.6<br />
$ cd l4linux-2.6<br />
$ make O=/path/to/obj/l4linux x86-ux_defconfig<br />
$ make O=/path/to/obj/l4linux</div>Ron