Update documentation for the upcoming 0.9 release.

This commit is contained in:
Jonas 'Sortie' Termansen 2014-12-28 03:05:09 +01:00
parent d238518c35
commit d14a9fff72
3 changed files with 83 additions and 71 deletions

38
README
View File

@ -1,18 +1,21 @@
The Sortix Operating System The Sortix Operating System
=========================== ===========================
Sortix is a small Unix-like operating system developed since 2011 with emphasis Sortix is a small self-hosting Unix-like operating system developed since 2011
on cleaning up traditional Unix design mistakes while retaining compatibility aiming to be a clean and modern POSIX implementation. There's a lot of technical
with third party software. Much third party software has been ported to Sortix debt that needs to be paid, but it's getting better. Traditional design mistakes
and the system is now self-building. The Sortix kernel, standard libraries, and are avoided or aggressively deprecated by updating the base system and ports as
most utilities were written entirely from scratch. needed. The Sortix kernel, standard libraries, and most utilities were written
entirely from scratch. The system is halfway through becoming multi-user and
while security vulnerabilities are recognized as bugs, it should be considered
insecure at this time.
Links Links
----- -----
For more information, documentation and news, please visit the official website: For more information, documentation and news, please visit the official website:
http://sortix.org/ https://sortix.org/
You can also download the newest release and cutting edge nightly builds at: You can also download the newest release and cutting edge nightly builds at:
@ -26,15 +29,15 @@ System Requirements
------------------- -------------------
Sortix has low system requirements. It also works well under virtual machines Sortix has low system requirements. It also works well under virtual machines
such as VirtualBox and Qemu - however Bochs is not officially supported: such as VirtualBox and Qemu:
* A 32-bit x86 (with SSE) or 64-bit x86_64 CPU. * A 32-bit x86 (with SSE) or 64-bit x86_64 CPU.
* A few dozen megabytes of RAM - or if you are using a cdrom release with ports * A few dozen megabytes of RAM - or if you are using a cdrom release with ports
then you likely need at least twice the size of the cdrom image. then you likely need at least twice the size of the cdrom image.
* A harddisk or cdrom drive or support for booting from USB. * A harddisk or cdrom drive or support for booting from USB.
* A multiboot compliant bootloader if booting from harddisk. * A multiboot compliant bootloader if booting from harddisk.
* A Parallel ATA harddisk, if you wish to access it from Sortix. SATA is not * A Parallel ATA harddisk, if you wish to access it from Sortix. The AHCI driver
supported yet. has not been merged yet.
Documentation Documentation
------------- -------------
@ -49,7 +52,7 @@ documentation mirror, for instance:
doc/ doc/
The official Sortix website: The official Sortix website:
http://sortix.org/doc/ https://sortix.org/doc/
Building Sortix Building Sortix
--------------- ---------------
@ -74,7 +77,7 @@ License
------- -------
Copyright(C) Jonas 'Sortie' Termansen <sortie@maxsi.org> and contributors 2011, Copyright(C) Jonas 'Sortie' Termansen <sortie@maxsi.org> and contributors 2011,
2012, 2013. 2012, 2013, 2014.
Sortix is distributed in the hope that it will be useful, but WITHOUT ANY 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 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
@ -92,12 +95,13 @@ covered by the standard license for the software component they relate to.
Unless the license header in the source code states otherwise, the Sortix Unless the license header in the source code states otherwise, the Sortix
kernel, the filesystem servers, the initrd tools, the utilities, the games, the kernel, the filesystem servers, the initrd tools, the utilities, the games, the
benchmark programs, and the tix package management programs are licensed under benchmark programs, regression tests, base programs, editors, shell, init, and
the GNU General Public License, either version 3 or (at your option) any later the tix package management programs are licensed under the GNU General Public
License, either version 3 or (at youroption) any later version.
Unless the license header in the source code states otherwise, the libc library,
the libpthread library, and the libdispd library are licensed under the GNU
Lesser General Public License, either version 3 or (at your option) any later
version. version.
Unless the license header in the source code states otherwise, the libc library
and the libdispd library are licensed under the GNU Lesser General Public
License, either version 3 or (at your option) any later version.
The Sortix math library (libm) is licensed as described in the libm/LEGAL file. The Sortix math library (libm) is licensed as described in the libm/LEGAL file.

View File

@ -22,11 +22,10 @@ to those of Unix systems and many common Unix commands are available.
Keyboard Layout Keyboard Layout
--------------- ---------------
Only the US Keyboard layout remains supported at this time. Adding new layouts Only the US Keyboard layout is supported at this time. The whole system uses
to the kernel is simple, but the system only supports ASCII text, making support UTF-8 as the standard text encoding. However, the console has limited font data
for international keyboard layouts pointless at this time. Eventually, a program at this time and it is not possible to enter many characters. A full keyboard
in user-space will be able to decode the keyboard scancodes, making it no longer layout system has been implemented but was not merged in time for this release.
a kernel problem.
Changing the Video Mode Changing the Video Mode
----------------------- -----------------------
@ -94,7 +93,7 @@ This as an incomplete list of the common top level directories in Sortix.
* `/$cputype` - Files for $cputype. * `/$cputype` - Files for $cputype.
* `/$cputype/bin` - Programs for $cputype. * `/$cputype/bin` - Programs for $cputype.
* `/$cputype/lib` - Shared libaries for $cputype. * `/$cputype/lib` - Shared libaries for $cputype.
* `/$cputype/libexec` - Shared libaries for $cputype. * `/$cputype/libexec` - Non-user programs for $cputype.
Some of these directories not be present or empty on your installation. Some of these directories not be present or empty on your installation.
@ -111,17 +110,16 @@ supported:
* History. * History.
* Background tasks ('&'). * Background tasks ('&').
* Standard output redirection ('>'). * Standard output redirection ('>').
* Piping stdin from a task to stdin of another ('|'). * Piping stdout from a task to stdin of another ('|').
* Stopping the currently running task (Control-C, '^C'). * Stopping the currently running task (Control-C, '^C').
* Waiting for a task to complete and executing the next (';'). * Waiting for a task to complete and executing the next (';').
* Setting environmental variables ('FOO=bar'). * Setting environmental variables ('FOO=bar').
* Using $FOO to insert an environmental variable. * Using $FOO to insert an environmental variable.
* Listing all environmental variable ('env'). * Listing all environmental variable ('env').
* Setting the hostname ('HOSTNAME=sortix-pc').
* Changing the current directory ('cd /home'). * Changing the current directory ('cd /home').
* Removing an environmental variable ('unset FOO'). * Removing an environmental variable ('unset FOO').
* Clearing all enviromental variables ('clearenv'). * Clearing all enviromental variables ('clearenv').
* Executing shell scripts ('sh script param1 param2'). * Executing shell scripts ('sh script.sh param1 param2').
* Escaping some special characters ('\'). * Escaping some special characters ('\').
* Comments ('#'). * Comments ('#').
* Exiting the shell ('exit') ('exit 42'). * Exiting the shell ('exit') ('exit 42').
@ -142,6 +140,9 @@ These features are missing from the shell:
* Escaping newline characters. * Escaping newline characters.
* And much more; the shell remains hacky. * And much more; the shell remains hacky.
If a better shell is installed, and the shell is non-interactive, then the sh
program will automatically run the superior shell transparently.
Included Programs Included Programs
----------------- -----------------
@ -217,31 +218,30 @@ known to work at some level of stability:
* bison * bison
* bochs * bochs
* bzip2 * bzip2
* cairo * dash
* dbus
* diffutils * diffutils
* fontconfig * gawk
* freetype
* gcc * gcc
* gettext * gettext (GNU)
* git * git
* grep * grep (GNU)
* groff * groff
* groff * gzip (GNU)
* gzip
* hello (GNU) * hello (GNU)
* libassuan * libassuan
* libatk * libatk
* libav * libav
* libcairo * libcairo
* libdaala * libdaala
* libdbus
* libexpat * libexpat
* libffi * libffi
* libfontconfig
* libfreetype
* libgcrypt * libgcrypt
* libgdk-pixbuf * libgdk-pixbuf
* libglib * libglib
* libGL (Mesa) * libGL (Mesa)
* libGLU (Mesa)
* libgmp * libgmp
* libgnutls * libgnutls
* libgpg-error * libgpg-error
@ -252,26 +252,27 @@ known to work at some level of stability:
* libksba * libksba
* libmpc * libmpc
* libmpfr * libmpfr
* libnettle
* libogg * libogg
* libpango * libpango
* libpixman
* libpng * libpng
* libSDL
* libssl (LibreSSL)
* libstdc++
* libtheora * libtheora
* libvorbis * libvorbis
* libwayland * libwayland
* libxkbcommon * libxkbcommon
* m4 * libz (Sortix)
* make * m4 (GNU)
* nettle * make (GNU)
* openssl
* patch (GNU) * patch (GNU)
* pixman
* python * python
* quake * quake
* sdl
* sed (GNU) * sed (GNU)
* tar (GNU) * tar (GNU)
* xz * xz
* zlib
* (and more) * (and more)
More software will be ported in the future as the system matures. Your release More software will be ported in the future as the system matures. Your release
@ -348,18 +349,21 @@ second extended filesystem and mounts it at an empty directory. The filesystem
may need to be carefully configured as not all ext2 features are currently may need to be carefully configured as not all ext2 features are currently
supported. In particular, only the `large_file` and `filetype` features are supported. In particular, only the `large_file` and `filetype` features are
supported. There is no support for formatting or checking filesystems yet, this supported. There is no support for formatting or checking filesystems yet, this
will have to be done from an external system. You must take care to send the will have to be done from an external system. If the device `/dev/ata0p1`
filesystem server a SIGTERM signal to shut down when you are unfinished, contains an ext2 filesystem, then it can be mounted using:
otherwise the data may not have been synced to disk. This will be done
automatically if the root filesystem was mounted by the initrd. If the device
`/dev/ata0p1` contasins an ext2 filesystem, then it can be mounted using:
mkdir /fs mkdir /mnt
extfs /dev/ata0 /fs extfs /dev/ata0 /mnt
You can then access the filesystem at `/fs`. There is no real unmount support You can then access the filesystem at `/fs`. You can unmount it safely when you
and if the file system server shuts down, the system may hang trying to are done using it:
communicate with a server that isn't there.
unmount /mnt
This will safely shut down the filesystem process and sync to disk. Beware how
init doesn't know about your personal mount points and powering off the system
will cause all processes to be destroyed, and such mount points will not be
shut down gracefully at the moment.
Graphical User Interface Graphical User Interface
------------------------ ------------------------
@ -376,45 +380,48 @@ Unix sockets are available.
Building Sortix under Sortix Building Sortix under Sortix
---------------------------- ----------------------------
You can build Sortix under itself and made modifications to it. It is not yet You can build Sortix under itself and make modifications to it. It is not yet
possible to build all the the third party software used to build itself, but you possible to build all the the third party software used to build itself, but you
can use the system to improve it until it is possible to build third party can use the system to improve it until it is possible to build third party
software under it. software under it.
You need a version of Sortix that ships its own source code in `/src` and You need a version of Sortix that ships its own source code in `/src` and
contains a copy of the GNU Compiler Collection (gcc). Additionally, you should contains a copy of the GNU Compiler Collection (gcc). Additionally, you should
be booting from a harddisk so that the new kernel is used after a reboot, be booting from a harddisk so that the new kernel is used after a reboot.
otherwise you will have to be satisfied with only using a new user-land. Otherwise you can only update to a new user-land.
You can use the `colormake` program instead of regular `make` if you want You can use the `colormake` program instead of regular `make` if you want
colored output, which eases spotting compile warnings and errors. This program colored output, which eases spotting compile warnings and errors. This program
simply invokes the real `make` and colors its output. simply invokes the real `make` and colors its output.
The `/src` directory contains a makefile that eases rebuilding the entire The `/src` directory contains a makefile that eases rebuilding the entire system
system automatically. To rebuild the entire system simply run: automatically. To rebuild the entire system simply run:
cd /src cd /src
make make
make install chroot /src/sysroot init # to test the new user-land
make sysmerge # to update to the new user-land
This will recompile the entire operating system and install it into the staging This will recompile the entire operating system and install it into the staging
area `/src/sysroot`. This is a full usable image of the root filesystem for a area `/src/sysroot`. This is a full usable image of the root filesystem for a
Sortix installation and you can successfully execute `chroot /src/sysroot init`. Sortix installation and you can chroot into it if desired.
The install target does a single `cp -RT /src/sysroot /` command that replaces
copies all files in `/src/sysroot` onto their root filesystem counterparts, with The sysmerge target merges the image in `/src/sysroot` onto the current root
the exception that the precious files in /src are not replaced with their filesystem without changing local files, as opposed to a make install that
/src/system/src counterparts (even though they usually would be equal). indiscriminately overwrites everything.
You will be running a new version of everything upon completion, except the You will be running a new version of everything upon completion, except the
kernel and programs were previously started will still be running the old kernel and existing processes will continue to run the old programs. If the root
version. If the root filesystem is permanent and the computer has been filesystem is permanent and the computer has been configured to boot from it,
configured to boot from it, then you can reboot the system by exiting the then you can reboot the system by exiting the initial shell. You will then be
initial shell. You will then be running an entirely new system. running an entirely new system.
### Building System Components ###
The projects that are part of the core system can be easily built and installed The projects that are part of the core system can be easily built and installed
with the provided makefiles. They can be built with this simple sequence: with the provided makefiles. They can be built with this simple sequence:
cd /src/<package> cd /src/${package}
make make
make install make install
@ -461,6 +468,7 @@ large parts of user-land if you update this library.
The Pthread Library (libpthread) provides a threading implementation through the The Pthread Library (libpthread) provides a threading implementation through the
standard header <pthread.h> as known from POSIX. Like the C library, you will standard header <pthread.h> as known from POSIX. Like the C library, you will
likely want to recompile large parts of user-land if you update this library. likely want to recompile large parts of user-land if you update this library.
### The Display Daemon ### ### The Display Daemon ###
The dispd library allows processes to communicate with the dispd server that The dispd library allows processes to communicate with the dispd server that
@ -514,7 +522,7 @@ This is the Sortix shell. Currently the `sh` program is a wrapper that looks for
a better non-interactive shell if running a script, otherwise it invokes the a better non-interactive shell if running a script, otherwise it invokes the
hacky `sortix-sh` program. hacky `sortix-sh` program.
### Sortix Kernel ### ### Kernel ###
The Sortix kernel is the core of the Sortix operating system. It provides all The Sortix kernel is the core of the Sortix operating system. It provides all
the primitives libc needs to implement a Unix-like environment. the primitives libc needs to implement a Unix-like environment.

View File

@ -1,6 +1,6 @@
/******************************************************************************* /*******************************************************************************
Copyright(C) Jonas 'Sortie' Termansen 2013. Copyright(C) Jonas 'Sortie' Termansen 2013, 2014.
This file is part of the Sortix C Library. This file is part of the Sortix C Library.
@ -29,7 +29,7 @@
#define BRAND_DISTRIBUTION_NAME "Sortix" #define BRAND_DISTRIBUTION_NAME "Sortix"
/* The website of the distribution. */ /* The website of the distribution. */
#define BRAND_DISTRIBUTION_WEBSITE "http://sortix.org" #define BRAND_DISTRIBUTION_WEBSITE "https://sortix.org"
/* The name of the operating system. */ /* The name of the operating system. */
#define BRAND_OPERATING_SYSTEM_NAME "Sortix" #define BRAND_OPERATING_SYSTEM_NAME "Sortix"