Page 1 of 1

Release of tyndur 0.2.2

Posted: Sat Dec 26, 2009 8:32 am
by Kevin
I am happy to announce the release of tyndur 0.2.2, our first release to contain enough i18n to be announced on osdev.org.

tyndur is the community OS of Lowlevel, which is probably the largest OS-Dev community in the German-speaking countries. Initially, it had a focus on serving as an example OS which could be referred to when explaining things on the Lowleve3l forums (and it still is helpful there) - this is the reason why everything is German by default. Since then it has evolved into something much larger and is actually kind of usable today. Let me give you an outline of the tyndur features:
  • Based on a microkernel
  • ATA/ATAPI and floppy support with ext2, iso9660 and FAT as file systems
  • Network support (rtl8139, sis900, e1000, ne2k, pcnet)
  • CDI almost completely used as the native driver interface, with great success in sharing drivers with other OSes so far (mainly with OSes only known on Lowlevel, but including others like Pedigree)
  • Limited POSIX support as a wrapper around native libc
  • Ported software includes Lynx, gcc, FreePascal compiler, binutils, Subversion, dropbear SSH client
  • Some basic internationalization (we would be happy to accept contributions of additional keymaps or translations!)
Images and sources are available at:
The following sections will give a short introduction to all of you who are not familiar with tyndur (all of you, I guess).

Changes since 0.2.1
  • Support for TCP servers
  • Configurable keyboard layout and some multilingual applications
  • setup as a menu driven configuration tool
  • FTP client (Paul Lange)
  • libm (Patrick Kaufmann)
  • ne2k network driver (Matthew Iselin)
  • kedit syntax highlighting for Pascal and Assembler (Alexander Hartmut Kluth)
  • Support for Shared IRQs (Max Reitz)
  • New ported software: svn, maumau, fasm, nasm, ctris
  • Lots of bug fixes
Thanks to everyone who contributed to this release!

Booting the system
Roughly speaking, the boot process of tyndur consists of two phases: It uses Multiboot to load the kernel and a few modules like disk and file system drivers which allow accessing the tyndur file system. These modules are loaded by GRUB, so their command line can be changed in the boot menu. When these modules are ready, servmgr takes over and loads more modules from the file system (e.g. network drivers).

For booting the system, servmgr needs to know the path to the file system as a module parameter (comparable with "root=..." in Linux). The default value in the boot menu is ata:/ata00_p0 for the hard disk image and ata:/cdrom for the Live CDs. Particularly for the Live CD it might be necessary to change the command line if the computer has more than one CD/DVD drive. Examples:
  • ata:/ata00_p0 means the first partition on Primary Master
  • ata:/atapi10 means a CD/DVD drive on Secondary Master
  • ata:/ata11 means a file system on an unpartitioned hard disk on Secondary Slave
  • ata:/cdrom means the first CD drive detected
Sometimes there are problems with DMA and ata (most notably on VirtualBox). In this case, try to change the boot menu entry as follows: "module /modules/ata nodma".

Terminal and shell
As soon as servmgr has finished loading the modules, you can use multiple virtual terminals. By default, you can start shells on the first to the fourth terminal. You can select the terminal using Alt-F1 to Alt-F4. Alt-F9 selects the service terminal, which contains messages from the modules loaded by servmgr. You may scroll using Shift-PgUp/Dn.

To help you on your search for executable files, I should mention that besides the current directory there are three places for executable files (the impatient ones could simply use tab completion, though ;)). First, there is file:/apps which contains the applications of the core system. Then we have file:/system/lpt-bin which contains symbolic links to the binaries of all packages installed via lpt. Both of these are in PATH, so you can start them without entering the whole path. The third one is file:/modules and contains drivers and services.

To start a program in foreground, enter its file name (or path if its neither in the current directory nor in PATH). To start it in background (use this for drivers from file:/modules) use the start command (e.g. "start /modules/ramdisk").

File system and paths
The paths used in tyndur are somewhat different from other OSes, so they are probably worth a section. As you can see in "file:/apps/sh" paths do not only consist of a directory and a file name like in Unix, but also contain a third part for the service which provides the file (and therefore there are three types of paths: A relative path looks like "../apps/sh", a service-relative one like "/apps/sh" and an absolute path like "file:/apps/sh"). So far you can compare it to DOS drive letters.

However, a typical tyndur path is a combination of multiple such paths: While ext2:/ is missing something (well, which device at all?), ata:/ata00_p0|ext2:/ gives all the information needed (oh yes, the ext2 filesystem on the ata:/ata00_p0 partition). You can even nest it deeper, for example the Live CD uses "ata:/cdrom|iso9660:/hd.img|ramoverlay:/cached|ext2:/" - the CD contains an iso9660 file system which contains an ext2 image, and there is a ramdisk in between to allow temporary write accesses to the ext2 image.

There is a service file which provides aliases to avoid such tedious paths. You can look up the mappings on the service terminal.

Network
On the first boot, the network configuration tool is started. If a driver exists for your hardware (rtl8139, sis900, e1000, ne2k, pcnet), it is detected automatically. You might need to adapt the IP address and gateway. They default to values suiting qemu when started with default parameters. For DNS, OpenDNS is used. You may change the DNS server by adding "ns=a.b.c.d" to the tcpip command line.

If the tyndur computer has access to the internet, a quick way to test the network setup is to resolve a DNS name: "cat tcpip:/dns/www.tyndur.org". Also, you can open a simple telnet-like connection to another PC: "pipe tcpip:/192.168.1.1:1234". To close the connection enter "EOF." on a line of its own.

Building software
For developing (or at least building) software on tyndur, there are multiple compilers available: gcc for C, FPC for Pascal and nasm, yasm and fasm for Assembly. On the Full Live CD all of them are pre-installed. On the hard disk image or on the small Live CD you can download them:

Code: Select all

# lpt scan
# lpt get gcc
# lpt get yasm
As soon as the compilers and/or assemblers are installed, they can be used as usual (however, be patient, they are not too fast). As an editor you can use either kedit or nano (the latter is available in lpt if it's missing on your image). kedit provides syntax highlighting which can be enabled with F8. For version control, you may use Subversion.

For building C programs that consist of more than one file, you best use the "build" tool. It gathers source files from a tyndur-like directory structure and builds a binary of them. The resulting binary is called "run". For example, we could compile the tyndur shell:

Code: Select all

# svn co svn://tyndur.org/tyndur/tags/0.2.2/src/modules/c/shell
# build
If you're patient enough, we can try something larger: Building a tyndur kernel on tyndur (takes 5 to 10 minutes in qemu). We must not use the normal standard library (therefore build -k) but need to check out the right one from Subversion:

Code: Select all

# mkdir kernel
# cd kernel
# svn co svn://tyndur.org/tyndur/tags/0.2.2/src/include
# svn co svn://tyndur.org/tyndur/tags/0.2.2/src/lib
# svn co svn://tyndur.org/tyndur/tags/0.2.2/src/kernel
# cp kernel/src/kernel.ld .
# build -k
Have fun...
...and don't forget to provide feedback and patches. ;)

Re: Release of tyndur 0.2.2

Posted: Wed Dec 30, 2009 5:14 pm
by pcmattman
No takers? :(

I found tyndur to be fast and stable, and it certainly is not just another UNIX clone.

The only problem I really ran into was problems with ATAPI in Virtual PC, which has already been reported.

Re: Release of tyndur 0.2.2

Posted: Wed Dec 30, 2009 9:32 pm
by earlz
Very neat OS.. `sh` gives me only german error messages... also, I'm surprised that you have `lynx` but not `ping`

Re: Release of tyndur 0.2.2

Posted: Thu Dec 31, 2009 1:30 am
by oib111
Very nice OS. I like how you ported practical applications like gcc, kedit, kirc, lynx, etc. I especially like the networking. I can actually visit my IRC channels and browse the Web on your OS. Very, very nice job.

Re: Release of tyndur 0.2.2

Posted: Fri Jan 01, 2010 11:32 am
by Kevin
Thanks. :)
earlz wrote:`sh` gives me only german error messages... also, I'm surprised that you have `lynx` but not `ping`
Right, there are still many untranslated messages. I think those in sh will be translated eventually, but probably we won't translate all of them (unless someone steps up and volunteers, but I guess that's not very likely). The goal for this release was to get to a point where someone who doesn't understand German can get to a shell and use it.

The explanation for the missing ping might be the "practical application" thing oib111 noticed. Nobody has needed a ping so far, so nobody has bothered implementing it. The only use case in the context of a hobby OS in this state I can think of is testing if the network works. Resolving a DNS name or opening a TCP telnet connection is almost as good for that and doesn't involve implementing anything ;)

Re: Release of tyndur 0.2.2

Posted: Sun Apr 20, 2014 3:24 pm
by ehenkes
Perhaps you should give an update on the status of tyndur.

Re: Release of tyndur 0.2.2

Posted: Thu Apr 24, 2014 2:22 am
by Kevin
I'll do that in detail when/if we ever release a version 0.3.0.

You made me curious, and my subjective impression was that there hasn't been that much progress since 0.2.2, so I checked the git repository - and the truth is that well over a third of the commits in the whole history is after the 0.2.2 release. So perhaps it's really just that in the beginning every tiny change is a big improvement to the OS, whereas in a larger project, small, but steady changes don't feel like you've ever done a big step.

I guess it's really about time to prepare a new release. But it needs some polishing first, and I'm not sure when we'll do that.

But the major points of a status update in short: We switched to a completely rewritten kernel (which was already part of the git tree by the time that 0.2.2 was released, but it was disabled); a lot of libc improvements for new ports; hardware driver improvements, including new support for audio and (VBE) graphics; UDP and DHCP support; many other small improvements to our native tools.