🏢 An operating system that combine the desire of UNIX utopia from the 1970s with modern technology and engineering

Overview



Striking modernist shapes and bold use of modern C are the hallmarks of BRUTAL.
BRUTAL combine the desire of UNIX utopia from the 1970s with modern technology and engineering.


About

BRUTAL is a micro-kernel base operating system targeting the x86_64 architecture. ARM and Risc-V support is planned.

Roadmap

Right now the main goal of brutal is to run doom.

See the roadmap file for more information on how we plan to get there and where you can contribute.

Modern C

Brutal is written in a dialect of C called modern C characterize by the following principle:

  • Avoid pointers and prefer value semantic.
  • The standard library is old and unsafe, don't use it.
  • Don't be afraid of writing type generic code.

Here is more resources on the subject:

Acknowledgements

This project take inspirations and/or reuse code from the following projects.

See Acknowledgements.md

License

MIT License

The brutal operating system and its core components are licensed under the MIT License.

The full text of the license can be accessed via this link and is also included in the license file of this software package.

Comments
  • Make it compile on macOS (Monterey)

    Make it compile on macOS (Monterey)

    I used this configuration to compile it under macOS (Monterey).

    I need to obtain the following dependencies on my local system to compile it.

    brew install qemu nasm xorriso llvm binutils wget

    Then I run it via ./brutal.sh -r to open the qemu window.

    opened by jjuliano 9
  • math.h file not found

    math.h file not found

    During the building process math.h can not be found.

    In file included from sources/apps/about/main.c:2:
    In file included from bin/generated/headers/brutal-ui:3:
    In file included from sources/libs/brutal-ui/text.h:3:
    In file included from sources/libs/brutal-ui/view.h:3:
    In file included from sources/libs/brutal-ui/color.h:3:
    In file included from bin/generated/headers/brutal-gfx:3:
    In file included from sources/libs/brutal-gfx/path.h:3:
    In file included from bin/generated/headers/brutal-math:3:
    sources/libs/brutal-math/vec2.h:3:10: fatal error: 'math.h' file not found
    #include <math.h>
             ^~~~~~~~
    1 error generated.
    make: *** [bin/devel/arm64-host-llvm/apps/about/main.c.o] Error 1
    
    opened by febra33 7
  • Problem when building brutal

    Problem when building brutal

    It returns me this error: In file included from sources/kernel/x86_64/boot.c:21: sources/kernel/x86_64/stivale2.h:4:10: fatal error: 'stivale/stivale2.h' file not found #include <stivale/stivale2.h> ^~~~~~~~~~~~~~~~~~~~ 1 error generated. make: *** [sources/kernel/.build.mk:37: build/x86_64-llvm/cross/kernel/x86_64/boot.c.o] Error 1

    opened by Rix565 7
  • Unused parameter 'magic' while building on MacOS

    Unused parameter 'magic' while building on MacOS

    I have followed the given build instructions (building.md) but have been running into the same problem while trying to build on MacOS (ARM).

    sources/kernel/x86_64/boot.c:25:51: error: unused parameter 'magic' [-Werror,-Wunused-parameter]
    void arch_entry_main(Handover *handover, uint64_t magic)
                                                      ^
    1 error generated.
    make: *** [bin/devel/x86_64-kernel-llvm/kernel/x86_64/boot.c.o] Error 1
    

    The needed packages are already installed:

    ➜  brutal git:(main) brew install qemu nasm xorriso llvm binutils wget pkg-config sdl2
    Warning: qemu 7.1.0 is already installed and up-to-date.
    To reinstall 7.1.0, run:
      brew reinstall qemu
    Warning: nasm 2.15.05 is already installed and up-to-date.
    To reinstall 2.15.05, run:
      brew reinstall nasm
    Warning: xorriso 1.5.4 is already installed and up-to-date.
    To reinstall 1.5.4, run:
      brew reinstall xorriso
    Warning: llvm 15.0.3 is already installed and up-to-date.
    To reinstall 15.0.3, run:
      brew reinstall llvm
    Warning: binutils 2.39_1 is already installed and up-to-date.
    To reinstall 2.39_1, run:
      brew reinstall binutils
    Warning: wget 1.21.3 is already installed and up-to-date.
    To reinstall 1.21.3, run:
      brew reinstall wget
    Warning: pkg-config 0.29.2_3 is already installed and up-to-date.
    To reinstall 0.29.2_3, run:
      brew reinstall pkg-config
    Warning: sdl2 2.24.1 is already installed and up-to-date.
    To reinstall 2.24.1, run:
      brew reinstall sdl2
    

    The needed environment variables have also been set.

    opened by febra33 5
  • FreedOwOm

    FreedOwOm

    Join us now and share the software; You'll be free, hackers, you'll be free Join us now and share the software; You'll be free, hackers, you'll be free

    Hoarders can get piles of money That is true, hackers, that is true But they cannot help their neighbors; That's not good, hackers, that's not good

    When we have enough free software At our call, hackers, at our call We'll kick out those dirty licenses Ever more, hackers, ever more

    Join us now and share the software; You'll be free, hackers, you'll be free Join us now and share the software; You'll be free, hackers, you'll be free

    opened by StallmanTerminator 4
  • Building on macOS

    Building on macOS

    When I try to build it on macOS, it works fine for the most part. However, it always now ends in this:

    make: *** No rule to make target `/opt/homebrew/Cellar/llvm/13.0.0_1/lib/clang/13.0.0/share/asan_ignorelist.txt', needed by `bin/arm64-llvm/host/embed/posix/err.c.o'.  Stop.
    

    How do I fix this, or get around this?

    opened by daniyalw 4
  • Feat: add basic EFI library

    Feat: add basic EFI library

    I added a basic EFI library for the work-in-progress bootloader.

    I am using my own printf-like thing because for a certain reason, fmt wouldn't want to work with utf16. I also implemented my own strncpy since yours is broken (add a '\0' at the end of the string).

    opened by Abb1x 4
  • Feat/deflate

    Feat/deflate

    RFC 1951

    • [x] write uncompressed blocks
    • [ ] write static huffmann blocks
    • [ ] write dynamic huffman blocks
    • [x] read uncompressed blocks
    • [x] read static huffman blocks
    • [x] read dynamic huffman blocks

    RFC 1950

    • [x] read zlib streams
    • [ ] write zlib streams

    RFC 1952

    • [x] read gzip streams
    • [ ] write gzip streams

    Hashing / Checksum validation

    • [x] Adler32
    • [ ] CRC32C
    opened by feliwir 2
  • Feature suggestion: Add source code comments

    Feature suggestion: Add source code comments

    Currently, the majority of the .C source code is undocumented.

    Consider that it's often easier to expose oneself to the concepts of a new application when the source can be scanned quickly, and the high-level concepts ingested as fast as possible; if going deeper is needed, the actual code is just a few lines away.

    opened by gregkrsak 2
  • Add bootloader

    Add bootloader

    This PR is to upstream the current brutal-boot code into the repo

    To build and run the bootloader, use make run-loader; This will also build a simple kernel to test things out

    Note: I'm not good with build systems so be free to point out stuff

    opened by Abb1x 2
  • docs: Fix a few typos

    docs: Fix a few typos

    There are small typos in:

    • meta/scheduling.md
    • readme.md
    • sources/kernel/riscv64/asm.h
    • sources/kernel/riscv64/unleashed/gpio.h
    • sources/kernel/x86_64/asm.h
    • sources/kernel/x86_64/com.c
    • sources/utils/test/cc/cc.h

    Fixes:

    • Should read example rather than exemple.
    • Should read those rather than thoses.
    • Should read program rather than programm.
    • Should read internal rather than internall.
    • Should read characters rather than caracters.
    • Should read capability rather than capabilty.
    • Should read alignment rather than alignement.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    opened by timgates42 1
  • test: merge the bench app with test app + improved the test app

    test: merge the bench app with test app + improved the test app

    • now you can iterate multiple time in a test
    • now if a test doesn't succeed, print the exit value
    • added gfx tests
    • now you can dump all the tests names
    • For gfx_brutal_logo_rotated, use iteration instead of time, thus making the test always behaving the same way.
    opened by Supercip971 1
Releases(milestone-4)
Owner
Brutal
Brutal
This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineering Clinics at Vellore Institute Of Technology

UltrasonicSensorGlasses-for-blind-people This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineerin

Mithilesh Ghadge 2 Oct 14, 2021
A perfect blend of C, Java, and Python tailored for those who desire a simple yet powerful programming language.

Fastcode A perfect blend of C, Java, and Python tailored for those who desire a simple yet powerful programming language. FastCode is a procedural/str

null 28 Aug 19, 2022
KePOS is a 64-bit operating system. Design and implement your own operating system

KePOS is a 64-bit operating system. The purpose of this system is to combine the theoretical knowledge and practice of the operating system, and to deepen the understanding of the operating system.

null 65 Nov 9, 2022
Reverse engineering Genshin Impact anticheat to study how anticheats work on the Windows operating system.

mhyprot2 - Reverse engineering Genshin Impact anticheat for study 1. Demonstration video 2. Screenshots 2.1 Panel 3. Future updates and questions As I

João Vitor 57 Nov 16, 2022
AMD K6-2 (CXT) / K6-2+ / K6-3 / K6-3+ Write Allocate / Write Combine / Write Ordering / Frequency Multiplier Initialization driver for MS-DOS

K6INIT What is this? This is a driver for MS-DOS to replace k6dos.sys which is a bit useless and unflexible. It does not support the CXT versions of t

null 10 Sep 11, 2022
A simple Unix like operating system from scratch.

HOS-x86 an x86 operating system written from scratch How to Build? Currently you need NASM, GCC and QEMU to build the image file. Install the packages

Jayachandra Kasarla 15 Feb 7, 2021
🦠 µnix is a UNIX-like operating system for the raspberry pi pico.

The µnix Operating System "µnix", "munix" or, "micro unix" aims to be a micro kernel based operating system targeting the Raspberry Pi Pico. "µnix" is

Sleepy Monax 57 Dec 11, 2022
SerenityOS - Graphical Unix-like operating system for x86 computers. 🐞

SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.

SerenityOS 23.5k Jan 4, 2023
A unix operating system made from scratch using c++

pranaos A unix operating system made from scratch using c++ Dependencies g++ version should be more than 10.0.0 ninja gcc compiler needed prana os is

Krisna Pranav 16 Nov 9, 2022
My Unix-like Operating System

Koerix What is Koerix? Koerix is a Unix-like hobby OS written in C++. I am mainly targeting the x86_64 (on PC) and the armv6a and AArch64 (on raspi/ra

Alexander Ulmer 3 Dec 15, 2021
Unox is an educational unix-like operating system. #JustForFun

Unox Unox is a x86_64 unix-like operating system written in c and assembly for learn about operating systems. Roadmap Write bootloader and linker Writ

Hasan Kashi 21 Sep 4, 2022
🏢 A bold, unapologetic, and honest operating system written in modern C

A bold, unapologetic, and honest operating system written in modern C About Striking modernist shapes and bold use of modern C are the hallmarks of BR

Brutal 929 Jan 5, 2023
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

SynnixOS Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via Q

RaidTheWeb 42 Oct 28, 2022
A Modern Operating System Written in C++ From Scratch!

README Features Long Mode (64-bit) OS Higher Half Kernel Stack Based - Page Frame Allocator (PMM) with O(1) time complexity Virtual Memory Manager (VM

null 10 Jan 2, 2023
Free and Open Source API and drivers for immersive technology.

OpenHMD This project aims to provide a Free and Open Source API and drivers for immersive technology, such as head mounted displays with built in head

null 1.1k Dec 28, 2022
A visualization solution for curriculum and course relationships of Hongkong University of Science and Technology(HKUST)

Curriculum Map A visualization solution for curriculum and course relationships of Hongkong University of Science and Technology(HKUST) Notice: Qt v6.

Zory 7 Dec 21, 2022
Operating system project - implementing scheduling algorithms and some system calls for XV6 OS

About XV6 xv6 is a modern reimplementation of Sixth Edition Unix in ANSI C for multiprocessor x86 and RISC-V systems.

Amirhossein Rajabpour 22 Dec 22, 2022
DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala

DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala.

mhlatifi 3 Jul 23, 2022
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.

Plants vs. Zombies Online Battle This project has two original repositories: https://github.com/czs108/Plants-vs.-Zombies-Online-Battle https://github

Liugw 71 Oct 14, 2021