Overview
FreeDOS-32 (or fd32 for short) is an open source operating system under development, primarily targeted towards embedded systems and real-time applications. Currently, it is a single-developer hobby project to have fun and learn about operating system internals.
Some of its key features are:
- MultiBoot technology. FreeDOS-32 is started using a MultiBoot boot loader, such as GNU GRUB. This means that, in order to install the operating system, you just need to copy its files in your file system and you are ready to go.
- Hard real-time microkernel. The core of the operating system is a microkernel that provides deterministic, bounded in time operations. A simple scheduler controls execution of one or more threads and interrupts. Other operating system services are run in separate threads either in privileged or unprivileged modes.
- Open-source license. FreeDOS-32 is released under open source licenses so that you can study and modify it, while allowing its use in commercial applications.
- Portable, object-oriented design. The modular design based on components that communicate with each other through the kernel minimizes platform-dependent code and helps development and testing. The current target is the IA-32 (x86) platform, but other ports are planned, such as x86-64 and ARM.
- API and ABI compatibility. Through appropriate modules, it will be possible to run applications and drivers written for multiple operating systems, starting from DOS protected mode programs and the FreeDOS ecosystem.
Resources
As a whole operating system, the FreeDOS-32 is split in multiple sub-projects. The following code resources are available.
The kernel
https://github.com/salvois/kernel
The kernel is the core of fd32. It provides functionality to run system services and applications as threads, allowing them to communicate via messages.
It contains the boot code, physical and virtual memory management and the multi-processor thread scheduler, controlling which thread should be executed on a CPU at any given time.
This project is the prerequisite to all other operating system functionality, but is currently incomplete. It is under active but slow development. Further information is provided in the included documentation.
LEAN file system
http://freedos-32.sourceforge.net/lean/
LEAN (backronym for Lean yet Effective Allocation and Naming, a play on the word FAT) is a free and simple file system created as part of the FreeDOS-32 project to provide an alternative to the proprietary -and partly patented- Microsoft FAT file system. It was originally written to test FreeDOS-32 in a multi-file-system setup, pairing the already developed FAT driver.
LEAN aims to be the simplest file system providing the full set of most common and useful file system features: big volumes, extents, large files, Unicode long file names, extended attributes, POSIX compatibility. Any design choices have gone in the direction of the greatest simplicity rather than performance. LEAN is designed for use even on platforms with limited memory and CPU power.
This project provides the file system driver, utility programs to create (format) and check LEAN volumes, and a file-manager-like application that serves as a proof of concept.
Repository of old code
https://sourceforge.net/p/freedos-32/code/
The historical Subversion repository on SourceForge contains all old code developed for the FreeDOS-32 project. Here you can find the kernel and the modules up to the never released version 0.0.6.
This macro-project contains a kernel built upon the OSLib library, several modules including floppy disk driver, ATA disk driver, FAT and ISO-9660 (CD-ROM) file systems, keyboard and mice drivers, the DPMI module aimed at running DOS Protected Mode Interface programs and other modules, all contributed by a handful of passionate developers. The "experimental" branch contains most of the newest code, that never ended in a release.