diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8dd6d56 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +public/ +.hugo_build.lock diff --git a/README.md b/README.md index 1cd8978..92e2f09 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ ## ExectOS Web Site +This repository contains the entire content of the ExectOS Website, powered by the Hugo Static Site Generator. diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..c37053a --- /dev/null +++ b/config.toml @@ -0,0 +1,73 @@ +baseURL = "https://exectos.eu.org/" +title = "ExectOS Operating System" +theme = "exectos" +languageCode = "en-us" +defaultContentLanguage = "en" +paginate = 10 + +[menu] + +[[menu.main]] + name = "About" + weight = 1 + [[menu.main]] + parent = "About" + name = "About ExectOS" + url = "/about-exectos" + weight = 11 + [[menu.main]] + parent = "About" + name = "FAQ" + url = "/faq" + weight = 12 + +[[menu.main]] + name = "Development" + weight = 2 + [[menu.main]] + parent = "Development" + name = "Architecture" + url = "/xtos-architecture" + weight = 21 + [[menu.main]] + parent = "Development" + name = "Contributing" + url = "/contributing" + weight = 22 + [[menu.main]] + parent = "Development" + name = "Source Code" + url = "https://git.codingworkshop.eu.org/xt-sys/exectos" + weight = 23 + +[[menu.main]] + name = "Downloads" + weight = 3 + [[menu.main]] + parent = "Downloads" + name = "ExectOS" + url = "https://artifacts.codingworkshop.eu.org/ExectOS" + weight = 31 + [[menu.main]] + parent = "Downloads" + name = "ToolChain" + url = "https://github.com/xt-sys/xtchain/releases" + weight = 32 + +[[menu.main]] + name = "Discord" + url = "https://discord.com/invite/zBzJ5qMGX7" + weight = 4 + +[[menu.main]] + name = "Donate" + url = "https://github.com/sponsors/xt-sys/" + weight = 5 + +[params] + defaultKeywords = ["ExectOS", "XT", "XTOS", "efi", "gpl3", "kernel", "nt", "open source", "os", "osdev", "uefi boot", "win32"] + defaultDescription = "ExectOS Operating System" + +[taxonomies] + author = "author" + tag = "tags" diff --git a/content/about-exectos.md b/content/about-exectos.md new file mode 100644 index 0000000..3defba9 --- /dev/null +++ b/content/about-exectos.md @@ -0,0 +1,46 @@ ++++ +title = 'About Exectos' +date = 2024-06-16T12:12:40+02:00 +draft = true ++++ +## About +ExectOS aims to be a stable and flexible, general purpose operating system written from scratch. It is designed to be +modular, maintainable and compatible with existing software. It implements a brand new XT architecture and features own +native application interface. On the backend, it contains a powerful driver model between device drivers and the kernel, +that enables kernel level components to be upgraded without a need to recompile all drivers. + +## XT Architecture +ExectOS is a preemptive, reentrant multitasking operating system that implements the XT architecture which derives from +NT architecture. It is modular, and consists of two main layers: microkernel and user modes. Its' kernel mode has full +access to the hardware and system resources and runs code in a protected memory area. It consists of executive services, +which is itself made up on many modules that do specific tasks, a kernel and drivers. Unlike the NT, system does not +feature a separate Hardware Abstraction Layer (HAL) between the physical hardware and the rest of the OS. Instead, XT +architecture integrates a hardware specific code with the kernel. The user mode is made up of subsystems and it has been +designed to run applications written for many different types of operating systems. This allows us to implement any +environment subsystem to support applications that are strictly written to the corresponding standard (eg. DOS, or POSIX). +Thanks to that ExectOS will allow to run existing software, including Win32 applications. + +## Features + * Completely free, Open Source and community-driven modern Operating System. + * Native multiple architecture support. It runs on x86 and x86_64 and is portable to other architectures. + * Uses a couple of ideas from other open source projects, but it’s our own ideas that really sets us apart and defines + ExectOS. The majority of code is original, not forked. + * Modular design for better compatibility with existing software. + * Own, XT drivers for commonly used devices as well as NT drivers compatibility layer for better hardware support. + +## Why + * We believe, there is no ideal Operating System on the market. During ExectOS development, we try to bring most useful + features known from existing solutions, while keeping compatibility with NT architecture at desired level. + * Some of our ideas differ greatly from other projects and it is much easier if we do not have to fight legacy code and + ideas. + * We need the freedom to break things when necessary. + +## Goals + * Keep the greatest advantages of the NT architecture, while implementing new features and technologies known from other + Operating Systems. + * Flexibility where it makes sense to provide flexibility. + * Be able to deliver features that other non-commercial Operating Systems consider too ambitious. + +## Requirements +ExectOS is in very early development stage, thus its requirements have been not specified yet. However according to its +design, it requires a modern EFI enabled hardware. It is not possible currently to boot ExectOS on a legacy BIOS. diff --git a/content/faq.md b/content/faq.md new file mode 100644 index 0000000..8c0573b --- /dev/null +++ b/content/faq.md @@ -0,0 +1,97 @@ ++++ +title = 'Frequently Asked Questions' +date = 2024-06-16T12:33:36+02:00 +draft = true ++++ +## Frequently Asked Questions + +#### What is ExectOS? +ExectOS is an open-source, general purpose operating system written from scratch and based on new XT architecture. +It aims to be modular, maintainable and compatible with existing software. + +#### What does ExectOS mean? What is the origin of this name? +The name 'ExectOS' doesn’t have a specific historical origin, as it appears to be a unique creation for this +Operating System. The term 'Exec' within ExectOS directly relates to execution - the act of carrying out tasks, +processes, and instructions. In the context of operating system, execution involves managing programs, resources, +and system operations. Users should associate ExectOS with streamlined performance and reliability. + +#### What does the ExectOS logo present and what is the relation between the logo and the OS name? +The three wavy lines in the ExectOS logo evoke a sense of fluidity and movement. Their arrangement, forms a shape +reminiscent of the capital letter ‘E,’ directly corresponding to the initial letter of ExectOS. The flowing waves +symbolize dynamism, progress, and forward motion. The smooth curves suggest a seamless user experience, while gradient +colors represent diversity and adaptability. All of this convey a message of innovation, user-friendliness, and +adaptability. It invites users to explore a new operating system that promises a seamless computing experience. + +#### What architectures does ExectOS support? +ExectOS supports the x86_64 (sometimes called AMD64 or EM64T), as well as i686 CPU architectures. However, it requires +a modern EFI enabled hardware, thus it is not possible currently to boot ExectOS on a legacy BIOS. + +#### Is ExectOS a Windows replacement? +No. ExectOS is a brand new, modern system designed to run applications written for many different types of Operating +Systems. This allows to implement any environment subsystem to support applications that are strictly written to the +corresponding standard (eg. DOS, or POSIX). This means that running Windows applications might be as well possible at +some time. However development is mostly focused on providing system core at the moment. + +#### Is ExectOS another Unix based OS? +No. ExectOS implements the XT architecture which derives from NT architecture. It is modular, and consists of two main +layers: microkernel and user mode. Its' kernel mode has full access to the hardware and system resources and runs code +in a protected memory area. It consists of executive services, which is itself made up on many modules that do specific +tasks, a kernel and drivers. Unlike the NT, system does not feature a separate Hardware Abstraction Layer (HAL) between +the physical hardware and the rest of the OS. Instead, XT architecture integrates a hardware specific code with the +kernel. + +#### Does ExectOS allow to use Windows drivers? +This is one of our goals. Thanks to the NT drivers compatibility layer provided by ExectOS, you should be able to install +and use the same drivers as you can on Windows. + +#### Can I install ExectOS on a pendrive / USB stick? +Yes. This is how it is tested on a bare metal (real hardware). + +#### Program X does not work when I launch it. When can I except things to change? +It depends. ExectOS is in early development stage and it is not recommended for everyday usage. At this point we cannot +guarantee anything. + +#### When will feature X get added? +If you think an idea has merit, you may choose to discuss it on [Discord Server](https://discord.com/invite/zBzJ5qMGX7). +However, the best way to get a feature added to ExectOS is to implement it yourself. + +#### When will the project be finished? +Writing an Operating System is a complex task that requires time. Other popular Operating Systems, such as Linux, are +also constantly being developed to meet the everyday users requirements. + +#### Where can I obtain the source code? +ExectOS source code can be obtained from GIT repository available [here](https://git.codingworkshop.eu.org/xt-sys/exectos). +It can be also found on [GitHub](https://github.com/xt-sys/exectos) and [GitLab](https://gitlab.com/xt-sys/exectos) mirrors. + +#### Where can I download ExectOS? +Each ExectOS build, including binaries, disk image, libraries and debug symbols are available [here](https://artifacts.codingworkshop.eu.org/ExectOS/). + +#### How can I contribute to ExectOS? +We are looking for C and Assembler developers for core OS development as well as testers. If you are willing to help, +please join our [Discord server](https://discord.com/invite/zBzJ5qMGX7) and contact one of ExectOS developers. + +#### Why don't you use GCC? +Because GCC is a crap. + +#### Do you have any kind of tests to check if the code is working as expected? +We don't need tests. If it compiles, it is good enough; if it boots up, then it is perfect. + +#### Why don't you help Wine? +Wine implements Win32Api only, while ExectOS is a featureful Operating System, that implements a compatibility layer with NT. +This means, ExectOS will be able to run NT drivers as well, not only Windows software. However, thanks to its modular design, +it will be possible to implement Win32 subsystem as well at some point, based on Wine. + +#### Why don't you help ReactOS? +ExectOS goals are very different from ReactOS, and contrast the project's core philosophy as being quite on different paths. +While ReactOS aims to replicate Windows NT, ExectOS is a completely new Operating System implementing the XT architecture +which derives from NT. Although both projects share the goal of being NT compatible, they intend to achieve it in different +ways. What ReactOS tries to replicate, ExectOS only implements as a compatibility layer. Thanks to that, ExectOS does not +need to strictly follow NT architecture and is capable of providing modern features. + +#### Do you intend to cooperate with ReactOS to achieve common goals? +No. We share Wine's opinion on the inappropriate reverse-engineering methods used in the ReactOS project, as well as its +association with the TinyKrnl project, which used every possible method of achieving the end result of having a 100% +compatible results. This especially applies to the so-called ‘dirty’ way. + +#### Which license does ExectOS use? +ExectOS is licensed under the GNU General Public License v3. diff --git a/themes/exectos/config.yaml b/themes/exectos/config.yaml new file mode 100644 index 0000000..c34ab2a --- /dev/null +++ b/themes/exectos/config.yaml @@ -0,0 +1,3 @@ +module: + hugoVersion: + min: "0.84.0" diff --git a/themes/exectos/layouts/_default/baseof.html b/themes/exectos/layouts/_default/baseof.html new file mode 100644 index 0000000..c348b7e --- /dev/null +++ b/themes/exectos/layouts/_default/baseof.html @@ -0,0 +1,13 @@ + + + {{- partial "head.html" . -}} + + {{- partial "header.html" . -}} +
+
+ {{- block "main" . }}{{- end }} +
+
+ {{- partial "footer.html" . -}} + + diff --git a/themes/exectos/layouts/_default/list.html b/themes/exectos/layouts/_default/list.html new file mode 100644 index 0000000..66e0853 --- /dev/null +++ b/themes/exectos/layouts/_default/list.html @@ -0,0 +1,10 @@ +{{ define "main" }} +

{{ .Title }}

+{{ range .Pages.ByPublishDate.Reverse }} +

{{ .Title }}

+ {{ partial "metadata.html" . }} + +

{{ .Summary }}

+
+{{ end }} +{{ end }} diff --git a/themes/exectos/layouts/_default/script.html b/themes/exectos/layouts/_default/script.html new file mode 100644 index 0000000..2038532 --- /dev/null +++ b/themes/exectos/layouts/_default/script.html @@ -0,0 +1,12 @@ + + + {{- partial "head.html" . -}} + + {{- partial "header.html" . -}} +
+ {{- block "main" . }}{{- end }} +
+ {{- partial "footer.html" . -}} + {{- partial "script.html" . -}} + + diff --git a/themes/exectos/layouts/_default/single.html b/themes/exectos/layouts/_default/single.html new file mode 100644 index 0000000..8bc28ad --- /dev/null +++ b/themes/exectos/layouts/_default/single.html @@ -0,0 +1,6 @@ +{{ define "main" }} +

{{ .Title }}

+{{ partial "metadata.html" . }} +

+{{ .Content }} +{{ end }} diff --git a/themes/exectos/layouts/partials/footer.html b/themes/exectos/layouts/partials/footer.html new file mode 100644 index 0000000..8eac588 --- /dev/null +++ b/themes/exectos/layouts/partials/footer.html @@ -0,0 +1,9 @@ + diff --git a/themes/exectos/layouts/partials/head.html b/themes/exectos/layouts/partials/head.html new file mode 100644 index 0000000..f9f5d3a --- /dev/null +++ b/themes/exectos/layouts/partials/head.html @@ -0,0 +1,9 @@ + + + + + + + + {{ $title := print .Site.Title " | " .Title }}{{ if .IsHome }}{{ $title = .Site.Title }}{{ end }}{{ $title }} + diff --git a/themes/exectos/layouts/partials/header.html b/themes/exectos/layouts/partials/header.html new file mode 100644 index 0000000..519c380 --- /dev/null +++ b/themes/exectos/layouts/partials/header.html @@ -0,0 +1,19 @@ +
+
+

{{ .Site.Title }}

+ +
+
diff --git a/themes/exectos/layouts/partials/metadata.html b/themes/exectos/layouts/partials/metadata.html new file mode 100644 index 0000000..e69de29 diff --git a/themes/exectos/static/css/style.css b/themes/exectos/static/css/style.css new file mode 100644 index 0000000..f5ee980 --- /dev/null +++ b/themes/exectos/static/css/style.css @@ -0,0 +1,149 @@ +html { + color : #333333; + background-color : #FFFFFF; + margin : 0; + padding : 0; +} + +body { + font-family : "trebuchet ms", "verdana", sans-serif; + margin : 0; + padding : 0; +} + +h1 { + margin-top : 8px; + padding : 1px; +} + +h2 { + border-bottom : 1px solid #8877FF; + margin-left : -1em; + margin-right : -1em; +} + +img { + border : 0px; +} + +.content { + margin-left : 25%; + margin-right : 25%; + margin-top : 2.5em; +} + +.content li { + list-style-type : square; +} + +.copyright { + color : #404040; + font-family : sans-serif, Verdana, Arial, Helvetica; + font-size : 10px; + text-align : center; + text-decoration : none; +} + +.copyright a { + color : #404040; + text-decoration : none; +} + +.copyright a:hover { + color : #404040; + text-decoration : none; +} + +.header { + background : #bee0ff; + border-bottom : 2px solid #186196; + color : #186196; + clear : both; + padding-left : 1em; + padding-top : 0.5em; +} + +.header a { + border : 2px solid transparent; + color : #186196; + padding-left : 10px; + padding-right : 10px; + padding-top : 1px; + text-decoration : none; +} + +.header li a:before { + content: "\00BB "; + color: #186196; +} + +.header a:hover { + color : #000055; + padding-left : 10px; + padding-right : 10px; + padding-top : 1px; +} + +.header li { + display : inline; + margin-left : 2em; +} + +.header ul { + margin : 0px; + padding : 0px; + text-align : left; +} + +.footer { + background : #FFFFFF; + color : #000000; + clear : both; + font-family : sans-serif, verdana, Helvetica; + font-size : 12px; + margin-left : 10px; + margin-top : 0.4em; + padding : 0; + width : 100% +} + +.footer-left { + position : absolute; + text-align : left; + width : 50%; +} + +.footer-right { + left : 50%; + position : absolute; + text-align : right; + width : 50%; +} + +.wrapper_content { + margin-bottom : 2.5em; + padding : 6em 0 0 0; +} + +.wrapper_header { + background : #FFFFFF; + color : #000000; + height : 6em; + left : 0; + position : absolute; + position : fixed; + top : 0; + width : 100%; +} + +.wrapper_footer { + background : #FFFFFF; + border-top : 2px solid #186196; + bottom : 0; + color : #000000; + height : 1.5em; + left : 0; + position : absolute; + position : fixed; + width : 100% +} diff --git a/themes/exectos/theme.toml b/themes/exectos/theme.toml new file mode 100644 index 0000000..2be0d12 --- /dev/null +++ b/themes/exectos/theme.toml @@ -0,0 +1,10 @@ +name = "ExectOS" +license = "GPLv3" +licenselink = "https://www.gnu.org/licenses/gpl-3.0.html" +description = "ExectOS Theme" +homepage = "https://exectos.eu.org" +languageCode = "en-us" +min_version = "0.1.0" + +[author] + name = "Rafal Kupiec"