Uinxed-Kernel is a Unix-like operating system kernel developed from scratch, focusing on modern computer architecture and advanced system design concepts. The project aims to build an efficient, stable, and scalable operating system kernel while maintaining code clarity and maintainability.
- x86_64 architecture support: optimized for modern 64-bit x86 processors
- UEFI boot: uses UEFI as the boot mode to support modern hardware platforms
- Legacy boot: Compatible with traditional Legacy boot
- KASLR: Kernel address space layout randomization to enhance security.
- Memory management:
- Physical memory frame allocator
- Virtual memory page management
- High half memory mapping (HHDM)
- Interrupt management:
- Complete interrupt descriptor table (IDT) implementation
- Advanced Programmable Interrupt Controller (APIC) support
- System management:
- ACPI support
- High Precision Event Timer (HPET)
- Multi-core support based on symmetric multi-processing
- Terminal meatures:
- TTF fonts or Bitmap fonts
- High-speed terminal implementation
- make: Used to build projects.
- gcc: GCC Version 13.3.0+ is recommended.
- qemu: Used for simulation testing.
- xorriso: Used to build ISO image files.
- clang-format: Used to format the code.
- clang-tidy: Used for static analysis of code.
- kconfig-frontends: Provides a graphical configuration menu.
- libncurses-dev: Text-based user interface library.
Debian & Ubuntu & Kali
sudo apt update
sudo apt install make gcc qemu-system xorriso clang-format clang-tidy kconfig-frontends libncurses-devArchLinux
pacman -Sy make gcc qemu-system xorriso clang-format clang-tidy kconfig-frontends libncurses-devAlpine
sudo apk update
sudo apk add make gcc qemu-system xorriso clang-format clang-tidy kconfig-frontends libncurses-devgit clone https://github.com/ViudiraTech/Uinxed-Kernel.git
cd Uinxed-Kernelmakemake run- Convert the USB drive or hard disk to GPT partition table and create ESP partition.
- Copy all folders under the project directory ./assets/Limine to the ESP partition.
- Copy the compiled kernel (UxImage) to the ./EFI/Boot/ directory in the ESP partition.
- Boot from a physical machine (must be in 64-bit UEFI mode with CSM disabled)
Direct boot:
- Burn the ISO image to your drive.
- Boot from a physical machine (at least a 64-bit machine)
Boot with ventoy:
- Copy the ISO image to your drive.
- Boot from your drive and enter in ventoy.
- Select the image then press enter, boot in normal mode or memdisk mode.
Uinxed-Kernel/
βββ .git/ # Version management.
βββ .github/ # Github configuration file.
βββ assets/ # Static resource files.
βββ boot/ # Boot related.
βββ docs/ # Related documents.
βββ drivers/ # Device driver.
βββ fs/ # File system.
βββ include/ # Header file.
βββ init/ # Code entry.
βββ kernel/ # Kernel part.
βββ libs/ # Library file.
βββ mem/ # Memory management.
βββ .clang-format # Formatting configuration files.
βββ .clang-tidy # Static analysis configuration file.
βββ .clangd_template # Clangd configuration template.
βββ .config-default # Default configuration options.
βββ .gitignore # Ignore rules.
βββ Kconfig # Project configuration file.
βββ LICENSE # Open source license.
βββ Makefile # Build script.
βββ README.md # Project introduction.
Uinxed-Kernel/
βββ UxImage # Kernel file.
βββ Uinxed-x64.iso # Bootable image.
A: If you are using clangd as a code analyzer, you can generate a .clangd file via Makefile. Just like this:
make gen.clangdHowever, if you are using a different LSP server, you can refer to the Makefile to change your configuration file.
A: Make sure you have clang-format installed, then execute make format. Just like this:
make formatA: Make sure clang-tidy is installed, and then execute make check as follows:
make checkWe welcome contributions to this project! To ensure a smooth workflow, please follow the steps below to contribute code to the develop branch:
- Fork the repository from the project's main GitHub page.
- Clone your forked repository to your local machine:
git clone https://github.com/your-username/your-repository.git
cd your-repository- Make sure you're on the develop branch to work on new features and improvements:
git checkout develop- Start coding! Make the necessary changes or add new features in your develop branch.
- Be sure to test your code and fix any bugs before proceeding.
- After making your changes, stage them using:
git add .- Commit your changes with a clear and descriptive message:
git commit -m "Describe the changes or features you've implemented."- Push your local develop branch to your remote fork:
git push origin develop- Visit your GitHub repository and create a Pull Request (PR).
- Make sure the base branch is set to develop (not master).
- Fill in the PR description clearly, outlining the changes you've made.
- Submit the PR for review.
- Wait for the project maintainers to review your code. They may provide feedback or request changes.
- Once the code is reviewed and approved, it will be merged into the develop branch.
- After your PR is merged, pull the latest changes from develop to keep your local repository up to date:
git pull origin develop- All development work should be done on the develop branch.
- The master branch is reserved for stable, production-ready versions. Do not submit changes directly to master.
Communication is the key to problem solving. When you encounter a bug, you can report it to us by submitting an issue. We welcome everyone to submit an issue. But before you do it, you should know our rule of submitting.
- Describe the problem in as much detail as possible. It will help us understand clearly what happened. For this, you may submit with your log or code snippet.
- Just be polite. Bring your problem politely. Asking questions to us in an extremely impolite manner will not solve any substantive problems, but will instead cause both the questioner and the answerer to engage in a fight. Asking questions politely and rationally will help solve the problem smoothly.
- No need to worry about being formal. You can be more casual, no need to be too formal. It is because of your questions that we can make our project better, so in a sense we are partners. On the other hand, because the language is too formal, it may be difficult to read. In order to maximize efficiency, we do not require formal language.
- Native language allowed. You can submit an issue in your own language. However, please be aware of factors such as spelling that may affect the translation results, and sometimes the translator may not work well because of this.
| Number | Nick name | Github | Job |
|---|---|---|---|
| 1 | MicroFish | FengHeting | Development. Planning. Management. |
| 2 | suhuajun | suhuajun-github | Code optimization. Testing. Bug fixing. |
| 3 | XSlime | W9pi3cZ1 | Features. Code optimization. Testing. Bug fixing. |
| 4 | TMX | TMXQWQ | Features. Code optimization. Testing. Bug fixing. |
A resident contributor is someone who directly contributes to and manages the project in a resident capacity. Removing a resident developer from the resident developer list does not mean that the project manager will not recognize their contributions, but rather that they are no longer involved in the project in a resident capacity. However, their contribution record will remain.
- Hurlex-Kernel:http://wiki.0xffffff.org/
- CoolPotOS:https://github.com/plos-clan/CoolPotOS
This project adopts the Apache 2.0 open source license. Please refer to the LICENSE file for details.
- EmailοΌ2609948707@qq.com | 3585302907@qq.com
- Join our discord server: Click here
- Tencent QQ chat group: 983673299
