readme: updates
This commit is contained in:
parent
c7821cf30e
commit
0f5e5158a9
42
README.md
42
README.md
@ -2,8 +2,8 @@
|
||||
|
||||
ToaruOS is a 64-bit, hobbyist, educational, Unix-like operating system built entirely from scratch. It includes a kernel, bootloader, dynamic linker, C standard library, composited windowing system, and several utilities and applications. All components of the core operating system are original, providing a complete environment in approximately 80,000 lines of C and assembly, all of which is included in this repository.
|
||||
|
||||
![Screenshot](https://user-images.githubusercontent.com/223546/105782051-11f73680-5fb7-11eb-94ed-171334c3de74.png)
|
||||
*Demonstration of ToaruOS's UI, terminal emulator, and text editor.*
|
||||
![Screenshot](https://user-images.githubusercontent.com/223546/122041412-e2d14c80-ce13-11eb-9494-49fa38108f92.png)
|
||||
*Demonstration of ToaruOS's UI and some applications.*
|
||||
|
||||
## History
|
||||
|
||||
@ -11,25 +11,25 @@ The ToaruOS project began in December 2010 and has its roots in an independent s
|
||||
|
||||
ToaruOS 1.0 was released in January, 2017, and featured a Python userspace built on Newlib. Since 1.6.x, ToaruOS has had its own C library, dependencies on third-party libraries have been removed, and most of the Python userspace has been rewritten in C. More recent releases have focused on improving the C library support, providing more ports in our package repository, and adding new features.
|
||||
|
||||
In April, 2021, work began on ToaruOS 2.0, which brings a rewritten kernel for x86-64 (and potentially other architectures) and support for SMP. The new "Misaka" kernel was merged upstream at the end of May. Completion of ToaruOS 2.0 is currently ongoing.
|
||||
In April, 2021, work began on ToaruOS 2.0, which brings a rewritten kernel for x86-64 (and potentially other architectures) and support for SMP. The new "Misaka" kernel was merged upstream at the end of May.
|
||||
|
||||
## Features
|
||||
|
||||
- **Dynamically linked userspace** with support for runtime `dlopen`ing of additional libraries.
|
||||
- **Composited graphical UI** with SSE-accelerated alpha blitting and optional Cairo backend.
|
||||
- **Composited graphical UI** with software acceleration and a late-2000s design inspiration.
|
||||
- **VM integration** for absolute mouse and automatic display sizing in VirtualBox and VMware Workstation.
|
||||
- **Unix-like terminal interface** including a feature-rich terminal emulator and several familiar utilities.
|
||||
- **Optional third-party ports** including GCC 10.3, Binutils, SDL1.2, Quake, and more.
|
||||
|
||||
### Notable Components
|
||||
|
||||
- **Misaka Kernel**, [kernel/](kernel/), the core of the operating system.
|
||||
- **Misaka** (kernel), [kernel/](kernel/), the core of the operating system.
|
||||
- **Yutani** (window compositor), [apps/compositor.c](apps/compositor.c), manages window buffers, layout, and input routing.
|
||||
- **Bim** (text editor), [apps/bim.c](apps/bim.c), is a vim-inspired editor with syntax highlighting.
|
||||
- **Terminal**, [apps/terminal.c](apps/terminal.c), xterm-esque terminal emulator with 256 and 24-bit color support.
|
||||
- **ld.so** (dynamic linker/loader), [linker/linker.c](linker/linker.c), loads dynamically-linked ELF binaries.
|
||||
- **Esh** (shell), [apps/sh.c](apps/sh.c), supports pipes, redirections, variables, and more.
|
||||
- **Kuroko**, [kuroko/](https://kuroko-lang.github.io/), a dynamic bytecode-compiled programming language.
|
||||
- **Kuroko** (interpreter), [kuroko/](https://kuroko-lang.github.io/), a dynamic bytecode-compiled programming language.
|
||||
|
||||
## Current Goals
|
||||
|
||||
@ -46,39 +46,31 @@ The following projects are currently in progress:
|
||||
|
||||
## Building / Installation
|
||||
|
||||
*This section is being updated to reflect changes in ToaruOS 2.0 and may be outdated or incorrect.*
|
||||
|
||||
To build ToaruOS from source, it is currently recommended you use a recent Debian- or Ubuntu-derived Linux host environment. Our build machines generally run Ubuntu 20.04 (the current LTS as of writing).
|
||||
|
||||
Several packages are necessary for the build system: `build-essential` (to build the cross-compiler), `xorriso` (to create CD images), `python3` (various build scripts), `mtools` (for building FAT EFI system partitions), `gnu-efi` (for building the EFI loaders).
|
||||
|
||||
Beyond package installation, no part of the build needs root privileges.
|
||||
|
||||
The build process has two parts: building a cross-compiler, and building the operating system. The cross-compiler uses GCC 10.3 and can be built by pulling the submodules `util/binutils-gdb` and `util/gcc` and running `util/build-toolchain.sh`. Generally, this only needs to be done once, and the cross-compiler does not depend on any of the components built for the operating system itself, though some components may have soft dependencies on the libc. Once the cross-compiler has been built, `make` will continue to build the operating system itself.
|
||||
|
||||
### Building With Docker
|
||||
|
||||
You can skip the process of building the cross-compiler toolchain (which doesn't get updated very often anyway) by using our pre-built toolchain through Docker:
|
||||
General users hoping to build ToaruOS from source are recommended to use our prebuilt Docker image, which contains all the necessary tools:
|
||||
|
||||
git clone --recursive https://github.com/klange/toaruos
|
||||
cd toaruos
|
||||
docker pull toaruos/build-tools:1.99.x
|
||||
docker run -v `pwd`:/root/misaka -w /root/misaka -e LANG=C.UTF-8 -t toaruos/build-tools:1.99.x util/build-in-docker.sh
|
||||
|
||||
After building like this, you can run the various utility targets (`make run`, etc.). Try `make shell` to run a ToaruOS shell (using QEMU and a network socket - you'll need netcat for this to work).
|
||||
After building like this, you can run the various utility targets (`make run`, etc.). Try `make shell` to run a ToaruOS shell using a serial port with QEMU.
|
||||
|
||||
### Build Process Internals
|
||||
|
||||
The `Makefile` uses a Kuroko tool, `auto-dep.krk`, to generate additional Makefiles for the userspace applications libraries, automatically resolving dependencies based on `#include` directives.
|
||||
The `Makefile` uses a Kuroko tool, `auto-dep.krk`, to generate additional Makefiles for the userspace applications and libraries, automatically resolving dependencies based on `#include` directives.
|
||||
|
||||
In an indeterminate order, the C library, kernel, userspace librares and applications are built.
|
||||
In an indeterminate order, the C library, kernel, userspace librares and applications are built, combined into a compressed archive for use as a ramdisk, and then packaged into an ISO9660 filesystem image.
|
||||
|
||||
### Project Layout
|
||||
|
||||
- **apps** - Userspace applications, all first-party.
|
||||
- **base** - Ramdisk root filesystem staging directory. Includes C headers in `base/usr/include`, as well as graphical resources for the compositor and window decorator.
|
||||
- **boot** - Old bootloaders, not yet ready for ToaruOS 2.0.
|
||||
- **boot** - Legacy BIOS loader.
|
||||
- **build** - Auxiliary build scripts for future platform ports.
|
||||
- **kernel** - The Misaka kernel.
|
||||
- **kuroko** - Submodule checkout of the Kuroko interpreter.
|
||||
- **lib** - Userspace libraries.
|
||||
- **libc** - C standard library implementation.
|
||||
- **linker** - Userspace dynamic linker/loader, implements shared library support.
|
||||
@ -88,17 +80,17 @@ In an indeterminate order, the C library, kernel, userspace librares and applica
|
||||
|
||||
## Running ToaruOS
|
||||
|
||||
Currently, the build tools in this repository will produce a kernel binary and a compressed ramdisk, which can be used with a Multiboot-compliant loader such as GRUB. QEMU also provides direct support for loading Multiboot kernels:
|
||||
|
||||
### QEMU
|
||||
|
||||
```
|
||||
qemu-system-x86_64 -M q35 -kernel misaka-kernel -initrd ramdisk.igz -append "root=/dev/ram0 start=live-session migrate" -enable-kvm -m 1G
|
||||
qemu-system-x86_64 -M q35 -enable-kvm -m 1G -soundhw ac97 -cdrom image.iso
|
||||
```
|
||||
|
||||
### Other
|
||||
|
||||
Until the native bootloaders are ready for ToaruOS 2.0, testing in other virtual machines can be done [with GRUB](https://github.com/klange/toaruos-grub/tree/misaka).
|
||||
The legacy BIOS loader has been tested in VirtualBox and VMWare. For both, set up a virtual machine with an "Other (64-bit)" guest OS and attach the CD image. A least 32MB of display memory and 1GB of RAM are recommended. Some hardware configurations may not be supported.
|
||||
|
||||
For testing with EFI systems or on real hardware, [GRUB is recommended](https://github.com/klange/toaruos-grub/tree/misaka) until the native EFI loader is rewritten.
|
||||
|
||||
## Community
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user