1 | # HelenOS
|
---|
2 |
|
---|
3 | HelenOS is a portable microkernel-based multiserver operating
|
---|
4 | system designed and implemented from scratch. It decomposes key
|
---|
5 | operating system functionality such as file systems, networking,
|
---|
6 | device drivers and graphical user interface into a collection of
|
---|
7 | fine-grained user space components that interact with each other
|
---|
8 | via message passing. A failure or crash of one component does not
|
---|
9 | directly harm others. HelenOS is therefore flexible, modular,
|
---|
10 | extensible, fault tolerant and easy to understand.
|
---|
11 |
|
---|
12 | 
|
---|
13 |
|
---|
14 | HelenOS aims to be compatible with the C11 and C++14 standards, but does not
|
---|
15 | aspire to be a clone of any existing operating system and trades compatibility
|
---|
16 | with legacy APIs for cleaner design. Most of HelenOS components have been made
|
---|
17 | to order specifically for HelenOS so that its essential parts can stay free of
|
---|
18 | adaptation layers, glue code, franken-components and the maintenance burden
|
---|
19 | incurred by them.
|
---|
20 |
|
---|
21 | * [Website](http://helenos.org)
|
---|
22 | * [Wiki](http://helenos.org/wiki)
|
---|
23 | * [Tickets](http://www.helenos.org/report/1)
|
---|
24 | * [How to contribute](http://www.helenos.org/wiki/HowToContribute)
|
---|
25 |
|
---|
26 | ## Portability
|
---|
27 |
|
---|
28 | HelenOS runs on seven different processor architectures and machines ranging
|
---|
29 | from embedded ARM devices and single-board computers through multicore 32-bit
|
---|
30 | and 64-bit desktop PCs to 64-bit Itanium and SPARC rack-mount servers.
|
---|
31 |
|
---|
32 | ## Building
|
---|
33 |
|
---|
34 | ### Building the toolchain
|
---|
35 |
|
---|
36 | In order to build HelenOS, one must first build the cross-compiler toolchain
|
---|
37 | (either as a root or by specifying the `CROSS_PREFIX` environment variable)
|
---|
38 | by running (example for the amd64 architecture, further list of targets can be
|
---|
39 | found in the `default` directory):
|
---|
40 |
|
---|
41 | ```
|
---|
42 | $ cd HelenOS/tools
|
---|
43 | $ ./toolchain.sh amd64
|
---|
44 | ```
|
---|
45 |
|
---|
46 | The toolchain script will print a list of software packages that are required
|
---|
47 | for the toolchain to correctly build. Make sure you install all the dependencies.
|
---|
48 | Unfortunately, the script cannot install the required dependencies for you automatically
|
---|
49 | since the host environments are very diverse. In case the compilation of the toolchain
|
---|
50 | fails half way through, try to analyze the error message(s), add appropriate missing
|
---|
51 | dependencies and try again.
|
---|
52 |
|
---|
53 | As an example, here are some of the packages you will need for Ubuntu 12.10 (may be out of date):
|
---|
54 |
|
---|
55 | ```
|
---|
56 | $ sudo apt-get install build-essential libgmp-dev libmpfr-dev ppl-dev libmpc-dev zlib1g-dev texinfo libtinfo-dev xutils-dev
|
---|
57 | ```
|
---|
58 |
|
---|
59 | Whereas for CentOS/Fedora, you will need:
|
---|
60 |
|
---|
61 | ```
|
---|
62 | # sudo dnf group install 'Development Tools'
|
---|
63 | # sudo dnf install wget texinfo libmpc-devel mpfr-devel gmp-devel PyYAML genisoimage
|
---|
64 | ```
|
---|
65 | In case the toolchain script won't work no matter how hard you try, let us know.
|
---|
66 | Please supply as many relevant information (your OS and distribution, list of
|
---|
67 | installed packages with version information, the output of the toolchain script, etc.) as
|
---|
68 | possible.
|
---|
69 |
|
---|
70 | ### Configuring the build
|
---|
71 |
|
---|
72 | Go back to the source root of HelenOS and start the build process:
|
---|
73 |
|
---|
74 | ```
|
---|
75 | $ cd ..
|
---|
76 | $ make PROFILE=amd64
|
---|
77 | ```
|
---|
78 |
|
---|
79 | Now HelenOS should automatically start building.
|
---|
80 |
|
---|
81 | Note: If you installed the toolchain to a custom directory, make sure `CROSS_PREFIX`
|
---|
82 | environment variable is correctly set.
|
---|
83 |
|
---|
84 | ### Running the OS
|
---|
85 |
|
---|
86 | When you get the command line back, there should be an `image.iso` file in the source
|
---|
87 | root directory. If you have QEMU, you should be able to start HelenOS by running:
|
---|
88 |
|
---|
89 | ```
|
---|
90 | $ ./tools/ew.py
|
---|
91 | ```
|
---|
92 |
|
---|
93 | For additional information about running HelenOS, see
|
---|
94 | [UsersGuide/RunningInQEMU](http://www.helenos.org/wiki/UsersGuide/RunningInQEMU) or
|
---|
95 | [UsersGuide/RunningInVirtualBox](http://www.helenos.org/wiki/UsersGuide/RunningInVirtualBox) or
|
---|
96 | see the files in tools/conf.
|
---|
97 |
|
---|
98 | ## License
|
---|
99 |
|
---|
100 | HelenOS is open source, free software. Its source code is available under
|
---|
101 | the BSD license. Some third-party components are licensed under GPL.
|
---|