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!)
- Harddisk image: http://download.tyndur.org/releases/0.2 ... hd.img.bz2 (2,3 MB)
- Live CD: http://download.tyndur.org/releases/0.2 ... cd.iso.bz2 (5,6 MB)
- Full Live CD: http://download.tyndur.org/releases/0.2 ... ll.iso.bz2 (13 MB; with gcc, FPC and Subversion)
- gitweb: http://git.tyndur.org/?p=tyndur.git;a=summary
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
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
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
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
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
...and don't forget to provide feedback and patches.