https://wiki.tudos.org/ikiw/api.php?action=feedcontributions&user=Adam&feedformat=atomTUDOS-Wiki - User contributions [en]2024-03-19T09:42:07ZUser contributionsMediaWiki 1.41.0https://wiki.tudos.org/ikiw/index.php?title=Getting_TUDOS&diff=355Getting TUDOS2016-01-23T22:58:19Z<p>Adam: </p>
<hr />
<div>TUDOS sources are available as snapshot releases and via SVN.<br />
<br />
The software consists of multiple components:<br />
* The kernel [https://l4re.org/fiasco/download.html Fiasco.OC]<br />
* The [https://l4re.org/download.html L4Re system]<br />
* An optional paravirtualized Linux: [http://l4linux.org/download.shtml L4Linux]<br />
<br />
The runtime environment L4Re itself consists of many packages that implement various functionality and depend on each other. The check-out mechanism makes sure that all required packages are downloaded.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Main_Page&diff=354Main Page2016-01-23T22:56:33Z<p>Adam: /* TUD:OS Wiki */</p>
<hr />
<div>__NOTOC__<br />
= TUD:OS Wiki =<br />
<br />
=== Introductions ===<br />
* [[What is L4]]? <br />
* [[What is TUDOS|What is TUD:OS]]?<br />
<br />
=== Using TUD:OS ===<br />
* [[Getting TUDOS|Getting TUD:OS]]<br />
* [[HOWTOs]] around TUD:OS<br />
* [[TUDOS in action|TUD:OS in action]]<br />
<br />
=== Programming TUDOS ===<br />
* [[Programming]] on TUD:OS<br />
* [[TUDOS Software Components|TUD:OS Software Components]]<br />
* [[Reporting Bugs]]<br />
<br />
<br />
=== Links and References ===<br />
* [[Links/References]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=What_is_TUDOS&diff=353What is TUDOS2016-01-23T22:55:27Z<p>Adam: </p>
<hr />
<div>TUD:OS is the operating system project at [http://os.inf.tu-dresden.de/ TU Dresden].<br />
<br />
It's basis is the [https://l4re.org L4Re microkernel system].</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Main_Page&diff=352Main Page2016-01-23T22:53:38Z<p>Adam: /* Introductions */</p>
<hr />
<div>__NOTOC__<br />
= TUD:OS Wiki =<br />
<br />
=== Introductions ===<br />
* [[What is L4]]? <br />
* [[What is TUDOS|What is TUD:OS]]?<br />
<br />
=== Using TUDOS ===<br />
* [[Getting TUDOS]]<br />
* [[HOWTOs]] around TUDOS<br />
* [[TUDOS in action]]<br />
<br />
=== Programming TUDOS ===<br />
* [[Programming]] on TUDOS<br />
* [[TUDOS Software Components]]<br />
* [[Reporting Bugs]]<br />
<br />
<br />
=== Links and References ===<br />
* [[Links/References]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=347HOWTOs2012-12-19T13:35:10Z<p>Adam: link in binary image of pxegrub</p>
<hr />
<div>== Building Fiasco and L4Re components ==<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
* [[L4Linux]]<br />
* [[Quickstart]]<br />
<br />
== Introduction to Fiasco.OC and L4Re ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Topics !! colspan=2 | Material <br />
|-<br />
| Microkernels, Fiasco.OC, Threads || [http://os.inf.tu-dresden.de/~doebel/downloads/01-Intro.pdf Slides] || [http://www.youtube.com/watch?v=eKP-UzXOTEI YouTube]<br />
|-<br />
| IPC, Memory, L4Re || [http://os.inf.tu-dresden.de/~doebel/downloads/02-MemoryAndIPC.pdf Slides] || [http://www.youtube.com/watch?v=2eaBvRBSUUQ YouTube]<br />
|-<br />
| Library Reuse, Device Drivers, (Para-)virtualization || [http://os.inf.tu-dresden.de/~doebel/downloads/03-AdvancedComponents.pdf Slides] || [http://www.youtube.com/watch?v=UOrG7ychElI YouTube]<br />
|-<br />
|}<br />
<br />
== Running and using Fiasco and L4Re components ==<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 />
* Booting<br />
** [[GRUB]]<br />
*** Enhanced GRUB1 [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
**** This GRUB1 version is maintained. You can send patches.<br />
**** Built image of [http://os.inf.tu-dresden.de/~adam/grub/0.97/pxegrub-0.97-os.8a.gz pxegrub]<br />
**** [[building patched grub]]<br />
*** [[menu.lst]]<br />
**** [[menu.lst-Examples]]<br />
*** [[GRUB2]]<br />
** Images<br />
*** Call 'make help' in the l4/ root directory to get a listing of possible image generation targets<br />
*** See l4/conf/Makeconf.boot.example for more information on customization<br />
*** u-boot:<br />
**** Call 'make uimage E=entry' to generate an uImage<br />
**** Load into u-boot (tftpboot, usb-stick, flash, ...)<br />
**** bootm ....<br />
*** ELF images: make elfimage E=name<br />
**** loadable with any loader that understand ELF (including GRUB, Lauterbach, ARM RVDS, QEmu)<br />
*** Raw images: make rawimage E=name<br />
**** copy into RAM at the start address, set PC to start address and run<br />
**** On ARM the images relocate itself to their linked address, i.e. they can be put anywhere in RAM (copying them to the right place will make booting faster of course).<br />
** Qemu<br />
*** Go to obj-dir root<br />
*** Call 'make qemu E=entry'<br />
*** For Qemu customization (esp. on ARM) see l4/conf/Makeconf.boot.example and add options to your l4/conf/Makeconf.boot<br />
** Virtualbox<br />
*** Go to obj-dir root<br />
*** Call 'make vbox E=entry'<br />
*** You need a configuration virtual machine in vbox for that to work. Check l4/conf/Makeconf.boot.example to see how to configuration vbox specifics.<br />
** You may omit the E=entry which will present you a menu to choose the entry to generate/start from.<br />
<br />
== Miscellaneous How-Tos ==<br />
<br />
* [[gcc-stack|stacking colorgcc, ccache, distcc, and gcc]]<br />
<br />
== Old L4Env Components ==<br />
<br />
* [[Dice IDL compiler]]<br />
* [[L4Env]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=346HOWTOs2012-12-19T13:32:35Z<p>Adam: /* Running and using Fiasco and L4Re components */</p>
<hr />
<div>== Building Fiasco and L4Re components ==<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
* [[L4Linux]]<br />
* [[Quickstart]]<br />
<br />
== Introduction to Fiasco.OC and L4Re ==<br />
<br />
{| class="wikitable"<br />
|-<br />
! Topics !! colspan=2 | Material <br />
|-<br />
| Microkernels, Fiasco.OC, Threads || [http://os.inf.tu-dresden.de/~doebel/downloads/01-Intro.pdf Slides] || [http://www.youtube.com/watch?v=eKP-UzXOTEI YouTube]<br />
|-<br />
| IPC, Memory, L4Re || [http://os.inf.tu-dresden.de/~doebel/downloads/02-MemoryAndIPC.pdf Slides] || [http://www.youtube.com/watch?v=2eaBvRBSUUQ YouTube]<br />
|-<br />
| Library Reuse, Device Drivers, (Para-)virtualization || [http://os.inf.tu-dresden.de/~doebel/downloads/03-AdvancedComponents.pdf Slides] || [http://www.youtube.com/watch?v=UOrG7ychElI YouTube]<br />
|-<br />
|}<br />
<br />
== Running and using Fiasco and L4Re components ==<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 />
* Booting<br />
** [[GRUB]]<br />
*** Enhanced GRUB1 [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
**** This GRUB1 version is maintained. You can send patches.<br />
**** [[building patched grub]]<br />
*** [[menu.lst]]<br />
**** [[menu.lst-Examples]]<br />
*** [[GRUB2]]<br />
** Images<br />
*** Call 'make help' in the l4/ root directory to get a listing of possible image generation targets<br />
*** See l4/conf/Makeconf.boot.example for more information on customization<br />
*** u-boot:<br />
**** Call 'make uimage E=entry' to generate an uImage<br />
**** Load into u-boot (tftpboot, usb-stick, flash, ...)<br />
**** bootm ....<br />
*** ELF images: make elfimage E=name<br />
**** loadable with any loader that understand ELF (including GRUB, Lauterbach, ARM RVDS, QEmu)<br />
*** Raw images: make rawimage E=name<br />
**** copy into RAM at the start address, set PC to start address and run<br />
**** On ARM the images relocate itself to their linked address, i.e. they can be put anywhere in RAM (copying them to the right place will make booting faster of course).<br />
** Qemu<br />
*** Go to obj-dir root<br />
*** Call 'make qemu E=entry'<br />
*** For Qemu customization (esp. on ARM) see l4/conf/Makeconf.boot.example and add options to your l4/conf/Makeconf.boot<br />
** Virtualbox<br />
*** Go to obj-dir root<br />
*** Call 'make vbox E=entry'<br />
*** You need a configuration virtual machine in vbox for that to work. Check l4/conf/Makeconf.boot.example to see how to configuration vbox specifics.<br />
** You may omit the E=entry which will present you a menu to choose the entry to generate/start from.<br />
<br />
== Miscellaneous How-Tos ==<br />
<br />
* [[gcc-stack|stacking colorgcc, ccache, distcc, and gcc]]<br />
<br />
== Old L4Env Components ==<br />
<br />
* [[Dice IDL compiler]]<br />
* [[L4Env]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=265Quickstart2011-07-13T21:15:30Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re l4linux_requirements<br />
<br />
If you do not want to run L4Linux you may leave out ''l4linux_requirements'' in the above commands to get less.<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 (example for x86 target)<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux x86-native_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux<br />
<br />
When building for the ARM architecture, you need to add 'L4ARCH=arm CROSS_COMPILER=arm-linux-' to each make call, which modifies the above as follows:<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make L4ARCH=arm CROSS_COMPILE=arm-linux- O=/path/to/obj/l4linux arm_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make L4ARCH=arm CROSS_COMPILE=arm-linux- O=/path/to/obj/l4linux menuconfig<br />
$ make L4ARCH=arm CROSS_COMPILE=arm-linux- O=/path/to/obj/l4linux<br />
<br />
Remember that you need at least the ''l4linux_requirements'' subset of the L4Re packages to build L4Linux, as described above.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=IO/config&diff=262IO/config2011-06-19T15:34:14Z<p>Adam: </p>
<hr />
<div>= IO Configurations =<br />
<br />
The following shall list configurations for IO that are not so common and are thus not listed in the default configuration.<br />
<br />
* HPET in QEmu<br />
<br />
HPET => new Device()<br />
{<br />
.hid = "PNP0103";<br />
new-res Mmio(0xfed00000 .. 0xfedfffff, 0xc000);<br />
new-res Irq(3, 0);<br />
}</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=IO/config&diff=261IO/config2011-06-19T15:33:14Z<p>Adam: </p>
<hr />
<div>The following shall list configurations for IO that are not so common and are thus not listed in the default configuration.<br />
<br />
* HPET in QEmu<br />
<br />
HPET => new Device()<br />
{<br />
.hid = "PNP0103";<br />
new-res Mmio(0xfed00000 .. 0xfedfffff, 0xc000);<br />
new-res Irq(3, 0);<br />
}</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=TUDOS_Software_Components&diff=260TUDOS Software Components2011-06-19T15:32:07Z<p>Adam: </p>
<hr />
<div>The TUDOS operating system consists of several components:<br />
* The [[Fiasco]] microkernel<br />
* L4Re, the L4 runtime environment, a basic set of servers and libraries<br />
** [[IO]], platform and device management<br />
* [[DDE/DDEKit]], a device driver environment to reuse legacy drivers on L4<br />
* [[L4Linux]], a container for legacy applications</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Io&diff=259Io2011-06-19T15:31:36Z<p>Adam: moved Io to IO</p>
<hr />
<div>#REDIRECT [[IO]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=IO&diff=258IO2011-06-19T15:31:36Z<p>Adam: moved Io to IO</p>
<hr />
<div>IO is the component of L4Re that initializes and manages that hardware platform and handles devices.<br />
<br />
* [[IO/config]] IO configurations</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=IO/config&diff=257IO/config2011-06-19T15:31:06Z<p>Adam: Created page with " * HPET in QEmu HPET => new Device() { .hid = "PNP0103"; new-res Mmio(0xfed00000 .. 0xfedfffff, 0xc000); new-res Irq(3, 0); }"</p>
<hr />
<div><br />
* HPET in QEmu<br />
<br />
HPET => new Device()<br />
{<br />
.hid = "PNP0103";<br />
new-res Mmio(0xfed00000 .. 0xfedfffff, 0xc000);<br />
new-res Irq(3, 0);<br />
}</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=IO&diff=256IO2011-06-19T15:24:30Z<p>Adam: Created page with "IO is the component of L4Re that initializes and manages that hardware platform and handles devices. * IO/config IO configurations"</p>
<hr />
<div>IO is the component of L4Re that initializes and manages that hardware platform and handles devices.<br />
<br />
* [[IO/config]] IO configurations</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=TUDOS_Software_Components&diff=255TUDOS Software Components2011-06-19T15:21:25Z<p>Adam: </p>
<hr />
<div>The TUDOS operating system consists of several components:<br />
* The [[Fiasco]] microkernel<br />
* L4Re, the L4 runtime environment, a basic set of servers and libraries<br />
** [[io]], platform and device management<br />
* [[DDE/DDEKit]], a device driver environment to reuse legacy drivers on L4<br />
* [[L4Linux]], a container for legacy applications</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=User:XJuliaHarisonu&diff=254User:XJuliaHarisonu2011-06-16T17:31:57Z<p>Adam: </p>
<hr />
<div>Hello World!</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=252Quickstart2011-06-15T20:25:05Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re l4linux_requirements<br />
<br />
If you do not want to run L4Linux you may leave out ''l4linux_requirements'' in the above commands to get less.<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 (example for x86 target)<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux x86-x86_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux<br />
<br />
When building for the ARM architecture, you need to add 'L4ARCH=arm CROSS_COMPILER=arm-linux-' to each make call, which modifies the above as follows:<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make L4ARCH=arm CROSS_COMPILE=arm-linux- O=/path/to/obj/l4linux arm_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make L4ARCH=arm CROSS_COMPILE=arm-linux- O=/path/to/obj/l4linux menuconfig<br />
$ make L4ARCH=arm CROSS_COMPILE=arm-linux- O=/path/to/obj/l4linux<br />
<br />
Remember that you need at least the ''l4linux_requirements'' subset of the L4Re packages to build L4Linux, as described above.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux/configurations&diff=251L4Linux/configurations2011-06-15T13:26:11Z<p>Adam: /* UX */</p>
<hr />
<div>== Possible configurations for L4Linux ==<br />
<br />
=== Consoles ===<br />
<br />
Basically two modes are possible:<br />
* Direct access<br />
** In this mode L4Linux will drive the keyboard and mouse controller and will control the screen (e.g. VGA). And only L4Linux will do that, no one else. For the configuration of L4Linux this means that one needs to enable the keyboard and mouse controller driver and the VGA driver.<br />
* mag/l4con/DOpe consoles<br />
** For console use, the mag, l4con or DOpE is controlling the keyboard and mouse controller and the screen. And only mag/l4con/DOpE is controlling the keyboard/mouse/screen. No one else. For the configuration of L4Linux this means that L4Linux does not need any keyboard/mouse driver nor any VGA driver. It _just_ needs the l4fb driver (which also does input handling).<br />
<br />
=== Device Access ===<br />
<br />
Device access requires that ''io'' allows L4Linux to access those devices. For more information on ''io'' please read on [http://os.inf.tu-dresden.de/L4Re/doc/io.html here].<br />
<br />
Using the x86 architecture, ''io'' uses ACPI and PCI scans the system to find available devices. Legacy components are described in the x86-legacy.devs configuration file found in l4/pkg/io/configs/x86-legacy.devs. A client configuration for L4Linux could look like this:<br />
<br />
l4lx => new System_bus()<br />
{<br />
# add every found network, storage and multimedia (e.g. sound-card) device<br />
pci_l4x[] => wrap(hw-root.match("PCI/CC_02,PCI/CC_01,PCI/04"));<br />
}<br />
<br />
Make sure to enable the 'L4 virtual PCI bus' in the L4Linux configuration.<br />
<br />
If you like to give Linux access to VGA and PS2, add the following the above ''l4lx'' block:<br />
vgadev => wrap(hw-root.VGA);<br />
ps2dev => wrap(hw-root.PS2);<br />
<br />
Launch ''io'' with both files as arguments:<br />
rom/io rom/x86-legacy.devs rom/l4lx.io<br />
<br />
=== UX ===<br />
<br />
To run L4Linux under Fiasco-UX, the L4Linux does not have any access to any hardware. This basically means the following:<br />
* Disable PCI<br />
* Disable Keyboard/Mouse (PS2) input<br />
* Disable VGA/VESA/etc.<br />
* Do not use serial drivers or similar<br />
<br />
For Input/Output you need to use a console setup, see above.<br />
<br />
When you start it and it crashes (Ooops), look at the backtrace to see the driver that is trying to access some hardware. Then disable this driver and try again.<br />
<br />
There's a default config 'x86-ux_defconfig' which is a configuration without hardware drivers.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux/build&diff=250L4Linux/build2011-06-15T13:25:06Z<p>Adam: </p>
<hr />
<div>Quick build instructions. Note that L4Linux uses the normal Linux build system.<br />
<br />
~$ cd l4linux<br />
l4linux$ mkdir /tmp/buildpath<br />
l4linux$ make O=/tmp/buildpath x86-ux_defconfig<br />
<br />
Set proper path to L4 build directory.<br />
<br />
l4linux$ make O=/tmp/buildpath menuconfig<br />
<br />
Build<br />
<br />
l4linux$ make O=/tmp/buildpath<br />
<br />
<br />
Building L4Linux for ARM:<br />
$ cd l4linux<br />
l4linux$ mkdir /tmp/buildpath<br />
l4linux$ make O=/tmp/buildpath L4ARCH=arm CROSS_COMPILE=arm-linux- arm_defconfig<br />
l4linux$ make O=/tmp/buildpath L4ARCH=arm CROSS_COMPILE=arm-linux- menuconfig<br />
l4linux$ make O=/tmp/buildpath L4ARCH=arm CROSS_COMPILE=arm-linux-</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux/build&diff=249L4Linux/build2011-06-15T13:24:28Z<p>Adam: </p>
<hr />
<div>Quick build instructions.<br />
<br />
~$ cd l4linux<br />
l4linux$ mkdir /tmp/buildpath<br />
l4linux$ make O=/tmp/buildpath x86-ux_defconfig<br />
<br />
Set proper path to L4 build directory.<br />
<br />
l4linux$ make O=/tmp/buildpath menuconfig<br />
<br />
Build<br />
<br />
l4linux$ make O=/tmp/buildpath<br />
<br />
<br />
Building L4Linux for ARM:<br />
$ cd l4linux<br />
l4linux$ mkdir /tmp/buildpath<br />
l4linux$ make O=/tmp/buildpath L4ARCH=arm CROSS_COMPILE=arm-linux- arm_defconfig<br />
l4linux$ make O=/tmp/buildpath L4ARCH=arm CROSS_COMPILE=arm-linux- menuconfig<br />
l4linux$ make O=/tmp/buildpath L4ARCH=arm CROSS_COMPILE=arm-linux-</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=248Quickstart2011-06-15T13:18:49Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re l4linux_requirements<br />
<br />
If you do not want to run L4Linux you may leave out ''l4linux_requirements'' in the above commands to get less.<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 (example for x86 target)<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux x86-x86_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux<br />
<br />
When building for the ARM architecture, you need to add 'L4ARCH=arm CROSS_COMPILER=arm-linux-' to each make call, which modifies the above as follows:<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux arm_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux menuconfig<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux<br />
<br />
Remember that you need at least the ''l4linux_requirements'' subset of the L4Re packages to build L4Linux, as described above.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=247Quickstart2011-06-15T13:13:42Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re l4linux_requirements<br />
<br />
If you do not want to run L4Linux you may leave out ''l4linux_requirements'' in the above commands to get less.<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux<br />
<br />
When building for the ARM architecture, you need to add 'L4ARCH=arm CROSS_COMPILER=arm-linux-' to each make call, which modifies the above as follows:<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux menuconfig<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux<br />
<br />
Remember that you need at least the ''l4linux_requirements'' subset of the L4Re packages to build L4Linux, as described above.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=246Quickstart2011-06-15T12:49:24Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re l4linux_requirements<br />
<br />
If you do not want to run L4Linux you may leave out ''l4linux_requirements'' in the above commands to get less.<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux<br />
<br />
When building for the ARM architecture, you need to add 'L4ARCH=arm CROSS_COMPILER=arm-linux-' to each make call, which modifies the above as follows:<br />
<br />
$ cd /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux menuconfig<br />
$ make L4ARCH=arm CROSS_COMPILER=arm-linux- O=/path/to/obj/l4linux</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Getting_TUDOS&diff=240Getting TUDOS2011-02-02T22:09:25Z<p>Adam: </p>
<hr />
<div>TUDOS sources are available as snapshot releases and via SVN.<br />
If you just want to play around, you can download the [http://demo.tudos.org/eng_download.html Live CD].<br />
<br />
The software consists of multiple components:<br />
* The kernel [http://os.inf.tu-dresden.de/fiasco/download.html Fiasco.OC]<br />
* The [http://os.inf.tu-dresden.de/L4Re/download.html L4Re runtime environment] running on top of Fiasco.OC<br />
* An optional paravirtualized Linux: [http://l4linux.org/download.shtml L4Linux]<br />
<br />
The runtime environment L4Re itself consists of many packages that implement various functionality and depend on each other. The check-out mechanism makes sure that all required packages are downloaded.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Main_Page&diff=239Main Page2011-02-02T22:01:19Z<p>Adam: </p>
<hr />
<div>__NOTOC__<br />
= TUD:OS Wiki =<br />
<br />
=== Introductions ===<br />
* [[What is L4]]? <br />
* [[What is TUDOS]]?<br />
<br />
=== Using TUDOS ===<br />
* [[Getting TUDOS]]<br />
* [[HOWTOs]] around TUDOS<br />
* [[TUDOS in action]]<br />
<br />
=== Programming TUDOS ===<br />
* [[Programming]] on TUDOS<br />
* [[TUDOS Software Components]]<br />
* [[Reporting Bugs]]<br />
<br />
<br />
=== Links and References ===<br />
* [[Links/References]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=238Quickstart2011-02-02T21:58:14Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re l4linux_requirements<br />
<br />
If you do not want to run L4Linux you may leave out ''l4linux_requirements'' in the above commands to get less.<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=237Quickstart2011-02-02T21:55:51Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re<br />
<br />
If you intend to run L4Linux, you need to get some more. So use this:<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re l4linux_requirements<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux x86-ux_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Quickstart&diff=236Quickstart2011-01-24T15:29:03Z<p>Adam: </p>
<hr />
<div>Quick guide to get the system compiled, without much explanation.<br />
<br />
* Get the sources<br />
<br />
$ cd /somedir/tudos<br />
$ svn cat http://svn.tudos.org/repos/oc/tudos/trunk/repomgr | perl - init http://svn.tudos.org/repos/oc/tudos fiasco l4re<br />
<br />
* L4Re: Create a build directory, configure and build<br />
<br />
$ mkdir -p /path/to/obj/tudos<br />
$ cd /somedir/tudos/src/l4<br />
$ make O=/path/to/obj/tudos oldconfig<br />
$ make O=/path/to/obj/tudos -j2<br />
<br />
* Fiasco: Create build directory, configure and build<br />
<br />
$ cd /somedir/tudos/src/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 /somedir/tudos<br />
$ svn co http://svn.tudos.org/repos/oc/l4linux/trunk l4linux<br />
$ cd l4linux<br />
$ make O=/path/to/obj/l4linux x86-ux_defconfig<br />
# In the menu, in "L4Linux configuration", set "L4 tree build directory" to /path/to/obj/tudos<br />
$ make O=/path/to/obj/l4linux menuconfig<br />
$ make O=/path/to/obj/l4linux</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=235HOWTOs2011-01-09T14:15:43Z<p>Adam: /* Running and using Fiasco and L4Re components */</p>
<hr />
<div>== Building Fiasco and L4Re components ==<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
* [[L4Linux]]<br />
* [[Quickstart]]<br />
<br />
== Running and using Fiasco and L4Re components ==<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 />
* Booting<br />
** [[GRUB]]<br />
*** [[building patched grub]]<br />
*** [[menu.lst]]<br />
**** [[menu.lst-Examples]]<br />
*** Enhanced GRUB1 [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
**** This grub1 version is maintained. You can send patches.<br />
*** [[GRUB2]]<br />
** Images<br />
*** Call 'make help' in the l4/ root directory to get a listing of possible image generation targets<br />
*** See l4/conf/Makeconf.boot.example for more information on customization<br />
*** u-boot:<br />
**** Call 'make uimage E=entry' to generate an uImage<br />
**** Load into u-boot (tftpboot, usb-stick, flash, ...)<br />
**** bootm ....<br />
*** ELF images: make elfimage E=name<br />
**** loadable with any loader that understand ELF (including GRUB, Lauterbach, ARM RVDS, QEmu)<br />
*** Raw images: make rawimage E=name<br />
**** copy into RAM at the start address, set PC to start address and run<br />
**** On ARM the images relocate itself to their linked address, i.e. they can be put anywhere in RAM (copying them to the right place will make booting faster of course).<br />
** Qemu<br />
*** Go to obj-dir root<br />
*** Call 'make qemu E=entry'<br />
*** For Qemu customization (esp. on ARM) see l4/conf/Makeconf.boot.example and add options to your l4/conf/Makeconf.boot<br />
** Virtualbox<br />
*** Go to obj-dir root<br />
*** Call 'make vbox E=entry'<br />
*** You need a configuration virtual machine in vbox for that to work. Check l4/conf/Makeconf.boot.example to see how to configuration vbox specifics.<br />
** You may omit the E=entry which will present you a menu to choose the entry to generate/start from.<br />
<br />
== Miscellaneous How-Tos ==<br />
<br />
* [[gcc-stack|stacking colorgcc, ccache, distcc, and gcc]]<br />
<br />
== Old L4Env Components ==<br />
<br />
* [[Dice IDL compiler]]<br />
* [[L4Env]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux&diff=232L4Linux2010-12-13T19:50:42Z<p>Adam: </p>
<hr />
<div>L4Linux is a port of the Linux kernel to L4, running as a normal user program besides other applications.<br />
<br />
The following pages are available:<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/download.shtml Download]<br />
* [[L4Linux/configurations]]<br />
* [[L4Linux/build]] Quick build instruction<br />
* [[L4Linux/options]] Generic runtime options available <br />
* [[L4Linux/shmnet]] How to use the l4shmnet driver<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux] Website<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux&diff=231L4Linux2010-12-13T19:49:08Z<p>Adam: </p>
<hr />
<div>L4Linux is a port of the Linux kernel to L4, running as a normal user program besides other applications.<br />
<br />
The following pages are available:<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/download.shtml Download]<br />
* [[L4Linux/configurations]]<br />
* [[L4Linux/build]]<br />
* [[L4Linux/options]]<br />
* [[L4Linux/shmnet]]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/ L<sup>4</sup>Linux] Website<br />
** [http://os.inf.tu-dresden.de/L4/LinuxOnL4/build-2.6.shtml Build instructions]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux/shmnet&diff=230L4Linux/shmnet2010-12-13T19:48:41Z<p>Adam: Created page with "== L4Linux shared memory network == The driver '''l4shmnet''' can connect two L4Linuxes, providing network interfaces and using a shared memory to exchange data. To use the driv..."</p>
<hr />
<div>== L4Linux shared memory network ==<br />
<br />
The driver '''l4shmnet''' can connect two L4Linuxes, providing network interfaces and using a shared memory to exchange data. To use the driver to make sure to include in your L4Linux build, it's available under that L4Linux/stub drivers menu.<br />
<br />
For the first Linux add as a kernel parameter:<br />
l4shmnet.add=shmns,macpart=1,create<br />
<br />
For the second add as a kernel parameter:<br />
l4shmnet.add=shmns,macpart=2<br />
<br />
In the start script, add:<br />
<br />
local shmns = L4.default_loader:create_namespace({ shm = "placeholder" });<br />
<br />
and add '''shmns''' with '''rw''' rights to both L4Linuxes:<br />
<br />
caps = { .... , shmns = shmns:mode("rw"), .... }<br />
<br />
When starting the Linuxes you should see a ethX in each instance running. Add (different) IPs and pinging should work.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=229HOWTOs2010-11-24T21:49:57Z<p>Adam: /* Running and using Fiasco and L4Re components */</p>
<hr />
<div>== Building Fiasco and L4Re components ==<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
* [[L4Linux]]<br />
* [[Quickstart]]<br />
<br />
== Running and using Fiasco and L4Re components ==<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 />
** [[building patched grub]]<br />
** [[menu.lst]]<br />
*** [[menu.lst-Examples]]<br />
** Enhanced GRUB1 [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
*** This grub1 version is maintained. You can send patches.<br />
** [[GRUB2]]<br />
<br />
== Miscellaneous How-Tos ==<br />
<br />
* [[gcc-stack|stacking colorgcc, ccache, distcc, and gcc]]<br />
<br />
== Old L4Env Components ==<br />
<br />
* [[Dice IDL compiler]]<br />
* [[L4Env]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Building_patched_grub&diff=228Building patched grub2010-11-24T21:46:19Z<p>Adam: Diff name fix</p>
<hr />
<div>This is just a small howto for building a grub with Adam's patches. Although this information is also inside the <tt>README</tt>'s, the wiki seems to be the first place where folks might look at. Here we go:<br />
<br />
* create directory and cd into it<br />
mkdir ./grub<br />
cd grub<br />
<br />
* download the grub source package and Adam's latest patches<br />
wget ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz<br />
wget http://os.inf.tu-dresden.de/~adam/grub/0.97/grub-0.97-os.8.diff.gz<br />
<br />
* unpack sources and apply patches<br />
tar xzf grub-0.97.tar.gz<br />
cd grub-0.97<br />
zcat ../grub-0.97-os.8.diff.gz | patch -p0<br />
<br />
* configure and build patched grub (choose the NIC that fits your needs, <tt>./configure --help</tt> lists them)<br />
./configure --enable-diskless --enable-pxe (--enable-rtl8139) (--enable-eepro100) (--enable-...)<br />
make<br />
<br />
* the final <tt>pxegrub</tt> binary can be found in <tt>stage2/pxegrub</tt></div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=HOWTOs&diff=227HOWTOs2010-11-24T21:45:24Z<p>Adam: </p>
<hr />
<div>== Building Fiasco and L4Re components ==<br />
<br />
* [[Prerequisites]]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco]<br />
* [[L4Linux]]<br />
* [[Quickstart]]<br />
<br />
== Running and using Fiasco and L4Re components ==<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 />
** [[building patched grub]]<br />
** [[menu.lst]]<br />
*** [[menu.lst-Examples]]<br />
** Enhanced GRUB1 [http://os.inf.tu-dresden.de/~adam/grub/ patches]<br />
*** This grub1 version is maintained. You can send patches.<br />
** [[GRUB2]]<br />
* bootstrap<br />
** modi<br />
* Fiasco + hello<br />
* L<sup>4</sup>Linux<br />
* graphics modes<br />
* loader<br />
* network<br />
<br />
== Miscellaneous How-Tos ==<br />
<br />
* [[gcc-stack|stacking colorgcc, ccache, distcc, and gcc]]<br />
<br />
== Old L4Env Components ==<br />
<br />
* [[Dice IDL compiler]]<br />
* [[L4Env]]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Gcc-stack&diff=226Gcc-stack2010-11-24T21:26:11Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Ron</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>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Env&diff=225L4Env2010-11-24T21:26:05Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</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 />
* [http://os.inf.tu-dresden.de/l4env/doc/html/thread/index.html L4 Threads]: thread startup and termination, thread-local storage<br />
* [[Task server]] / [[hierarchical task interface]]: task startup and termination<br />
* [[Dataspace Managers]]: memory management (pager, malloc, free)<br />
** dm_generic<br />
** dm_mem<br />
** [http://os.inf.tu-dresden.de/l4env/doc/html/dm_phys/index.html dm_phys]<br />
* System bootup services (bootstrap, roottask, etc.)<br />
* [http://os.inf.tu-dresden.de/l4env/doc/html/names/index.html Names]: basic name service<br />
* Dynamic application startup (loader, ldso, tftp, bmodfs)<br />
* [[LibC | 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 like [[Qt | Qt3]]<br />
* console system: l4con<br />
* basic window manager: [[Nitpicker]], [[DOpE]]<br />
* signal: POSIX signalling mechanism<br />
<br />
===What it does not provide===<br />
<br />
* pthread library<br />
* full file system support<br />
* a full POSIX system<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>Adamhttps://wiki.tudos.org/ikiw/index.php?title=DDE/DDEKit&diff=224DDE/DDEKit2010-11-24T21:25:58Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</p>
<hr />
<div>== Overview ==<br />
<br />
Device drivers are an essential element in every operating system, because without them no interaction with the external world is possible. Because of the huge range of available devices, implementing L4 device drivers for even the most common devices on the market would be a tedious job. To circumvent this problem and support a wide range of devices on L4, we designed DDE, the '''D'''evice '''D'''river '''E'''nvironment. Aim of this project is to provide legacy device driver interfaces, so that the large amount of readily available device drivers for other operating systems (such as Linux and BSD) can be reused on L4 with few effort.<br />
<br />
DDE consists of three layers:<br />
# '''DDEKit''' is a glue layer between the [[L4Re]] and the higher device driver layers.<br />
# '''DDE''<someOS>''''' implement OS-specific environments for every supported OS.<br />
# '''native device drivers''' are not modified and simply linked against the DDE/DDEKit libraries and extended with a little server code in order to export their interface to other L4 applications.<br />
<br />
== DDEKit ==<br />
<br />
Even though running inside different operating system environments, drivers usually make use of a certain functionality. DDEKit provides such functionality and therefore relies on L4Re services being available. The mechanisms implemented by DDEKit are:<br />
<br />
* Device resource management<br />
** Interrupts<br />
** I/O ports (x86-specific)<br />
** I/O memory<br />
** Access to the PCI config space<br />
* Memory Management<br />
** Memory allocation<br />
** Mapping of virtual to physical addresses<br />
* Threads<br />
** Management of threads<br />
** Synchronization mechanisms<br />
*** Locks<br />
*** Semaphores<br />
*** Condition variables<br />
** Thread-local storage<br />
* Utilities<br />
** Initcalls<br />
** printf(), panic()<br />
<br />
<br />
The purpose of DDEKit is to provide a common interface to this functionality, so that implementing DDEs for different legacy operating systems becomes easier due to code reuse.<br />
<br />
== OS-Specific Environments ==<br />
<br />
Based on DDEKit, it is possible to build OS-specific device driver environments and thus reuse drivers from a legacy OS on top of L4. Additionally, it is even possible, to use DDEs to reuse complete software stacks (such as an IP stack).<br />
<br />
<br />
=== DDE/Linux2.6 ===<br />
DDE/Linux2.6 is an environment for Linux 2.6 device drivers on L4. Basically, it is a set of libraries implementing interfaces to certain subsystems of the Linux kernel, so that the programmer may chose which parts of the kernel are needed for reusing a special device driver (e.g., network drivers don't need block layer functionality). Currently, the following subsystems are available:<br />
<br />
* '''Core''' (libdde_linux26) provides functions that are essential to (nearly) all drivers. This includes for instance memory management, I/O resource management, workqueues, softirqs, and timers.<br />
* '''Net''' (libdde_linux26_net) provides network-related functions such as management of socket buffers.<br />
* '''Block''' (libdde_linux26_block) provides functions related to the Linux block layer such as a file system buffer abstraction, I/O schedulers, block I/O descriptors (BIOs).<br />
* '''USB''' (libdde_linux26_usb) implements USB-related functions which enable drivers to use the Linux USB core as well as USB host controllers. This is work in progress.<br />
* '''Sound''' (libdde_linux26_sound) includes the Linux sound core which is the base for implementing sound subsystems such as OSS and Alsa. This is work in progress.<br />
<br />
Work USB and Sound support libraries is ongoing.<br />
<br />
<br />
=== DDE/FBSD ===<br />
<br />
== Applications using DDE/DDEKit ==<br />
=== Flips - the '''Fl'''exible '''IP S'''tack ===<br />
[[Flips]] is a port of the Linux 2.4 IP stack to L4 using DDE. Network devices are accessed through the [[ORe]] ethernet switch.<br />
<br />
<br />
=== ORe - a software ethernet switch ===<br />
[[ORe]] is a software ethernet switch. Clients are assigned a dedicated MAC and then the ethernet interface is multiplexed for all of them. Incoming packets are routed to the correct client, sending outgoing packets is serialized between clients.<br />
<br />
<br />
=== Windhoek - the L4 block device server ===<br />
[[DDE::Windhoek | Windhoek]] is a block device server. It currently uses the deprecated Linux IDE code to driver IDE hard disks. Porting it to use the newer libATA is on the TODO list, so that it will finally also support SCSI and USB storage devices through a common interface.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Getting_TUDOS&diff=223Getting TUDOS2010-11-24T21:25:51Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</p>
<hr />
<div>TUDOS sources are available as snapshot releases and via SVN. If you just want to play around, you can download the [http://demo.tudos.org/eng_download.html Live CD].<br />
<br />
== SVN and Snapshots ==<br />
<br />
[http://os.inf.tu-dresden.de/L4Re/download.html L4Re Downloads]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=DDE::ORe&diff=222DDE::ORe2010-11-24T21:25:47Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by BjoernD</p>
<hr />
<div>== Overview ==<br />
In L4-based systems it is quite common to have multiple applications trying to use the same resource in parallel. One might for instance imagine a setup where multiple L4Linux servers run and try to use the computer's physical network interface. In such cases, the physical resource needs to be multiplexed (or ''virtualized'' in new-age termini).<br />
<br />
ORe (short for '''O'''shkosh '''Re'''surrection) is a best-effort ethernet multiplexer for L4. It provides an abstract send/receive interface for network packets and makes sure that every client gets only those packets it wants to receive. This is achieved by assigning each client a virtual MAC address and filtering packets accordingly.<br />
<br />
== Running ORe ==<br />
=== Arping client ===<br />
The most fundamental ORe example is a client listening for and replying to ARP-based ping packets (such as those sent by the [http://www.habets.pp.se/synscan/programs.php?prog=arping arping tool]). To do so in Qemu, you need a menu.lst such as this:<br />
<br />
title ORe<br />
kernel /bootstrap -serial -modaddr 0x2000000<br />
module /fiasco -serial_esc -comspeed 115200 -comport 1 -nokdb -jdb_cmd=JH<br />
module /sigma0<br />
module /roottask<br />
module /names<br />
module /dm_phys<br />
module /log<br />
module /l4io<br />
module /ore<br />
module /ore_test_arping<br />
<br />
Then we run Qemu with a tun/tap network setup:<br />
<br />
$> qemu -cdrom image.iso -serial stdio -net nic,model=rtl8139,vlan=0 -net tap,vlan=0 -m 200<br />
<br />
''image.iso'' is the image containing your L4 binaries, the ''net'' options say that we want to emulate a RealTek RTL8139 network card and connect it to VLAN0, which is also connected to the TAP device. Qemu starts running and we get some output, in the end the arping client comes up:<br />
<br />
ore | main(): initialized DDELinux2.6<br />
ore | main(): loopback: 0<br />
ore | <6>device lo entered promiscuous mode<br />
ore | <6>device eth0 entered promiscuous mode<br />
ore | <6>eth0: link up, 100Mbps, full-duplex, lpa 0x05E1<br />
ore | main(): Initialized 2 network devices.<br />
ore | Device = lo, IRQ = 0, MAC = 00:00:00:00:00:00<br />
ore | Device = eth0, IRQ = 11, MAC = 52:54:00:12:34:56<br />
ore | main(): Registering 'ORe' at names...<br />
ore | main(): Ready for service.<br />
arping | ore_lookup_server(): ORe server ORe = 9.02<br />
arping | ore_do_open(): called<br />
ore | __init_mac(): MAC = 04:EA:43:01:96:09<br />
arping | ore_do_open(): opened. worker = 9.08<br />
arping | main(): opened eth0: 0 for '''04:EA:43:01:96:09'''<br />
arping | main(): ORe handle = 0<br />
arping | main(): got send area: 0x00600008<br />
<br />
The initial messages from ORe show devices being initialized (loopback ''lo'' and the NIC ''eth0''). Arping then finds the ORe server and establishes a connection. The interesting part is the '''bold''' one - ORe assigns arping a pseudo-MAC-address 04:EA:43:01:96:09 - this is the one we are going to use now. In another shell, we start arping and tell it to use the tap interface ''tap0'' to ping above MAC:<br />
<br />
./arping -i tap0 04:EA:43:01:96:09 -w 100 -c 10000<br />
60 bytes from 255.255.255.255 (04:ea:43:01:96:09): icmp_seq=9914 time=823.021 usec<br />
60 bytes from 255.255.255.255 (04:ea:43:01:96:09): icmp_seq=9915 time=851.154 usec<br />
60 bytes from 255.255.255.255 (04:ea:43:01:96:09): icmp_seq=9916 time=771.046 usec<br />
...<br />
<br />
== Using ORe from your application ==<br />
=== Prerequisites ===<br />
To successfully establish a network connection with ORe, you need the following applications running in addition to the basic L4 stuff you'll be running anyway:<br />
* the ORe server<br />
* L4IO<br />
Optionally you might want to run the Events server so that ORe can obtain termination messages from its clients and can cleanly close connections in that case.<br />
<br />
=== Connecting to the server ===<br />
<br />
=== Connection configuration ===<br />
<br />
=== Sending and receiving packets ===<br />
<br />
== ORe and L4Linux ==<br />
There is an ORe stub driver for L4Linux.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Prerequisites&diff=221Prerequisites2010-11-24T21:25:42Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</p>
<hr />
<div>===Human Requirements===<br />
<br />
Users using the system should know the following:<br />
* Basic understanding of a Linux based system for software development<br />
* How to work with a shell<br />
* Know what gcc is<br />
* What make is and how it's used<br />
* Understand the english language<br />
* For L4Linux: Know how to configure and compile the Linux kernel<br />
* Have a basic understanding on how an L4 system works, which components are involved and how they play together<br />
<br />
===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 and g++<br />
* make<br />
* perl<br />
* gawk<br />
* libcurses-dev<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>Adamhttps://wiki.tudos.org/ikiw/index.php?title=GRUB2&diff=220GRUB22010-11-24T21:25:38Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</p>
<hr />
<div>== GRUB2 ==<br />
<br />
GRUB2 uses a different configuration file syntax. The following boots the famous 'Hello World'.<br />
<br />
menuentry "L4 hello" {<br />
multiboot /bootstrap -serial<br />
module /fiasco /fiasco -serial_esc<br />
module /sigma0 /sigma0<br />
module /roottask /roottask <br />
module /hello /hello<br />
}</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux/configurations&diff=219L4Linux/configurations2010-11-24T21:25:34Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</p>
<hr />
<div>== Possible configurations for L4Linux ==<br />
<br />
=== Consoles ===<br />
<br />
Basically two modes are possible:<br />
* Direct access<br />
** In this mode L4Linux will drive the keyboard and mouse controller and will control the screen (e.g. VGA). And only L4Linux will do that, no one else. For the configuration of L4Linux this means that one needs to enable the keyboard and mouse controller driver and the VGA driver.<br />
* mag/l4con/DOpe consoles<br />
** For console use, the mag, l4con or DOpE is controlling the keyboard and mouse controller and the screen. And only mag/l4con/DOpE is controlling the keyboard/mouse/screen. No one else. For the configuration of L4Linux this means that L4Linux does not need any keyboard/mouse driver nor any VGA driver. It _just_ needs the l4fb driver (which also does input handling).<br />
<br />
=== Device Access ===<br />
<br />
Device access requires that ''io'' allows L4Linux to access those devices. For more information on ''io'' please read on [http://os.inf.tu-dresden.de/L4Re/doc/io.html here].<br />
<br />
Using the x86 architecture, ''io'' uses ACPI and PCI scans the system to find available devices. Legacy components are described in the x86-legacy.devs configuration file found in l4/pkg/io/configs/x86-legacy.devs. A client configuration for L4Linux could look like this:<br />
<br />
l4lx => new System_bus()<br />
{<br />
# add every found network, storage and multimedia (e.g. sound-card) device<br />
pci_l4x[] => wrap(hw-root.match("PCI/CC_02,PCI/CC_01,PCI/04"));<br />
}<br />
<br />
Make sure to enable the 'L4 virtual PCI bus' in the L4Linux configuration.<br />
<br />
If you like to give Linux access to VGA and PS2, add the following the above ''l4lx'' block:<br />
vgadev => wrap(hw-root.VGA);<br />
ps2dev => wrap(hw-root.PS2);<br />
<br />
Launch ''io'' with both files as arguments:<br />
rom/io rom/x86-legacy.devs rom/l4lx.io<br />
<br />
=== UX ===<br />
<br />
To run L4Linux under Fiasco-UX, the L4Linux does not have any access to any hardware. This basically means the following:<br />
* Disable PCI<br />
* Disable Keyboard/Mouse (PS2) input<br />
* Disable VGA/VESA/etc.<br />
* Do not use serial drivers or similar<br />
<br />
For Input/Output you need to use a console setup, see above.<br />
<br />
When you start it and it crashes (Ooops), look at the backtrace to see the driver that is trying to access some hardware. Then disable this driver and try again.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=QEmu&diff=218QEmu2010-11-24T21:25:29Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by BjoernD</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 />
====Note for ubuntu users:====<br />
<br />
If you are using ubuntu as your host OS, you may don't have the pxe binaries installed.<br />
If so, you may want to download them from the svn repository:<br />
<br />
wget -O pxe-ne2k_pci.bin http://svn.savannah.gnu.org/viewvc/*checkout*/trunk/pc-bios/pxe-ne2k_pci.bin?root=qemu<br />
wget -O pxe-rtl8139.bin http://svn.savannah.gnu.org/viewvc/*checkout*/trunk/pc-bios/pxe-rtl8139.bin?root=qemu<br />
wget -O pxe-e1000.bin http://svn.savannah.gnu.org/viewvc/*checkout*/trunk/pc-bios/pxe-e1000.bin?root=qemu<br />
sudo mv pxe*.bin /ush/share/qemu/<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<br />
<br />
<br />
===Network configuration===<br />
<br />
Here comes a (bit more complex) Qemu sample configuration (a bit Debian/Ubuntu specific) which demonstrates one of its network facilities. Let's assume<br />
the following configuration: you got a physical network interface (eth1) in your host pc which you want to connect to your guest OS.<br />
Furthermore, you still want to be able to use Qemu's built-in tftp server. This can be achieved by using a software bridge (bridged networking).<br />
*create a configuration for the software bridge (e.g. in <tt>/etc/network/interfaces</tt>):<br />
<br />
auto br0<br />
iface br0 inet static<br />
address 192.168.1.1<br />
network 192.168.1.0 <br />
netmask 255.255.255.0<br />
bridge_ports eth1<br />
bridge_fd 9 <br />
bridge_hello 2 <br />
bridge_maxage 12 <br />
bridge_stp off<br />
<br />
This creates a bridge called br0 and automatically adds interface eth1 to that bridge (seconds interface comes later). The addresses should differ from your normal network configuration (e.g. <tt>eth0</tt>).<br />
<br />
* adopt the sudo config file (e.g. <tt>/etc/sudoers</tt>)<br />
<br />
# Cmnd alias specification<br />
Cmnd_Alias QEMU=/sbin/ifconfig, \<br />
/sbin/modprobe, \<br />
/usr/sbin/brctl<br />
# User privilege specification<br />
root ALL=(ALL) ALL<br />
# Members of the admin group may gain root privileges<br />
%admin ALL=(ALL) ALL<br />
$username$ ALL=NOPASSWD: QEMU<br />
<br />
* now adopt your qemu-ifup script (e.g. <tt>/etc/qemu-ifup</tt>)<br />
<br />
#!/bin/sh<br />
echo "Executing /etc/qemu-ifup"<br />
echo "Bringing up $1 for bridged mode..."<br />
sudo /sbin/ifconfig $1 0.0.0.0 promisc up<br />
echo "Adding $1 to br0..."<br />
sudo /usr/sbin/brctl addif br0 $1<br />
<br />
This scripts gets called by Qemu and dynamically adds the tun interface to the bridge.<br />
<br />
* now, starting Qemu with the following command should give the guest OS access to eth1 as well as to the internal tftp-server<br />
<br />
qemu -serial stdio -m 256 -tftp /l4/ -bootp /tftp/pxegrub -boot n -net user -net nic,model=rtl8139,macaddr=00:11:22:33:44:55 -net tap,ifname=qtap0</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Links/References&diff=217Links/References2010-11-24T21:25:25Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</p>
<hr />
<div>=== Links and other references on L4 and TUDOS ===<br />
<br />
* [http://os.inf.tu-dresden.de/L4/ general L4 website]<br />
* [http://l4hq.org/ L4HQ]<br />
* [http://os.inf.tu-dresden.de/fiasco/ Fiasco ยต-kernel], [http://os.inf.tu-dresden.de/fiasco/ux.html Fiasco on Linux]<br />
* [http://os.inf.tu-dresden.de/L4Re/ L4Re]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4 L<sup>4</sup>Linux]<br />
* [http://l4ka.org/ L4KA]<br />
* [http://en.wikipedia.org/wiki/L4 Wikipedia]<br />
* [http://os.inf.tu-dresden.de/L4Re/doc/ L4Re API Documentation]<br />
<br />
=== Mailing lists ===<br />
<br />
* [http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers L4-Hackers] mailing list</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=DDE::Flips&diff=216DDE::Flips2010-11-24T21:25:18Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by BjoernD</p>
<hr />
<div>== Overview ==<br />
<br />
FLIPS, FLexible IP-Stack for TUDOS, provides the standard BSD-socket interface to clients<br />
and is thereby a full featured TCP/IP network stack supporting TCP, UDP and NETLINK for<br />
configuration. FLIPS is based on unmodified Linux 2.4.34.4 sources and requires<br />
[[ORe]] as network driver service.<br />
<br />
== Running Flips ==<br />
=== with DHCP ===<br />
title FLIPS with DHCP<br />
kernel /bin/bootstrap<br />
modaddr 0x02000000<br />
module /bin/fiasco<br />
module /bin/sigma0<br />
module /bin/roottask<br />
module /bin/names<br />
module /bin/dm_phys<br />
module /bin/l4io<br />
module /bin/ore<br />
module /bin/flips-ore --dhcp<br />
<br />
=== without DHCP ===<br />
title FLIPS without DHCP<br />
kernel /bin/bootstrap<br />
modaddr 0x02000000<br />
module /bin/fiasco<br />
module /bin/sigma0<br />
module /bin/roottask<br />
module /bin/names<br />
module /bin/dm_phys<br />
module /bin/l4io<br />
module /bin/ore<br />
module /bin/name_server<br />
module /bin/mini_ifconfig -n eth0 172.20.0.10 255.255.0.0 172.20.0.1 -n lo 127.0.0.1 255.255.255.255<br />
module /bin/flips-ore</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=TUDOS_in_action&diff=215TUDOS in action2010-11-24T21:25:05Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by Adam</p>
<hr />
<div>=== Screenshots of TUDOS in action ===<br />
<br />
* [http://os.inf.tu-dresden.de/L4Re/screens.html L4Re]<br />
* [http://os.inf.tu-dresden.de/L4/LinuxOnL4/inaction.shtml L4Linux]<br />
* [http://demo.tudos.org/eng_screenshots.html Live CD]</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=Dice_IDL_compiler&diff=214Dice IDL compiler2010-11-24T21:24:56Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by BjoernD</p>
<hr />
<div>== Overview ==<br />
The [http://www.inf.tu-dresden.de/index.php?node_id=1542 Dice IDL compiler] is used to generate IPC communication code for L4 applications from an interface definition language (CORBA IDL with extensions). You check it out along with the other components of L4Env as described in the [[Getting_TUDOS | download instructions]].<br />
<br />
== Documentation ==<br />
Dice and its features are documented in the [http://www.inf.tu-dresden.de/index.php?node_id=1539 Dice User Manual].<br />
<br />
== Known issues ==<br />
* "./configure" in the Dice directory fails with the message like "configure: error: You will need at least bison version 2.1a (found 2.4)."<br />
** This occurs on newer Linux distributions shipping with Bison >= 2.4.<br />
** Building Dice will fail if you simply workaround the version check in configure.in.<br />
** Better solution:<br />
*** Download Bison 2.3 from [http://www.gnu.org/software/bison/ the FSF's Bison website].<br />
*** Compile and install it to some location <foo><br />
*** Re-configure Dice :<br />
YACC=<foo>/bison ./configure</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=DDE::Windhoek&diff=213DDE::Windhoek2010-11-24T21:24:15Z<p>Adam: Reverted edits by Ogozasuta (talk) to last revision by BjoernD</p>
<hr />
<div>== General info ==<br />
Windhoek is the code name of a DDE-based hard disk driver. Built as a prototype in 2008, it only supports IDE. It should probably be adapted to use libATA for real use.<br />
<br />
== Download ==<br />
Being incomplete, Windhoek is not part of the public L4Env release. The current version can be downloaded however: http://os.inf.tu-dresden.de/~doebel/downloads/windhoek.tar.bz2.</div>Adamhttps://wiki.tudos.org/ikiw/index.php?title=L4Linux/configurations&diff=195L4Linux/configurations2010-11-10T18:45:50Z<p>Adam: /* Device Access */</p>
<hr />
<div>== Possible configurations for L4Linux ==<br />
<br />
=== Consoles ===<br />
<br />
Basically two modes are possible:<br />
* Direct access<br />
** In this mode L4Linux will drive the keyboard and mouse controller and will control the screen (e.g. VGA). And only L4Linux will do that, no one else. For the configuration of L4Linux this means that one needs to enable the keyboard and mouse controller driver and the VGA driver.<br />
* mag/l4con/DOpe consoles<br />
** For console use, the mag, l4con or DOpE is controlling the keyboard and mouse controller and the screen. And only mag/l4con/DOpE is controlling the keyboard/mouse/screen. No one else. For the configuration of L4Linux this means that L4Linux does not need any keyboard/mouse driver nor any VGA driver. It _just_ needs the l4fb driver (which also does input handling).<br />
<br />
=== Device Access ===<br />
<br />
Device access requires that ''io'' allows L4Linux to access those devices. For more information on ''io'' please read on [http://os.inf.tu-dresden.de/L4Re/doc/io.html here].<br />
<br />
Using the x86 architecture, ''io'' uses ACPI and PCI scans the system to find available devices. Legacy components are described in the x86-legacy.devs configuration file found in l4/pkg/io/configs/x86-legacy.devs. A client configuration for L4Linux could look like this:<br />
<br />
l4lx => new System_bus()<br />
{<br />
# add every found network, storage and multimedia (e.g. sound-card) device<br />
pci_l4x[] => wrap(hw-root.match("PCI/CC_02,PCI/CC_01,PCI/04"));<br />
}<br />
<br />
Make sure to enable the 'L4 virtual PCI bus' in the L4Linux configuration.<br />
<br />
If you like to give Linux access to VGA and PS2, add the following the above ''l4lx'' block:<br />
vgadev => wrap(hw-root.VGA);<br />
ps2dev => wrap(hw-root.PS2);<br />
<br />
Launch ''io'' with both files as arguments:<br />
rom/io rom/x86-legacy.devs rom/l4lx.io<br />
<br />
=== UX ===<br />
<br />
To run L4Linux under Fiasco-UX, the L4Linux does not have any access to any hardware. This basically means the following:<br />
* Disable PCI<br />
* Disable Keyboard/Mouse (PS2) input<br />
* Disable VGA/VESA/etc.<br />
* Do not use serial drivers or similar<br />
<br />
For Input/Output you need to use a console setup, see above.<br />
<br />
When you start it and it crashes (Ooops), look at the backtrace to see the driver that is trying to access some hardware. Then disable this driver and try again.</div>Adam