Update readme

This commit is contained in:
Kevin Lange 2013-04-04 21:18:25 -07:00
parent 969d454083
commit 154553f6ae

View File

@ -1,13 +1,11 @@
# ToAruOS (とあるOS) #
![ToAruOS (logo)](https://github.com/klange/osdev/raw/master/docs/logo.png)
とあるOS is a hobby operating system based loosely on POSIX standards. Development began in December of 2010 at the University of Illinois at Urbana-Champaign, was managed for a short time by the UIUC [SIGOps](http://www.acm.uiuc.edu/sigops/) and, since May 2012, is independently managed and developed. The primary goal of the project is to build a usable, graphical operating system and to allow its developers to learn the inner workings of various technologies related to that achieving goal.
とあるOS (ToaruOS) is a hobby Unix-like operating system. Development began in December of 2010 at the University of Illinois at Urbana-Champaign and is currently a one-man effort. For a short time, the project was the focus of the UIUC [SIGOps](http://www.acm.uiuc.edu/sigops/).
### Build Status ###
Both the kernel and userspace are included in this repository.
Automated build tests are run with nearly every commit through Travis CI.
[![Automated build testing provided by Travis CI.](https://secure.travis-ci.org/klange/osdev.png?branch=master)](http://travis-ci.org/klange/osdev)
## Community
### IRC ###
@ -15,53 +13,53 @@ For discussion, help with building or running the OS, and for up-to-date build v
## Features ##
とあるOS currently supports a number of important operating system concepts and facilities:
The とある kernel provides a number of standard features, including:
* Processes
* Preemptive multitasking
* Kernel threads
* Processes and threads
* The kernel supports loading of static ELF binaries
* Threads are scheduled by the kernel
* Shared memory
* Through page table mappings
* POSIX-compliant file operations
* Pipes
* Backed by ring buffers
* Pipes and TTYs
* Virtual file system
* `/proc` implementation similar to Linux
* `/dev` entries
* EXT2 filesystem for disk access
* Signals
* Mostly POSIX-compliant under the loose method
* EXT2 read/write support
* For IDE devices or SATA devices *operating in IDE compatibility mode*
* PS/2 keyboard/mouse support
* Of course, what doesn't?
* Graphical features
* Windowed GUI environment with transparency support
* Limited GUI toolkit available
* Extensive, ANSI-capable terminal
* Includes extensive compatibility with xterm
* Support for 256 colors
* Beautifully rendered anti-aliased text through FreeType (please see the licenses below for included fonts)
* Supports Unicode text (UTF-8 encoded)
* And dozens of other minor things not worth listing here.
* Delivery is asynchronous from sending
* Processed immediately during next context switch into receiving process
The included userspace also provides:
* A number of standard Unix utilities
* A graphical interface
* Composited window manager
* Limited widget toolkit
* Terminal emulator
* With general xterm compatibile, support for 256 color palette, etc.
* Anti-aliased text with FreeType
* General support for UTF-8
### Third-Party Software ###
While とあるOS ships with only its own native software tools, we are working on packages for additional third-party software, including:
* Lua
* Lua's standalone interpreter has been successfully built and run.
* Some Lua functionality is currently missing and we are working to solve this.
The following libraries are built by the build scripts:
とあるOS makes use of the following third-party libraries in userspace applications:
* `libpng` - Used extensively by the native graphics library to provide wallpaper and icons.
* `zlib` - Dependency of `libpng`, but also generally useful.
* `freetype` - For rendering text
* `cairo` and `pixman` - For accelerated and managed graphics.
Additionally, a number of third-party software packages have been ported to とあるOS, but are not included in this distribution:
* Lua - Builds as-is
* MuPDF - See [klange/toaru-pdfviewer](https://github.com/klange/toaru-pdfviewer) (library must be cross compiled)
* Vim - Port completed in March of 2013
## Screenshots ##
Here's what とあるOS looks like:
![Screenshot](http://i3.minus.com/i2zo4p43c9x1T.png)
(http://i3.minus.com/i2zo4p43c9x1T.png)
![Screenshot](http://i.imgur.com/uG1HFbq.png)
(http://i.imgur.com/uG1HFbq.png)
Here's what とあるOS has looked like in the past:
@ -91,7 +89,7 @@ This will install the required dependencies, build the userspace libraries and t
You can then run `make run` or `make kvm` to run QEMU. An additional `make run-config` command is available that allows easy customization of the emulation environment through a config file (`.config`, see `util/config-parser` for available options).
While we only officially support QEMU, other environments - including actual hardware - should work given the appropriate tools. If you are eager to try とあるOS from a real machine, please use GRUB 2 and ensure that you provide the correct graphics payload options. In the future, GRUB 2 configurations will be supported with configuration files and build scripts.
While we only officially support QEMU, other environments - including actual hardware - should work given the appropriate tools. If you are eager to try とあるOS from a real machine, please use GRUB 2 and ensure that you provide the correct graphics payload options. You may find a sample GRUB configuration the `image-builder` directory.
### User Accounts ###
@ -101,13 +99,11 @@ The default root password is `toor`. There is also a regular user `local` with p
With some work, とあるOS is also known to build successfully under cygwin. Instructions are forthcoming.
### Prebuilt Images ###
Our [downloads](https://github.com/klange/osdev/downloads) section contains prebuilt images in the form of VMDK disk images. These disk images should run in VirtualBox, and can be converted to a format suitable for use with QEMU or Bochs. VirtualBox is the preferred environment for non-Linux hosts as it provides hardware virtualization that greatly improves user experience. Be sure to equip your VM with a sufficient amount of RAM (1GB should suffice).
Unfortunately, we are no longer able to host prebuilt images through GitHub. We are exploring other options for distributing pre-built images and are also working to provide an ISO distribution.
If you would like to try to build your own images, you can attempt to use the script in `image-builder`. It should be run as follows:
### Building an Image for VirtualBox, etc. ###
sudo ./create-image.sh ../
Root is required as the script makes use of mounting and native partitioning tools on the Linux host to generate a bootable disk image. The final image should be suitable for use in VirtualBox or VMWare after appropriate conversion from the raw byte image. Please note that these scripts are not supported.
An experimental, unsupported image building tool that will produce a "production-ready" image, including GRUB 2, is provided in the `image-builder` directory. The script, `create-image.sh`, must be run as root and will produce a 1GB raw disk image which be converted to other formats as needed.
## Troubleshooting
@ -121,6 +117,9 @@ To build the kernel, you will need `yasm`, `clang`, and GNU `ld` (which you undo
### Hard disks ###
You will need `genext2fs` to generate the EXT2 images for the hard disk drive.
### Userspace ###
A toolchain is provided and built from the `build.sh`; this script should be able to install its own dependencies on Ubuntu/Debian and Fedora. Other environments are not supported, but examination for the script should provide a reference point on what packages are necessary.
## References ##
Here are some tutorials we found useful early on:
@ -311,7 +310,7 @@ ToAruOS contains additional software with the following copyright notices:
Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
* The code to perform a Gaussian blur on a graphics context (part of userspace/lib/graphics.c) comes from sample code for Cairo and carries the following license:
* The code to perform a Gaussian blur on a graphics context (part of `userspace/lib/graphics.c`) comes from sample code for Cairo and carries the following license:
Copyright © 2008 Kristian Høgsberg
Copyright © 2009 Chris Wilson