forked from insidegui/flux
a hobby operating system written in C
License
UIKit0/flux
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Flux Operating System v0.7a Introduction ***************************************************************************** What is Flux? Flux is a hobby operating system project designed and written by me (Nick Johnson), since some time in late 2008. Currently, it consists of a microkernel, a C library, a shell and simple utilities, and a small set of device drivers. It should run on any standard PC hardware with a Pentium or better processor, and uses 32 bit protected mode. The Flux system is roughly UNIX-like in many areas, but it is mostly its own system, and is not POSIX compliant. It has a particularly interesting VFS mechanism that allows any process to act as not only a file, but a whole mounted file system. It also is very fundamentally event-driven and multithreaded, which is good for driver writing and scalability over multiple processors (or at least it will be, once I get around to adding SMP support :P). It has been a sort of sandbox for my ideas, so there are plenty of other interesting bits as well. How do I use Flux? At the moment, Flux is not stable enough for use, but it is rapidly progressing toward that point. It already can run a Lua interpreter, which is written in standard C, and all of its source code can be compiled with all warning flags and all optimization flags for both GCC and CLang (a feat, I hear, which is unfortunately rarely seen in open source projects). The first beta release of Flux should be ready by January 2011. At that point, it should be ready for patches and other contributions. Flux is available under the ISC license, which is a simplified BSD license. In essence, this means you can freely modify and redistribute Flux, as long as you keep the license and copyright information on each of the files that contains it. The ISC license is a certified open source license, but you can incorporate Flux code into closed source projects if you wish. Why the name? The name Flux originally referred to that acidic stuff in solder used to remove oxides from metal: this reflects a planned feature of Flux involving shared libraries, and more generally, the idea of reuse and recombination. However, I feel now that it also reflects another goal of the project: change. Flux is built in an extremely flexible fashion, not only because of its layered design but also because of its brevity. Every piece of Flux is small enough for a single person to completely understand, and if necessary, to for a single person to rewrite. Documentation (at release at least) will be comprehensive from the largest library down to the smallest function, to facilitate those who wish to hack and rewrite. Build Instructions ***************************************************************************** Toolchain Dependencies: C99 compliant C compiler tested: CLang 2.7 tested flags: -O0, -O1, -Os, -O2, -O3 -fomit-frame-pointer *all* warning flags under -pedantic -c99 The Netwide Assembler (NASM) tested: NASM 2.05.01 NASM 2.07 NASM 2.08 ELF-based linker tested: GNU binutils 2.18 for i686-pc-linux-gnu GNU binutils 2.19 for i586-elf GNU binutils 2.20 for i686-pc-linux-gnu GNU Make or equivalent tested: GNU Make 3.81 ***************************************************************************** Testing Dependencies: Linux 2.4 or newer with loopback support and cdrtools QEMU emulator (or other VM - scripts will have to be modified) tested: QEMU 0.10.6, i386 emulation level Bochs 2.4.1, i586 emulation level ***************************************************************************** Build Instructions: This system is meant to be built with x86 or x86_64 Linux as a host: it may build and test on other Linux platforms, and will probably build on any UNIX-like system. To reliably build the system, you should use a cross-compiler. The official set of tools for this is CLang 2.8 and GNU Binutils 2.20 for the "i586-elf" target. At least binutils should be installed in <build_directory>/tools/, with at least "ar", "ld", and "ranlib" in <build_directory>/tools/bin/. CLang and NASM from the host system should both work without modification, but if in doubt, they should also be installed in the tools directory. The build scripts add the tools directory to your PATH, so that toolchain will override the host's. To make each piece of the operating system, simply type "make <subproject>", or just "make" to make everything. The kernel, init, libc, and at least basic drivers must be built for the system to boot correctly. "make -C <subproject> clean" will remove all object files from the subprojects' directories, and "make clean" will remove all object files. "make image" will make a CD image called flux.iso in the run directory - this requires cdrtools. Test Instructions: To test the operating system, use "make test". This will make it run in a virtual machine: QEMU.
About
a hobby operating system written in C
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published