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 systemRoughly 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 shellAs 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 pathsThe 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.
NetworkOn 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 softwareFor 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:
# 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:
# 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:
# 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.