2012-03-10 18:57:56 -05:00
|
|
|
The Sortix Operating System
|
|
|
|
===========================
|
|
|
|
Sortix is a hobby operating system. It was originally created as a tool to learn
|
|
|
|
more about kernel and operating system design and implementation. Today is
|
|
|
|
transforming into a real operating system. The standard library and kernel is
|
|
|
|
rich enough that some third party software can and has been ported to Sortix.
|
|
|
|
However, the system remains quite limited as of this writing. Many features are
|
|
|
|
missing such as proper filesystem support, bitmap graphics, and networking.
|
|
|
|
Proper filesystem support is currently being added.
|
|
|
|
|
|
|
|
The system aims to be an Unix-clone and is heavily based on POSIX. However, I've
|
|
|
|
drawn much inspiration from systems such as Plan 9, GNU/Hurd and MINIX. Indeed,
|
|
|
|
I plan to construct a micro-kernel with user-space filesystems, per-process
|
|
|
|
namespaces, replacing many system calls with filesystem nodes, and other
|
2012-03-14 10:14:21 -04:00
|
|
|
exciting features. This design will make it safe to let normal users perform
|
|
|
|
operations such as mounting and create their own "sub-operating-system"
|
|
|
|
environment where they are the root.
|
2012-03-10 18:57:56 -05:00
|
|
|
|
|
|
|
System Requirements
|
|
|
|
-------------------
|
|
|
|
Sortix has very low system requirements. It also works well under virtual
|
|
|
|
machines such as VirtualBox and Qemu.
|
|
|
|
|
|
|
|
* A 32-bit x86 or 64-bit x86_64 CPU.
|
2012-03-14 10:14:21 -04:00
|
|
|
* A dozen megabytes of RAM.
|
2012-03-10 18:57:56 -05:00
|
|
|
* A harddisk or cdrom drive or support for booting from USB.
|
|
|
|
* A multiboot compliant bootloader if booting from harddisk.
|
|
|
|
* A Parallel ATA harddisk, if you wish to access it from Sortix. SATA is not
|
|
|
|
supported yet.
|
|
|
|
|
|
|
|
Features
|
|
|
|
--------
|
|
|
|
The current development version of Sortix offers a traditional multi-process
|
|
|
|
protected environment with round-robin scheduling. A quick and dirty shell is
|
|
|
|
able to execute programs in foreground or background mode, handle IO redirection
|
|
|
|
and piping the standard output of a process into the standard input of another.
|
|
|
|
A real shell will be added as the system matures and I get around to finish the
|
|
|
|
work in progress shell.
|
|
|
|
|
|
|
|
A number of standard utilities are present such as cat, head, tail, clear, cp,
|
|
|
|
column, kill, ls, rm, pwd, uname, echo, and uptime. There is even a number of
|
|
|
|
non-standard utilities such as calc, help, init, kernelinfo, memstat, and pager.
|
|
|
|
This collection of utilities will continue to grow as it matures and third party
|
2012-03-14 10:14:21 -04:00
|
|
|
software is ported. I've currently had some luck partially porting binutils,
|
|
|
|
ocaml, and gzip, but the system isn't fully ready for such software yet.
|
2012-03-10 18:57:56 -05:00
|
|
|
|
|
|
|
A number of small games is present and uses the VGA textmode to render ASCII
|
|
|
|
graphics. Notably you can play two-player Pong, or single-player Snake, or the
|
|
|
|
nice and turing-complete Conway's Game of Life. These are probably the main
|
|
|
|
attraction of the system for non-technical people.
|
|
|
|
|
|
|
|
The Sortix kernel has very basic filesystem support. The root filesystem / is
|
|
|
|
simply a single-directory RAM filesystem. The init ramdisk is mounted read-only
|
2012-03-14 10:14:21 -04:00
|
|
|
on /bin and various devices are accessable through the /dev filesystem. Work is
|
|
|
|
underway to create an ext2 filesystem server, but it won't be of much use until
|
|
|
|
the kernel virtual filesystem is completed in the 0.7dev development cycle.
|
2012-03-10 18:57:56 -05:00
|
|
|
|
|
|
|
Job control and Unix signals is not fully or correctly implemented. This means
|
|
|
|
that sequences such as Ctrl-C (SIGINT) not always works correctly. This will
|
|
|
|
be implemented soon enough (depends partially on VFS; see above).
|
|
|
|
|
2012-03-14 10:14:21 -04:00
|
|
|
There currently is no concept of users in the system (only the root user exists
|
|
|
|
I decided to delay making a multi-user system until the base system is in place.
|
|
|
|
Note that there is only a single terminal - even though the system is a
|
|
|
|
multi-process system, there is only a single /dev/vga and there is no framework
|
|
|
|
in place for sharing it.
|
2012-03-10 18:57:56 -05:00
|
|
|
|
|
|
|
Technical details
|
|
|
|
----------------
|
|
|
|
The system is mostly coded in C++, but also contains a few files in C. However,
|
|
|
|
the user-land experiences a normal C programming interface as per POSIX.
|
|
|
|
Executable files natively uses the ELF format used on GNU/Linux and other
|
|
|
|
systems. There is no shared library support yet, but it'll be possible when I
|
|
|
|
get around to implement copy-on-write memory, mmap(2) and swapping to disk.
|
|
|
|
|
2012-03-10 19:42:03 -05:00
|
|
|
Building
|
|
|
|
--------
|
|
|
|
To build the Sortix source code you need to install a few dependencies. First of
|
|
|
|
all you need the GNU Compiler Collection (C and C++), GNU Make, and GNU
|
|
|
|
Binutils. You then need to build and install the included macro preprocessor
|
2012-03-14 10:14:21 -04:00
|
|
|
(mxmpp) somewhere in your PATH such as /usr/bin. If you wish to build the 32-bit
|
2012-03-10 19:42:03 -05:00
|
|
|
version of Sortix, you need the Netwide Assembler (nasm) as parts of it hasn't
|
|
|
|
been ported to the GNU assembler yet. You need a GNU/Linux build system to build
|
|
|
|
Sortix, although, it wouldn't be difficult to port the build system to other
|
|
|
|
platforms. You can then build the Sortix kernel and user-space utilities by
|
|
|
|
running make in the Sortix root source directory. By default it will build to
|
|
|
|
your CPU architecture (64-bit on 64-bit systems, 32-bit otherwise). Use
|
|
|
|
CPU=x86 or CPU=x64 as arguments to make to control which target is built.
|
|
|
|
|
|
|
|
To build a bootable ISO you need GNU GRUB 2, as that is used by "make iso" to
|
|
|
|
generate the iso. In turn, GNU GRUB relies on xorriso to create the iso file.
|
|
|
|
|
|
|
|
You can burn the ISO to a cdrom or dvd, or even dd(1) it onto a USB memory stick
|
|
|
|
and boot from if it your BIOS supports it. You can also provide it to a virtual
|
|
|
|
machine. Alternatively you can install the kernel binary and initrd in your
|
|
|
|
/boot directory and configure GRUB to boot Sortix.
|
|
|
|
|
2012-03-10 18:57:56 -05:00
|
|
|
Links
|
|
|
|
-----
|
|
|
|
You can visit the official website at http://www.maxsi.org/software/sortix/ for
|
|
|
|
more information and news. You can also download the newest release and cutting
|
|
|
|
edge nightly builds.
|
|
|
|
|
|
|
|
You can retrieve the current git master from our gitorious project page from
|
|
|
|
https://gitorious.org/sortix/.
|
|
|
|
|
|
|
|
License
|
|
|
|
-------
|
|
|
|
|
2012-03-10 19:42:03 -05:00
|
|
|
Copyright(C) Jonas 'Sortie' Termansen <sortie@maxsi.org> and contributors 2011,
|
|
|
|
2012.
|
2012-03-10 18:57:56 -05:00
|
|
|
|
|
|
|
The Sortix kernel, the filesystem servers, the initrd tools, the utilities, the
|
|
|
|
games, and the benchmark programs are licensed under the GNU General Public
|
|
|
|
License, either version 3 or (at your option) any later version.
|
|
|
|
|
|
|
|
The libmaxsi standard library is licensed under the GNU Lesser General Public
|
|
|
|
License, either version 3 or (at your option) any later version.
|
|
|
|
|
2012-03-14 10:14:21 -04:00
|
|
|
Any experimental repositories and branches on Gitorious related to Sortix but
|
|
|
|
which contains no copyright statements are also released under the GNU General
|
|
|
|
Public License, either version 3 or (at your option) any later version. These
|
|
|
|
things are so experimental that I didn't add copyright statements yet.
|
|
|
|
|
2012-03-10 18:57:56 -05:00
|
|
|
Sortix is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
|
|
PARTICULAR PURPOSE. See the gpl.html and lgpl.html files for more information.
|