After a year and a half of development , the operating system Redox 0.7 , developed using the Rust language and the microkernel concept, has been published. The developments of the project are distributed under the free MIT license. For testing Redox OS offered , 75 MB in size. The assemblies are generated for the x86_64 architecture and are available for systems with UEFI and BIOS.
When preparing a new release, the main attention was paid to ensuring work on real hardware. Main innovations:
- completely rewritten bootloader , in which the code for booting on systems with BIOS and UEFI is unified and mainly written in Rust. Changing the bootloader has significantly expanded the range of supported hardware.
- In the kernel , in addition to fixing bugs, work has been done to improve performance and expand hardware support. CPU-specific variables have been moved to use the GS register. Reflection (mapping) of all physical memory is provided, the use of recursive memory pages is stopped. The assembler code in inline inserts has been rewritten to improve compatibility with future releases of the compiler.
- Added initial support for the AArch64 architecture.
- Switched to processing all file paths in UTF-8 encoding.
- The code for working with ACPI AML (ACPI Machine Language) Specification – uefi.org has been moved from the kernel to the acpid background process running in user space.
- The contents of Initfs have been moved to a new file, making it easier to package.
- file system RedoxFS rewritten and switched to use the CoW (Copy-on-Write) mechanism, in which changes do not overwrite information, but are saved to a new location, which made it possible to achieve a significant increase in reliability. Of the new features of RedoxFS, support for transactional updates, data encryption using the AES algorithm, as well as assurance of data and metadata with digital signatures is noted. Shared use of the FS code in the system and the bootloader is provided.
- The improvement of the standard C-library Relibc , which can work not only in Redox, but also in distributions based on the Linux kernel, has been continued. The changes made have simplified the transfer of various programs to Redox and have solved problems with many C programs and libraries.
- A version rustc that can run in Redox. Of the remaining tasks, performance optimization and adaptation of the cargo package manager to work in the Redox environment are noted.
The operating system develops in accordance with the Unix philosophy and borrows some ideas from SeL4, Minix and Plan 9. Redox uses the microkernel concept, in which only communication between processes and resource management is provided at the kernel level, and all other functionality is placed in libraries that can be used both kernel and user applications. All drivers run in user space in isolated sandbox environments. For compatibility with existing applications, a special POSIX layer is provided to allow many programs to run without porting.
The system applies the principle “everything is a URL”. For example, the URL “log://” can be used for logging, “bus://” for inter-process communication, “tcp://” for network communication, and so on. Modules, which can be implemented as drivers, kernel extensions, and custom applications, can register their own URL handlers, for example, you can write an I/O access module and bind it to the URL “port_io://”, after which you can use it to access port 60 by opening the URL “port_io://60”.
The user environment in Redox is built ‘s own graphical shell Orbital (not to be confused with the other shell Orbital that uses Qt and Wayland) and the OrbTk toolkit , which provides an API similar to Flutter, React and Redux. is used as a web browser Netsurf . The project also develops its own package manager , a set of standard utilities (binutils, coreutils, netutils, extrautils), the ion command shell, the standard C library relibc vim-like text editor sodium , the network stack, and the file system. The configuration is set in the Toml .
Leave a Reply