IMPORTANT MESSAGE
Our Webmaster is currently hospitalized.
Until he returns, information on some pages may be invalid, out of date, or unavailable.
We deeply apologize for the inconvienence.
Welcome!
The TinyKRNL Project is a three-phased Open Source OS Project based on the design of Windows NT. For each phase, specific goals have been set, with the ultimate goal being to provide a rich, open, and fully compatible alternative to Windows NT. TinyKRNL itself will be an answer to many academic research, consumer and security-field demands, both in its final form, as well as through each of its specific development phases.
TinyKRNL will be the most complete and open alternative not only to the Windows NT Kernel and Base Environment, but also to licensing the Windows code under the Shared Source License, which is either cost-prohibitive, or simply unusable for public purposes. It will allow developers to recompile the kernel with their own settings, features and functionality, and to incorporate new features which they can provide to their users, without breaking compatibility with the NT Kernel.
TinyKRNL is geared towards students, teachers and other academics, as well as low-level Windows NT system developers, driver developers and developers working in the areas of security, rootkit detection, intrusion prevention, etc. TinyKRNL allows students and faculty to better understand the underlying principles of the NT Operating System by having access to C source code which is well-formatted, commented and performs the same tasks as the NT OS, as well as to evaluate and teach various algorithms and technologies implemented in Windows NT, such as the AVL Tree implementation or the Unicode String Prefix implementation.
TinyKRNL also allows members of the security community to have a better chance of localizing exploits in the OS so that they can be reported to Microsoft, as well as verify and better understand the functionality of some rootkits or other intrusion software by seeing how they interact with the system. Finally, by providing an identical tree structure to the Microsoft counterparts, TinyKRNL allows system developers to easily lookup the source code responsible for an assertion failure (ASSERT), without having to look through piles of assembly code.
As a user, TinyKRNL will allow you to setup a minimal OS on your embedded or old hardware, which could provide services such as MP3 Streaming, IPSEC/Firewall support, or a variety of other features. Although alternative operating systems such as Linux can also provide this, TinyKRNL will allow you to run Windows-compatible PE applications in this environment, which do not always have Linux-compatible equivalents.
To find out more details about the 3 phases of TinyKRNL development and get in-depth information about the project, visit the About section of the site, accessible from the navigation bar above.
^ TOPObtaining TinyKRNL
TinyKRNL is available through 3 methods:
- Anonymous SVN Access
- Nightly package containing the SVN Source Tree
- Nightly binaries for testing in the Test Suite.
SVN Access will allow you instant, real-time access to the TinyKRNL Source Code as well as any updates, as they happen. Simply download an SVN-client and checkout the following repository: svn://svn.tinykrnl.org/tinykrnl. If you wish to download the nightly packages instead, you will need a 7z compatible utility, such as 7Zip or WinRAR. The nightly packages contain the entire source every night, and are not incremental updates; therefore you should always overwrite the previous code which you had extracted before. It's best to delete the entire directory every time you update it, since some files could've been deleted and their presence might negatively impact the build.
To obtain the nightly source package, simply visit the Downloads section of the site and click on the appropriate link. Once you have obtained the source files, you can proceed to build TinyKRNL if you wish, and then proceed in testing it in our Test Suite. For detailed information on the build process and what is required, visit the Development section.
If you wish to simply download the binaries instead, we provide them to be used with our integrated Test Suite. To obtain them, visit the Downloads section and follow the instructions in the package. For more detailed information, you can visit the Development section of the site, which has more information on the Test Suite and what is required. Note that at this moment, TinyKRNL does not work (has not been tested) on real hardware, and is only functional in QEMU, which is part of the Test Suite.
Note that you can also download the nightly source package by clicking on the Nightly Release link on the top of the site. The Current Release link will link to any official releases which will be announced at later dates.
^ TOPDocumentation
A large part of the TinyKRNL Project's focus is on providing documentation for NT Driver Developers, System-Level Coders, and other projects interested in providing interoperable and compatible solutions to NT Technology and Software. As described in the About section of the site, TinyKRNL will produce a series of books on the TinyKRNL (and hence NT) Kernel itself, as well as books on the core drivers and kernel architectures that will be implemented (such as Audio and Networking).
In the same spirit as our source code (Free Open Source Software), these books will be provided in a HTML-viewable format, as well as electronically downloadable PDFs. However, if you wish to support the project, as well as have a hardcopy of the book, we will also be printing them and providing them at a nominal cost to pay for the printing and shipping. Because some of these books may run upward of 500 pages and are meant as reference, we strongly recommend that you consider purchasing them.
On top of our books, every single function in the TinyKRNL Source is pre-pended with a specially crafted documentation header, which describes the functionality of the routine, the meaning of its parameters, its return value and meaning of it, as well as any special remarks which apply to it. This header is human-readable while browsing our sources, but it is additionally also tagged for Doxygen usage, which is a documentation system for source-code that generates browsable HTML files containing the documentation as well as inlined sources for the routine.
Through publishing books, source code, and HTML Doxygen documentation, TinyKRNL hopes to become the leading source of free, public and up to date information on the latest NT Kernel technologies and subsystems.
^ TOPHelping Out
Much like any other Open Source Project, the strength of TinyKRNL lies in its users and developers, which volunteer to expand the codebase and to meet our goals. As such, TinyKRNL is open to anyone that wishes to join, whether it is to help in development, web site maintenance, shells, bots, scripts, documentation, or evangelism.
The TinyKRNL project only wishes to make potential developers understand that due to the nature of the project and its specific goals, certain guidelines will have to be adhered to. As such, since Phase 1 focuses on Drivers and the HAL, development on something such as a solitaire application is not something that we would be looking at. This is not meant to exclude anyone, but simply to make sure that everyone works towards a common goal.
We invite you to visit our IRC channel, subscribe to our mailing list and check back here for updates as we make them. For information on contacting us and our IRC channel / Mailing Lists, simply click the links on top of the page, or the Contact Us link at the bottom. To quickly send a "formal" request click the Join Project on top of the site; this will open a new email message in your registered mail client.