Import ExectOS Web Site #1
23
.github/workflows/build.yml
vendored
Normal file
23
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
name: Builds
|
||||
run-name: ${{ github.actor }} runs Gitea Actions
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
ExectOS WebSite:
|
||||
runs-on: oscw
|
||||
container:
|
||||
image: codingworkshop/oscw-runner:latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Build WebSite
|
||||
run: hugo
|
||||
- name: Publish WebSite
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
env:
|
||||
OSCW_ARTIFACTS_HOSTNAME: ${{ secrets.OSCW_ARTIFACTS_HOSTNAME }}
|
||||
OSCW_ARTIFACTS_USERNAME: ${{ secrets.OSCW_ARTIFACTS_USERNAME }}
|
||||
OSCW_ARTIFACTS_USERKEY: ${{ secrets.OSCW_ARTIFACTS_USERKEY }}
|
||||
run: webpage_publish public/ 1e8c78e4764c760b3d20991c8b769cf5
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
public/
|
||||
.hugo_build.lock
|
@ -1 +1,2 @@
|
||||
## ExectOS Web Site
|
||||
This repository contains the entire content of the ExectOS Website, powered by the Hugo Static Site Generator.
|
||||
|
43
config.toml
Normal file
43
config.toml
Normal file
@ -0,0 +1,43 @@
|
||||
baseURL = "https://exectos.eu.org/"
|
||||
disableKinds = ["taxonomy"]
|
||||
title = "ExectOS Operating System"
|
||||
theme = "exectos"
|
||||
languageCode = "en-us"
|
||||
defaultContentLanguage = "en"
|
||||
paginate = 10
|
||||
|
||||
[menu]
|
||||
|
||||
[[menu.main]]
|
||||
name = "Documentation"
|
||||
pre = "<div class='fa fa-book'></div> "
|
||||
url = "/documentation"
|
||||
weight = 1
|
||||
|
||||
[[menu.main]]
|
||||
name = "Contributing"
|
||||
pre = "<div class='fa fa-code-fork'></div> "
|
||||
url = "/contributing"
|
||||
weight = 2
|
||||
|
||||
[[menu.main]]
|
||||
name = "Download"
|
||||
pre = "<div class='fa fa-cubes'></div> "
|
||||
url = "/download"
|
||||
weight = 3
|
||||
|
||||
[[menu.main]]
|
||||
name = "Source Code"
|
||||
pre = "<div class='fa fa-codepen'></div> "
|
||||
url = "/source-code"
|
||||
weight = 4
|
||||
|
||||
[[menu.main]]
|
||||
name = "Discord"
|
||||
pre = "<div class='fa fa-wechat'></div> "
|
||||
url = "https://discord.com/invite/zBzJ5qMGX7"
|
||||
weight = 5
|
||||
|
||||
[params]
|
||||
defaultKeywords = ["ExectOS", "XT", "XTOS", "efi", "gpl3", "kernel", "nt", "open source", "os", "osdev", "uefi boot", "win32"]
|
||||
defaultDescription = "ExectOS Operating System"
|
48
content/_index.md
Normal file
48
content/_index.md
Normal file
@ -0,0 +1,48 @@
|
||||
+++
|
||||
title = 'About Exectos'
|
||||
date = 2024-06-16T12:12:40+02:00
|
||||
+++
|
||||
## 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.
|
||||
* Hardware layer API allows for a single unified kernel. There is no need to maintain a separate kernel forks.
|
||||
* 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 and drivers, enabling binaries to remain compatible even
|
||||
when the core system is updated.
|
||||
* Own, XT drivers for commonly used devices as well as NT™ drivers compatibility layer for better hardware support.
|
||||
* Technical support directly from the architects and developers of the system.
|
||||
|
||||
## 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.
|
45
content/contact-us.md
Normal file
45
content/contact-us.md
Normal file
@ -0,0 +1,45 @@
|
||||
+++
|
||||
title = 'Contact Us'
|
||||
date = 2024-06-17T18:11:52+02:00
|
||||
+++
|
||||
### Discord
|
||||
ExectOS has a Discord Server to socialize, get support, support others, learn, contribute, collaborate, and stay up to
|
||||
date on all things related to XTOS and Open Source. This is also a place where you can meet ExectOS Developers. Everyone
|
||||
is welcome to [Join our Discord Server](https://discord.com/invite/zBzJ5qMGX7).
|
||||
|
||||
### Why Discord?
|
||||
Discord is a VoIP instant messaging and digital distribution platform. It
|
||||
* is broadly accessible,
|
||||
* is popular with non-technical people,
|
||||
* broadens the appeal of XTOS beyond traditional spaces and audiences,
|
||||
* allows for communication over voice, video, and text.
|
||||
|
||||
### Guidelines & Rules
|
||||
1. Treat everyone with respect. Absolutely no harassment, witch hunting, sexism, racism, or hate speech will be tolerated.
|
||||
2. No age-restricted or obscene content. This includes text, images, or links featuring nudity, sex, hard violence, or
|
||||
other graphically disturbing content.
|
||||
3. No spam or self-promotion (server invites, advertisements, etc) without permission from a staff member. This includes
|
||||
DMing fellow members.
|
||||
4. Do not share real media depicting gore, excessive violence, or animal harm, especially with the intention to harass
|
||||
or shock others.
|
||||
5. Do not share content that violates anyone's intellectual property or other rights.
|
||||
6. Do not distribute or provide access to content involving the hacking, cracking, or distribution of stolen goods,
|
||||
pirated content, or accounts.
|
||||
7. If you see something against the rules or something that makes you feel unsafe, let staff know. We want this server
|
||||
to be a welcoming space!
|
||||
|
||||
### How to use Discord?
|
||||
* [Official Discord client for any device](https://discord.com/download)
|
||||
* [Discord Client via the Web Browser](https://discord.gg/)
|
||||
* Any third-party client
|
||||
|
||||
### Channel Overview
|
||||
* **Activity**: Staying up-to-date with GIT and development activity.
|
||||
* **Announcements**: Staying informed and up-to-date with important activities.
|
||||
* **General**: Getting help, helping and supporting others, leveling up knowledge, participating and contributing.
|
||||
* **Offtopic**: Connecting and enjoying time with other people in the community.
|
||||
|
||||
## ExectOS Channels
|
||||
Discover more about ExectOS and dive into a world of insightful content by visiting our official
|
||||
[YouTube](https://www.youtube.com/@XT-Sys-dg3yf) channel. Join our growing community of followers and stay up-to-date
|
||||
with ExectOS by subscribing and turning on notifications. Visit us now and start watching!
|
17
content/contributing.md
Normal file
17
content/contributing.md
Normal file
@ -0,0 +1,17 @@
|
||||
+++
|
||||
title = 'Contributing'
|
||||
date = 2024-06-16T22:31:24+02:00
|
||||
+++
|
||||
### Contributing to Community
|
||||
* [Contributing to ExectOS](/contributing/contributing-to-exectos)
|
||||
|
||||
### Contributing Documentation
|
||||
* [Updating and Writing Documentation](/contributing/writing-documentation)
|
||||
|
||||
### Contributing Code
|
||||
* [Building ExectOS](/contributing/building-exectos)
|
||||
* [Clean Room Guidelines](/contributing/clean-room-guidelines)
|
||||
* [Developing ExectOS](/contributing/developing-exectos)
|
||||
* [ExectOS Coding Style](/contributing/coding-style)
|
||||
* [First steps with GIT](/contributing/working-with-git)
|
||||
* [Submitting Patches](/contributing/submitting-patches)
|
58
content/contributing/building-exectos.md
Normal file
58
content/contributing/building-exectos.md
Normal file
@ -0,0 +1,58 @@
|
||||
+++
|
||||
title = 'Building ExectOS'
|
||||
date = 2024-06-18T16:37:24+02:00
|
||||
+++
|
||||
ExectOS must be compiled with the XTChain toolchain. Make sure you have already [downloaded](/download) and installed it.
|
||||
Once this is done and the source code is ready, open a terminal and launch the XTChain Build Environment.
|
||||
```
|
||||
xtchain
|
||||
```
|
||||
Then, set your target build architecture and the build type and configure the project. Choose `i686` or `amd64` depending
|
||||
on the architecture you wish to target. The build type can be either `DEBUG` for debugging purposes or `RELEASE` for
|
||||
a production build.
|
||||
```
|
||||
charch [i686|amd64]
|
||||
chbuild [DEBUG|RELEASE]
|
||||
./configure.sh
|
||||
```
|
||||
After the sources are configured, navigate to the build directory and compile the source code.
|
||||
```
|
||||
cd build
|
||||
xbuild
|
||||
```
|
||||
Afterwards, you will find the binaries in `build/output/binaries` directory. Apart from that, depending on build type, you
|
||||
can also find a debug symbols in PDB format in `build/output/symbols` folder and precompiled libraries that can be used to
|
||||
link other software using XTDK in `build/output/library`
|
||||
|
||||
## Creating Qemu Disk Image
|
||||
If you want to build a disk image that is ready to use with Qemu, you can use the following command:
|
||||
```
|
||||
xbuild diskimg
|
||||
```
|
||||
This will create a disk image that you can boot within a Qemu Virtual Machine, or convert to other format for use within
|
||||
other hypervisor, like VirtualBox.
|
||||
|
||||
## Testing with Qemu
|
||||
After successfully compiling ExectOS, you can test it using Qemu with either hardware virtualization (KVM) or software
|
||||
emulation (TCG). To start Qemu with KVM, use the `testkvm` target, and for TCG emulation, use the `testtcg` target. These
|
||||
targets are provided for convenience and you can run these commands from your build directory.
|
||||
```
|
||||
xbuild testkvm # For KVM hardware virtualization
|
||||
```
|
||||
or
|
||||
```
|
||||
xbuild testtcg # For TCG software emulation
|
||||
```
|
||||
These commands will automatically configure Qemu with the appropriate settings for ExectOS and start the virtual machine.
|
||||
In addition to Qemu, you can also use Bochs for emulation. Bochs is an IA-32 (x86) PC emulator that provides a different
|
||||
emulation environment. To launch Bochs with the ExectOS image, run the following command:
|
||||
```
|
||||
xbuild bochsvm
|
||||
```
|
||||
This will start the Bochs emulator with ExectOS loaded, allowing you to test the system in an environment that may offer
|
||||
different debugging capabilities compared to Qemu.
|
||||
|
||||
Remember that the performance and debugging features will vary depending on whether you use KVM, TCG, or Bochs. KVM
|
||||
requires that your host machine supports hardware virtualization, while TCG is a pure software emulator which works on
|
||||
systems without hardware virtualization. Bochs provides a rich set of debugging features, which can be useful when
|
||||
troubleshooting complex issues.
|
36
content/contributing/clean-room-guidelines.md
Normal file
36
content/contributing/clean-room-guidelines.md
Normal file
@ -0,0 +1,36 @@
|
||||
+++
|
||||
title = 'Clean Room Guidelines'
|
||||
date = 2024-06-17T23:11:23+02:00
|
||||
+++
|
||||
You sometimes run into a need to use the [clean-room design](http://en.wikipedia.org/wiki/Clean_room_design) techniques
|
||||
to work around the problem without infringing on any copyrights. While you attempt at reverse engineering, all
|
||||
corresponding contributions should follow
|
||||
[Council Directive 91/250/EEC](https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=celex%3A31991L0250), and
|
||||
[Directive (EU) 2016/943](https://eur-lex.europa.eu/eli/dir/2016/943/oj) of the European Parliament and any newer
|
||||
directives related to reverse engineering. As per
|
||||
[Article 6 Decompilation 1. (a)](https://eur-lex.europa.eu/legal-content/EN/ALL/?uri=celex%3A31991L0250) you must own
|
||||
a legal copy/license of the software before doing any attempts at reverse engineering. The software must be officially
|
||||
deprecated and/or obsolete. If you live outside of the European Union, you should follow similar rules described in legal
|
||||
acts issued by the local authorities if they conform to the EU law. This especially means, that
|
||||
|
||||
#### You are allowed to:
|
||||
* **Decompile for Interoperability**: According to the directives, decompilation is permissible when it's necessary to
|
||||
achieve interoperability with other software. This means you can reverse engineer parts of the software to understand
|
||||
the underlying interfaces.
|
||||
* **Own a Legal Copy**: You must own a legal copy or license of the software you wish to reverse engineer. This ensures
|
||||
that your starting point is within legal bounds.
|
||||
* **Work with Obsolete Software**: The software you reverse engineer should be obsolete or no longer maintained by the
|
||||
manufacturer. This typically applies to software that is no longer receiving updates or support.
|
||||
|
||||
#### You are NOT allowed to:
|
||||
* **Infringe Copyrights**: You must not reproduce code or utilize proprietary algorithms from the software without
|
||||
permission, as this would infringe on the copyright.
|
||||
* **Break Protection Measures**: You are not permitted to crack or bypass any form of copy protection or digital rights
|
||||
management that the software employs.
|
||||
* **Commercially Exploit the Work**: You should not use the knowledge gained from reverse engineering for commercial
|
||||
exploitation or to create direct competitors, unless you have specific agreements that allow for such activities.
|
||||
* **Reveal Trade Secrets**: It is generally illegal to uncover and reveal trade secrets through the process of reverse
|
||||
engineering.
|
||||
|
||||
Remember, laws and regulations vary by jurisdiction and change over time, so it's crucial to stay updated on the current
|
||||
laws.
|
6
content/contributing/coding-style.md
Normal file
6
content/contributing/coding-style.md
Normal file
@ -0,0 +1,6 @@
|
||||
+++
|
||||
title = 'ExectOS Coding Style'
|
||||
date = 2024-06-18T00:20:07+02:00
|
||||
+++
|
||||
At the moment of writing this article, no coding style was established. You should check how existing code looks like and
|
||||
follow its current formatting.
|
30
content/contributing/contributing-to-exectos.md
Normal file
30
content/contributing/contributing-to-exectos.md
Normal file
@ -0,0 +1,30 @@
|
||||
+++
|
||||
title = 'Contributing to ExectOS'
|
||||
date = 2024-06-17T22:35:51+02:00
|
||||
+++
|
||||
The ExectOS project and CodingWorkshop Team always seek new contributors from all skill levels. No matter if you are
|
||||
a developer, tester, designer, or techwriter, your contributions are always appreciated.
|
||||
|
||||
### Software Developers
|
||||
We are always looking for people proficient in C and/or Assembly, especially familiar with tools such as Bochs, Qemu,
|
||||
or VirtualBox. Writing an Operating System is not a beginner's task. In fact, writing an Operating System is usually
|
||||
considered the most difficult programming task. Join the exclusive ranks of people knowing OSDev concepts, and yet
|
||||
smaller ranks of people knowing the secrets of NT™ architecture.
|
||||
|
||||
### Testers
|
||||
No software is usable if it is found to be unstable. Writing an Operating System, is yet more complex task. Tester role
|
||||
is responsible for assisting the development process by running [builds](/download) and providing a feedback. All and any
|
||||
information about issues you encountered during this process can be
|
||||
[reported](https://git.codingworkshop.eu.org/xt-sys/exectos/issues). The more detailed report is, the easier it will be
|
||||
to fix it. At least basic knowledge in collecting information from a crash, like backtraces and knowledge of using
|
||||
debugger will help you. When submitting issues, take care that the bug report is not a duplicate of an already existing,
|
||||
open issue. You should always follow the template specified for issues in our Gitea.
|
||||
|
||||
### Technical Writers
|
||||
As a team, we focus mostly on OS development. We are looking for some creative people to update and write documentation,
|
||||
post content to this website as well as social media accounts to promote ExectOS. New web site design ideas and bug fixes
|
||||
are as well welcome.
|
||||
|
||||
### Community Managers
|
||||
The ExectOS community keeps in touch via [Discord](/contact-us). Community Manager role is responsible to keep people
|
||||
involved, keep discussions going and moderate.
|
38
content/contributing/developing-exectos.md
Normal file
38
content/contributing/developing-exectos.md
Normal file
@ -0,0 +1,38 @@
|
||||
+++
|
||||
title = 'Developing ExectOS'
|
||||
date = 2024-06-18T16:36:47+02:00
|
||||
+++
|
||||
We leave you free to choose your working environment, but we also recommend working with VS Code, or VS Codium. Both are
|
||||
free to use, open-source IDEs, compatible with Windows, Linux, and macOS operating systems. They falls under the same
|
||||
category as Atom, Sublime, and Text Wrangler, but they also has more advanced features. While the first one is am original
|
||||
code editor from the Microsoft©, VS Codium is essentially a telemetry-free, open-source version of VS Code.
|
||||
|
||||
### Recommended Extensions
|
||||
* **[Clangd](https://open-vsx.org/extension/llvm-vs-code-extensions/vscode-clangd)**: helps developers write,
|
||||
understand and improve C/C++ code by providing code completion, compile errors and warnings, hover information and
|
||||
inlay hints, include management, code formatting and more.
|
||||
* **[CMake](https://open-vsx.org/extension/twxs/cmake)**: extension provides support for CMake in Visual Studio Code.
|
||||
* **[Codeium](https://open-vsx.org/extension/Codeium/codeium)**: modern coding superpower, a free code acceleration
|
||||
toolkit built on cutting edge AI technology. Currently, Codeium provides autocomplete, chat, and search capabilities
|
||||
in 70+ languages, with lightning fast speeds and state-of-the-art suggestion quality.
|
||||
* **[GNU Assembler Language Support](https://open-vsx.org/extension/basdp/language-gas-x86)**: extension provides
|
||||
language support for x86 and x86_64 assembly language in AT&T dialect.
|
||||
* **[Markdown Preview Enhanced](https://open-vsx.org/extension/shd101wyy/markdown-preview-enhanced)**: extension that
|
||||
provides many useful functionalities such as automatic scroll sync, math typesetting, mermaid, PlantUML, pandoc,
|
||||
PDF export, code chunk, presentation writer, etc.
|
||||
|
||||
### Getting Started with VS Code
|
||||
Opening a project in Visual Studio Code is straightforward, especially that you can find `ExectOS.code-workspace` file
|
||||
in project's GIT repository. Once you checkout the source code, you can open the workspace file directly from the command
|
||||
line:
|
||||
```
|
||||
code ExectOS.code-workspace
|
||||
```
|
||||
Alternatively, you can start VS Code and use the menu options:
|
||||
* Open Visual Studio Code.
|
||||
* Go to File > Open Workspace from File...
|
||||
* Navigate to the directory containing your cloned repository.
|
||||
* Select the ExectOS.code-workspace file and click Open.
|
||||
|
||||
VS Code will load everything defined in the workspace file, including folder structure and settings specific to the
|
||||
ExectOS project. You're now ready to start working on the project.
|
52
content/contributing/submitting-patches.md
Normal file
52
content/contributing/submitting-patches.md
Normal file
@ -0,0 +1,52 @@
|
||||
+++
|
||||
title = 'Submitting Patches'
|
||||
date = 2024-06-17T23:47:42+02:00
|
||||
+++
|
||||
In order to review code better and use established lines of communication, we accept code in the form of Pull Requests
|
||||
on our [Gitea](https://git.codingworkshop.eu.org/xt-sys/exectos/pulls) instance. The process may seem a little bit
|
||||
complicated at first, but it will become very natural. It is important for us, to make sure the author and email settings
|
||||
for your GIT are configured correctly. You should follow our '[Working with GIT](/contributing/working-with-git)' document,
|
||||
but the key point is to use your real name and valid e-mail address. This is not just for developers to show a stronger
|
||||
commitment and establish trust, but also helps discourage irresponsible programmers from submitting unacceptable code.
|
||||
You will need a Gitea account which must also use your real name. You should be precise; having the names match helps in
|
||||
identifying commits.
|
||||
|
||||
### Patch Guidelines
|
||||
In order to make your patches as easy to check as possible, try to keep them small, clear, and atomic:
|
||||
* Include only closely related changes in one commit.
|
||||
* Don't implement extra things that no one uses.
|
||||
* Try to limit each merge request to only a few commits.
|
||||
* Limit a commit to changing a single file or component.
|
||||
|
||||
Above rules make the Pull Request easier to review.
|
||||
|
||||
### Commit Message
|
||||
|
||||
|
||||
### Quality Check
|
||||
It never hurts to check through your changes one last time. Take a while, to look at each line of the patch and make sure
|
||||
there are no unintentional or unrelated changes. Also make sure that the layout of your code conforms to our
|
||||
[coding style](/contributing/coding-style).
|
||||
|
||||
### Sending Pull Request
|
||||
After checking in your local changes, you can submit a Pull Request on Gitea to get your changes upstream. This requires
|
||||
you to be working on a Gitea fork. You should make up a temporary branch name for your changes. That branch will be deleted
|
||||
once the merge request is merged, so it's better to avoid using the master branch directly.
|
||||
|
||||
### Managing Pull Request
|
||||
After you've submitted your merge request, a reviewer will be assigned to it, if someone is responsible for that area of
|
||||
the code. You can also assign a reviewer yourself if you know who the right person is. If a reviewer gives some feedback
|
||||
or a critique, carefully think about what they say and fix your patch before resubmitting. When updating your changes, you
|
||||
can simply push the fixes as a new commit on top of your Pull Request. This is prefferred way, as allows us to compare
|
||||
code before and after your fixes. All commits can be squashed by a reviewer upon merge.
|
||||
|
||||
If your Pull Request remains in the queue for several weeks without being committed and without feedback, you can ask for
|
||||
further suggestions on our [Discord](/contact-us) server. If you have patches rejected multiple times, don't be discouraged.
|
||||
You might consider finding a mentor willing to pre-review your changes before you submit them again.
|
||||
|
||||
### Reviewing Pull Request
|
||||
If you are asked to review a merge request, and find things that need to be improved, you should add a comment to the merge
|
||||
request from the Gitea interface. You can also fix things up yourself and push updated commits to the original branch, once
|
||||
submitter explicitly give you access to his GIT repository. If you think that the merge request is good to go in, you
|
||||
should mark it approved. As a rule, a merge request won't be committed until all reviewers have approved it. If you have
|
||||
been assigned as a reviewer but you feel that you cannot meaningfully review the changes, feel free to unassign yourself.
|
53
content/contributing/working-with-git.md
Normal file
53
content/contributing/working-with-git.md
Normal file
@ -0,0 +1,53 @@
|
||||
+++
|
||||
title = 'Working with GIT'
|
||||
date = 2024-06-17T17:31:15+02:00
|
||||
+++
|
||||
The preferred method of contributing patches to ExectOS is via our self-hosted [Gitea](https://git.codingworkshop.eu.org)
|
||||
instance.
|
||||
|
||||
### Initial Setup
|
||||
First of all you will have to create an account on our [Gitea](https://git.codingworkshop.eu.org) instance. Do note that
|
||||
you can also use your existing GitHub or GitLab account via OAuth. Creating new account on our Gitea is pretty straight
|
||||
forward, anyway:
|
||||
1. Go to our Gitea instance and click on "[Register](https://git.codingworkshop.eu.org/user/sign_up)" link in top,
|
||||
right corner.
|
||||
2. Fill in your information.
|
||||
3. Add your SSH key(s) for easier pushing via SSH instead of HTTPS.
|
||||
4. Consider also enabling 2FA for improved security access and signing your commits with GPG.
|
||||
|
||||
### Cloning Repositories
|
||||
1. Go to Gitea's frontage after you’ve signed in and search for the repository you want to clone. Click on its name to
|
||||
open it.
|
||||
2. Click on 'Fork' button, to create your own copy of the repository.
|
||||
3. Either clone your fork of it, with
|
||||
```
|
||||
git clone ssh://git@git.codingworkshop.eu.org:8822/<username>/<repository>.git .
|
||||
```
|
||||
or if you already cloned the repo you can add your fork as remote, with
|
||||
```
|
||||
git remote add <my_fork> ssh://git@git.codingworkshop.eu.org:8822/<username>/<repository>.git
|
||||
```
|
||||
|
||||
### Proper GIT Setup
|
||||
ExectOS uses GIT for Source Code Management (SCM) and GIT uses a username to associate commits with an identity. The GIT
|
||||
username is not the same as your Gitea username. You can change the name that is associated with your GIT commits. The new
|
||||
name you set will be visible in any future commits you push to Gitea from the command line. In order to accept your
|
||||
patches, we require you to provide your real name and valid e-mail address. This can be done with the following commands:
|
||||
```
|
||||
git config --global user.name "<your real name>"
|
||||
git config --global user.email "<your email>"
|
||||
```
|
||||
Above command will update username and email globally, for every repository on your computer. Alternatively, these changes
|
||||
can be introduced for a single repository, by changing the current working directory to the local repository where you want
|
||||
to configure the name that is associated with your GIT commits and issueing the following commands:
|
||||
```
|
||||
git config user.name "<your real name>"
|
||||
git config user.email "<your email>"
|
||||
```
|
||||
|
||||
### Keeping Forks Updated
|
||||
You should always ensure that you have the latest version of the repository you want to work on before starting your work to
|
||||
avoid duplicating work and merge conflicts. You can do so with:
|
||||
```
|
||||
git pull <remote> master --rebase
|
||||
```
|
36
content/contributing/writing-documentation.md
Normal file
36
content/contributing/writing-documentation.md
Normal file
@ -0,0 +1,36 @@
|
||||
+++
|
||||
title = 'Writing Documentation'
|
||||
date = 2024-06-17T18:08:34+02:00
|
||||
+++
|
||||
Our documentation is integrated with this website and it is stored in GIT repository. This website is powered by the Hugo
|
||||
Static Site Generator. All pages are created as simple Markdown files and everyone is free to submit Pull Requests to
|
||||
enhance the website. This article will help you better understand the proper guidelines for submitting documentation.
|
||||
|
||||
### Guidelines
|
||||
* **Use standard English**: Use standard United States (U.S.) English throughout all technical publications.
|
||||
* **Write in active-voice**: Active voice sentences clarify the performer of an action and are easier to understand than
|
||||
passive-voice sentences.
|
||||
* **Use present simple tense**: Users read documentation to perform tasks or gather information. For users, these
|
||||
activities take place in their present, so the present tense is appropriate in most cases.
|
||||
* **Write in second person**: Users are more engaged with documentation when you use second person (that is, you address
|
||||
the user as "you").
|
||||
* **Use appropriate mood**: For procedures, use imperative mood.
|
||||
* **Avoid ambiguous titles**: Each title should include a clear description of the page’s subject.
|
||||
* **Write objectively**: Do not use humor, jargon, exclamation marks, idioms, metaphors, and other colloquialisms.
|
||||
* **Write positively**: Write in a positive tone. Positive sentences improve readability.
|
||||
* **Avoid personification**: Avoid the adverbs such as "probably", "hopefully", "basically", and so on.
|
||||
* **Do not use contractions**: Generally, do not contract the words.
|
||||
* **Use spelling and grammar checking tools**: Run text through spelling and grammar checking tools, if available.
|
||||
|
||||
### Testing Documentation
|
||||
1. [Download](https://gohugo.io/) Hugo v0.125.7 or newer.
|
||||
2. Open a shell in the root of your repository and use below command to start server
|
||||
```
|
||||
hugo server -DF
|
||||
```
|
||||
3. Open `http://localhost:1313/` in your browser to access the website and check the results.
|
||||
|
||||
### Submitting Patches
|
||||
We welcome patches for both documentation and the website. We use the GNU Free Documentation License 1.3 or later for all
|
||||
documentation and website content. Contributions using other licenses are unlikely to be accepted. Patches should be
|
||||
contributed via our [Gitea instance](https://git.codingworkshop.eu.org/xt-sys/website).
|
15
content/documentation.md
Normal file
15
content/documentation.md
Normal file
@ -0,0 +1,15 @@
|
||||
+++
|
||||
title = 'Documentation'
|
||||
date = 2024-06-16T22:27:36+02:00
|
||||
+++
|
||||
### Getting Started
|
||||
* [Frequently Asked Questions](/faq)
|
||||
* [Get in Touch](/contact-us)
|
||||
* [Installation Guide](/documentation/install-guide)
|
||||
|
||||
### Contributing Documentation
|
||||
* [Contributing to ExectOS](/contributing)
|
||||
* [Working with GIT](/contributing/working-with-git)
|
||||
|
||||
### Technical Details
|
||||
* [XT Boot Loader](/documentation/xtldr)
|
50
content/documentation/install-guide.md
Normal file
50
content/documentation/install-guide.md
Normal file
@ -0,0 +1,50 @@
|
||||
+++
|
||||
title = 'Installation Guide'
|
||||
date = 2024-06-17T16:41:29+02:00
|
||||
+++
|
||||
ExectOS is in early development phase and thus it is NOT suitable for daily use, especially on real hardware. It is
|
||||
recommended to run it in a virtual machine like Qemu or VirtualBox. Otherwise, you act at your own risk!
|
||||
|
||||
### Running in Qemu
|
||||
Running ExectOS in Qemu is straight-forward, as our build pipeline produces a disk image, that is ready to use in Qemu.
|
||||
Once you download it and extract, you can use below commands to run the virtual machine, depending on the target CPU
|
||||
architecture of the image. For x86_64 use:
|
||||
```
|
||||
qemu-system-x86_64 -cpu host -enable-kvm -m 2G -hda disk-amd64.img -serial stdio \
|
||||
-drive file=sdk/firmware/ovmf_code_amd64.fd,if=pflash,format=raw,unit=0,readonly=on \
|
||||
-drive file=sdk/firmware/ovmf_vars_amd64.fd,if=pflash,format=raw,unit=1
|
||||
|
||||
```
|
||||
And for i686 use:
|
||||
```
|
||||
qemu-system-i386 -cpu host -enable-kvm -m 1G -hda disk-i686.img -serial stdio \
|
||||
-drive file=sdk/firmware/ovmf_code_i686.fd,if=pflash,format=raw,unit=0,readonly=on \
|
||||
-drive file=sdk/firmware/ovmf_vars_i686.fd,if=pflash,format=raw,unit=1
|
||||
|
||||
```
|
||||
Above commands require an UEFI firmware to be available. It can be found in the
|
||||
[ExectOS GIT repository](https://git.codingworkshop.eu.org/xt-sys/exectos/src/branch/master/sdk/firmware).
|
||||
|
||||
### Running in VirtualBox
|
||||
VirtualBox is commonly used for running the system in an isolated environment. In this case, the same disk image as
|
||||
for Qemu can be used. However, it needs to be converted to QCOW2 format, that is supported by VirtualBox. This can be
|
||||
done with the following command:
|
||||
```
|
||||
qemu-img convert -O qcow2 disk.img disk.qcow2
|
||||
```
|
||||
Once, the disk image is converted, you can create a new virtual machine. As an Operating System, you can choose either
|
||||
32-bit or 64-bit Windows® 10, depending on ExectOS disk image architecture. Just make sure, that EFI support is
|
||||
enabled.
|
||||
|
||||
### Running on Bare Metal
|
||||
It is recommended to not install, nor run ExectOS on a real hardware. Otherwise, installation should be
|
||||
straight-forward and self descriptive:
|
||||
* Download a binary package or build XTOS yourself.
|
||||
* Prepare a pendrive or USB stick. It should have at least first partition formatted as FAT32.
|
||||
* Copy all binaries to USB drive, keeping the existing directory structure. Contents of the archive, or contents of
|
||||
`build/output/binaries` is the root of your drive. Do NOT paste them into any subdirectory.
|
||||
* Reboot the computer.
|
||||
* Enter Firmware Setup or Boot Selection menu and choose your USB drive.
|
||||
* Viola, enjoy!
|
||||
|
||||
In case of any problems, take a photo of your screen and contact with ExectOS developers.
|
62
content/documentation/xtldr.md
Normal file
62
content/documentation/xtldr.md
Normal file
@ -0,0 +1,62 @@
|
||||
+++
|
||||
title = 'XT Boot Loader'
|
||||
date = 2024-06-16T23:43:56+02:00
|
||||
+++
|
||||
XTLDR (abbreviation of XT Loader) is the boot loader dedicated for XTOS. It is the first program launched by the Unified
|
||||
Extensible Firmware Interface (UEFI) of the computer and is responsible for loading the rest of ExectOS. The procedure is
|
||||
quite different for UEFI and BIOS systems. However currently, legacy BIOS boot procedure is not supported by ExectOS.
|
||||
|
||||
### UEFI
|
||||
The Unified Extensible Firmware Interface (UEFI) has support for reading both the partition table as well as file systems.
|
||||
UEFI does not launch any boot code from the Master Boot Record (MBR) whether it exists or not, instead booting relies on
|
||||
boot entries in the NVRAM. The UEFI specification mandates support for the FAT12, FAT16, and FAT32 file systems, as well
|
||||
as ISO9660 for optical discs. Any conformant vendor can optionally add support for additional file systems.
|
||||
|
||||
UEFI launches EFI applications, e.g. boot loaders, boot managers, UEFI shell, etc. These applications are usually stored
|
||||
as files in the EFI system partition (ESP). The applications can be launched by adding a boot entry to the NVRAM or from
|
||||
the UEFI shell.
|
||||
|
||||
### Startup Process
|
||||
When a PC is powered on its UEFI firmware initializes the hardware components of the system. This includes CPU, memory,
|
||||
and device initialization. Firmware has its own boot manager, which is responsible for loading UEFI applications stored
|
||||
in the EFI System Partition (ESP), a dedicated partition on a data storage device, formatted with any from the supported
|
||||
filesystem and attempts to load the selected EFI application (usually an OS bootloader) into memory and transfers control
|
||||
to it.
|
||||
|
||||
XTLDR accesses the file system on the ESP partition and reads the xtldr.ini file to determine what Operating Systems are
|
||||
present. Also additional configuration, like debugging options is loaded. Afterwards, XTLDR loads additional modules, in
|
||||
order to extend its functionality as well as to support additional file systems, that are normally not supported by UEFI.
|
||||
This allows to boot Operating System kernel from the partition other to ESP. Then boot loader menu is presented to the
|
||||
user.
|
||||
|
||||

|
||||
|
||||
After a user choose the position from the list, or timeout exceeded, XTLDR continues with loading additional modules,
|
||||
specific to the chosen Operating System. If a non XTOS is selected, XTLDR loads the associated kernel file listed in the
|
||||
configuration file and gives it control. Otherwise, if XTOS is selected, boot loader loads registry HIVE data, kernel
|
||||
and boot drivers. Finally, starts the kernel, passing to it all the necessary information.
|
||||
|
||||
### XTLDR Configuration
|
||||
XTLDR's first action is to read the xtldr.ini file. It describes whole configuration for the boot loader as well as allows
|
||||
the user to choose which Operating System to boot from at the menu. it also allows the user to pass preconfigured options
|
||||
to the kernel. Regardless an OS, the location of the Operating System is written as an ARC (Advanced RISC Computing) path.
|
||||
Below is an example of the xtldr.ini file:
|
||||
```
|
||||
[XTLDR]
|
||||
Debug=COM1,115200
|
||||
Default=ExectOS
|
||||
KeepLastBoot=TRUE
|
||||
Modules=beep
|
||||
Timeout=10
|
||||
Tune=400 880 2 988 2 783 2 392 2 587 3
|
||||
|
||||
[ExectOS]
|
||||
SystemName="ExectOS Operating System"
|
||||
SystemType=XTOS
|
||||
BootModules=xtos_o
|
||||
SystemPath=multi(0)disk(0)rdisk(0)partition(1)/ExectOS
|
||||
KernelFile=xtoskrnl.exe
|
||||
Parameters=DEBUG=COM1,115200
|
||||
```
|
||||
A full list of configuration options with their descriptions can be found in the [example configuration](https://git.codingworkshop.eu.org/xt-sys/exectos/src/branch/master/bootdata/xtldr/xtldr.ini)
|
||||
file in project's GIT repository.
|
20
content/download.md
Normal file
20
content/download.md
Normal file
@ -0,0 +1,20 @@
|
||||
+++
|
||||
title = 'Download'
|
||||
date = 2024-06-16T22:35:11+02:00
|
||||
+++
|
||||
### ExectOS
|
||||
ExectOS supports currently two architectures (i686 and AMD64). To get started today, either download a binaries for one of
|
||||
supported architectures or test drive ExectOS on the QEMU emulator by downloading a disk image. You can find a full list
|
||||
of files, available to download at [this page](https://artifacts.codingworkshop.eu.org/ExectOS/). Each file contains an
|
||||
information about build date, SHA1, architecture and a type of artifact, eg:
|
||||
* ExectOS-20240614-6b70074ec6-i686-bin.tar.gz - This archive contains a binary files that can be copied to USB disk and
|
||||
booted up on bare metal hardware.
|
||||
* ExectOS-20240614-6b70074ec6-i686-lib.tar.gz - Contains a libraries useful for building 3rd party drivers.
|
||||
* ExectOS-20240614-6b70074ec6-i686-sym.tar.gz - This archive includes a debug symbols in PDB format.
|
||||
* ExectOS-20240614-6b70074ec6-i686.img.gz - This is a compressed QEMU disk image, that can be used with this emulator.
|
||||
|
||||
### XTChain
|
||||
Get the latest prebuilt toolchain, needed to compile the ExectOS Operating System. This includes the Clang compiler, and
|
||||
other build utilities you need to cross compile the project, including system core (boot loader, kernel and drivers).
|
||||
The toolchain supports both i686 and AMD64 architectures, as well as ARMv7 and AArch64. Unfortunately, at the moment binary
|
||||
package is available only for Linux host. To download the XTChain, click [here](https://github.com/xt-sys/xtchain/releases).
|
103
content/faq.md
Normal file
103
content/faq.md
Normal file
@ -0,0 +1,103 @@
|
||||
+++
|
||||
title = 'Frequently Asked Questions'
|
||||
date = 2024-06-16T12:33:36+02:00
|
||||
+++
|
||||
#### 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 is the difference between XTOS and ExectOS?
|
||||
XTOS is a common name of the Operating System standard based on the XT architecture. ExectOS is a name of the specific
|
||||
project, that is a reference XTOS implementation, that implements all requirements from a corresponding specification.
|
||||
|
||||
#### What does XT mean?
|
||||
XT is a name of XTOS architecture of an Operating System, that consists of two main components, user mode and kernel
|
||||
mode. It derives mostly from NT™ architecture, as well as uses a couple of ideas from other open source projects.
|
||||
XT is a short for "neXTgen" architecture, but you can also call it "eXTendable".
|
||||
|
||||
#### 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.
|
11
content/source-code.md
Normal file
11
content/source-code.md
Normal file
@ -0,0 +1,11 @@
|
||||
+++
|
||||
title = 'Source Code'
|
||||
date = 2024-06-16T22:36:47+02:00
|
||||
+++
|
||||
### ExectOS
|
||||
* Main GIT repository: https://git.codingworkshop.eu.org/xt-sys/exectos
|
||||
* GitHub Mirror: https://github.com/xt-sys/exectos
|
||||
|
||||
### XTChain
|
||||
* Main GIT repository: https://git.codingworkshop.eu.org/xt-sys/xtchain
|
||||
* GitHub Mirror: https://github.com/xt-sys/xtchain
|
BIN
static/images/exectos/xtldr_boot_menu.png
Normal file
BIN
static/images/exectos/xtldr_boot_menu.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
3
themes/exectos/config.yaml
Normal file
3
themes/exectos/config.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
module:
|
||||
hugoVersion:
|
||||
min: "0.84.0"
|
13
themes/exectos/layouts/_default/baseof.html
Normal file
13
themes/exectos/layouts/_default/baseof.html
Normal file
@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<div class="wrapper_content">
|
||||
<div class="content">
|
||||
{{- block "main" . }}{{- end }}
|
||||
</div>
|
||||
</div>
|
||||
{{- partial "footer.html" . -}}
|
||||
</body>
|
||||
</html>
|
9
themes/exectos/layouts/_default/list.html
Normal file
9
themes/exectos/layouts/_default/list.html
Normal file
@ -0,0 +1,9 @@
|
||||
{{ define "main" }}
|
||||
<h2>{{ .Title }}</h2>
|
||||
{{ range .Pages.ByPublishDate.Reverse }}
|
||||
<h3><a class="title" href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
|
||||
<a class="summary" href="{{ .RelPermalink }}">
|
||||
<p>{{ .Summary }}</p>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
12
themes/exectos/layouts/_default/script.html
Normal file
12
themes/exectos/layouts/_default/script.html
Normal file
@ -0,0 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<div id="content">
|
||||
{{- block "main" . }}{{- end }}
|
||||
</div>
|
||||
{{- partial "footer.html" . -}}
|
||||
{{- partial "script.html" . -}}
|
||||
</body>
|
||||
</html>
|
5
themes/exectos/layouts/_default/single.html
Normal file
5
themes/exectos/layouts/_default/single.html
Normal file
@ -0,0 +1,5 @@
|
||||
{{ define "main" }}
|
||||
<h2>{{ .Title }}</h2>
|
||||
{{ .Content }}
|
||||
<br /><br />
|
||||
{{ end }}
|
13
themes/exectos/layouts/index.html
Normal file
13
themes/exectos/layouts/index.html
Normal file
@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<div class="wrapper_content">
|
||||
<div class="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
{{- partial "footer.html" . -}}
|
||||
</body>
|
||||
</html>
|
10
themes/exectos/layouts/partials/footer.html
Normal file
10
themes/exectos/layouts/partials/footer.html
Normal file
@ -0,0 +1,10 @@
|
||||
<div class="wrapper_footer">
|
||||
<div class="footer">
|
||||
<div class="footer-left">
|
||||
Copyright© 2017 - 2024, CodingWorkshop
|
||||
</div>
|
||||
<div class="footer-right">
|
||||
Content is available under <a href="https://www.gnu.org/licenses/fdl-1.3.html">GNU Free Documentation License 1.3 or later</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
9
themes/exectos/layouts/partials/head.html
Normal file
9
themes/exectos/layouts/partials/head.html
Normal file
@ -0,0 +1,9 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="shortcut icon" href="/favicon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/css/style.css">
|
||||
<meta http-equiv="Content-type" content="application/xhtml+xml;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
|
||||
<title>{{ $title := print .Site.Title " | " .Title }}{{ if .IsHome }}{{ $title = .Site.Title }}{{ end }}{{ $title }}</title>
|
||||
</head>
|
19
themes/exectos/layouts/partials/header.html
Normal file
19
themes/exectos/layouts/partials/header.html
Normal file
@ -0,0 +1,19 @@
|
||||
<div class="wrapper_header">
|
||||
<div class="header">
|
||||
<h1><a href="{{ .Site.BaseURL }}"><img src="/images/exectos_logo.png" alt="LOGO" width="50px" /> {{ .Site.Title }}</a></h1>
|
||||
<ul>
|
||||
{{ range .Site.Menus.main }}
|
||||
{{ if .HasChildren }}
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ .Name }}<span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
{{ range .Children }}
|
||||
<li><a href="{{ .URL }}">{{ .Pre }}{{ .Name }}{{ .Post }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ else }}
|
||||
<li><a href="{{ .URL }}">{{ .Pre }}<b>{{ $text := print .Name | safeHTML }}{{ $text }}{{ .Post }}</b></a></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
5
themes/exectos/static/css/fontawesome-min.css
vendored
Normal file
5
themes/exectos/static/css/fontawesome-min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
239
themes/exectos/static/css/style.css
Normal file
239
themes/exectos/static/css/style.css
Normal file
@ -0,0 +1,239 @@
|
||||
@import url("/css/fontawesome-min.css");
|
||||
|
||||
@font-face {
|
||||
font-family : 'Source Sans Pro';
|
||||
font-style : normal;
|
||||
font-weight : 400;
|
||||
src : url('/fonts/source-sans-pro-v9-latin-regular.eot');
|
||||
src : local('Source Sans Pro'), local('SourceSansPro-Regular'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.woff2') format('woff2'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.woff') format('woff'),
|
||||
url('/fonts/source-sans-pro-v9-latin-regular.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family : 'Source Sans Pro';
|
||||
font-style : italic;
|
||||
font-weight : 400;
|
||||
src : url('/fonts/source-sans-pro-v9-latin-italic.eot');
|
||||
src : local('Source Sans Pro Italic'), local('SourceSansPro-It'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.woff2') format('woff2'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.woff') format('woff'),
|
||||
url('/fonts/source-sans-pro-v9-latin-italic.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family : 'Source Sans Pro';
|
||||
font-style : normal;
|
||||
font-weight : 700;
|
||||
src : url('/fonts/source-sans-pro-v9-latin-700.eot');
|
||||
src : local('Source Sans Pro Bold'), local('SourceSansPro-Bold'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.eot?#iefix') format('embedded-opentype'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.woff2') format('woff2'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.woff') format('woff'),
|
||||
url('/fonts/source-sans-pro-v9-latin-700.ttf') format('truetype');
|
||||
}
|
||||
|
||||
:root {
|
||||
color-scheme : light;
|
||||
}
|
||||
|
||||
html {
|
||||
color : light-dark(#333333, #FFFFFF);
|
||||
background-color : light-dark(#FFFFFF, #030C12);
|
||||
margin : 0;
|
||||
padding : 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family : "Source Sans Pro", "Trebuchet MS", "Verdana", sans-serif;
|
||||
margin : 0;
|
||||
padding : 0;
|
||||
}
|
||||
|
||||
code {
|
||||
color : #186196;
|
||||
font-weight : bold;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size : 28px;
|
||||
margin-top : 8px;
|
||||
padding : 1px;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
h2 {
|
||||
border-bottom : 1px solid #DDDDDD;
|
||||
font-size : 30px;
|
||||
margin-left : -1em;
|
||||
margin-right : -1em;
|
||||
text-decoration : bold;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size : 18px;
|
||||
margin-left : -1em;
|
||||
margin-right : -1em;
|
||||
text-decoration : bold;
|
||||
}
|
||||
|
||||
img {
|
||||
border : 0px;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color : #3C3C3C;
|
||||
border-color : #3D3D3D;
|
||||
border-radius : 4px;
|
||||
color : #ECECEC;
|
||||
display : block;
|
||||
font-size : 13px;
|
||||
line-height : 1.42857143;
|
||||
margin : 0 0 10px;
|
||||
overflow : auto;
|
||||
padding : 9.5px;
|
||||
word-break : break-all;
|
||||
word-wrap : break-word;
|
||||
}
|
||||
|
||||
pre code {
|
||||
color : #ECECEC;
|
||||
font-weight : normal;
|
||||
}
|
||||
|
||||
.content {
|
||||
font-size : 15px;
|
||||
margin-left : 30%;
|
||||
margin-right : 30%;
|
||||
margin-top : 1.5em;
|
||||
}
|
||||
|
||||
.content img {
|
||||
border : 0px;
|
||||
display : block;
|
||||
margin : auto;
|
||||
vertical-align : middle;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
.content li {
|
||||
list-style-type : square;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
color : #404040;
|
||||
font-family : "Source Sans Pro", "Trebuchet MS", "Verdana", sans-serif;
|
||||
font-size : 10px;
|
||||
text-align : center;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.copyright a {
|
||||
color : #404040;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.copyright a:hover {
|
||||
color : #404040;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background : light-dark(#FFFFFF, #030C12);
|
||||
color : light-dark(#000000, #FFFFFF);
|
||||
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%;
|
||||
}
|
||||
|
||||
.header {
|
||||
background : light-dark(#BEE0FF, #2185D0);
|
||||
border-bottom : 2px solid #186196;
|
||||
color : #186196;
|
||||
clear : both;
|
||||
font-size : 14px;
|
||||
padding-left : 1em;
|
||||
padding-top : 1px;
|
||||
text-align : center;
|
||||
vertical-align : middle;
|
||||
}
|
||||
|
||||
.header a {
|
||||
color : light-dark(#186196, #CCCCCC);
|
||||
padding-left : 5px;
|
||||
padding-right : 5px;
|
||||
padding-top : 1px;
|
||||
text-decoration : none;
|
||||
}
|
||||
|
||||
.header a:hover {
|
||||
color : light-dark(#000055, #FFFFFF);
|
||||
padding-left : 5px;
|
||||
padding-right : 5px;
|
||||
padding-top : 1px;
|
||||
}
|
||||
|
||||
.header img {
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
}
|
||||
|
||||
.header li {
|
||||
display : inline;
|
||||
margin-left : 2em;
|
||||
}
|
||||
|
||||
.header ul {
|
||||
margin : 0px;
|
||||
padding : 0px;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
.wrapper_content {
|
||||
margin-bottom : 2.5em;
|
||||
padding : 6em 0 0 0;
|
||||
}
|
||||
|
||||
.wrapper_header {
|
||||
background : light-dark(#FFFFFF, #030C12);
|
||||
color : light-dark(#000000, #FFFFFF);
|
||||
height : 6em;
|
||||
left : 0;
|
||||
position : absolute;
|
||||
position : fixed;
|
||||
top : 0;
|
||||
width : 100%;
|
||||
}
|
||||
|
||||
.wrapper_footer {
|
||||
background : light-dark(#FFFFFF, #030C12);
|
||||
border-top : 2px solid #186196;
|
||||
bottom : 0;
|
||||
color : #000000;
|
||||
height : 1.5em;
|
||||
left : 0;
|
||||
position : absolute;
|
||||
position : fixed;
|
||||
width : 100%
|
||||
}
|
BIN
themes/exectos/static/fonts/fontawesome-webfont.eot
Normal file
BIN
themes/exectos/static/fonts/fontawesome-webfont.eot
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/fontawesome-webfont.woff2
Normal file
BIN
themes/exectos/static/fonts/fontawesome-webfont.woff2
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.eot
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.eot
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.ttf
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.ttf
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.woff
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.woff
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.woff2
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-700.woff2
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-italic.eot
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-italic.eot
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-italic.ttf
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-italic.ttf
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-italic.woff
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-italic.woff
Normal file
Binary file not shown.
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-regular.eot
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-regular.eot
Normal file
Binary file not shown.
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-regular.ttf
Normal file
BIN
themes/exectos/static/fonts/source-sans-pro-v9-latin-regular.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
themes/exectos/static/images/exectos_logo.png
Normal file
BIN
themes/exectos/static/images/exectos_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
10
themes/exectos/theme.toml
Normal file
10
themes/exectos/theme.toml
Normal file
@ -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"
|
Loading…
Reference in New Issue
Block a user