Skip to content

RuslanSemchenko/NoirOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

140 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NoirOS Kernel - C23 Modernized Linux 3.10 for ARM

NoirOS is a modernized fork of the Linux 3.10 kernel, specifically tailored for mobile ARM architectures. It leverages modern compiler features (C23 standard), integrated sanitizers (UBSAN), and automated fuzzing to ensure maximum stability and security.

Key Features

  • Modern C23 Standard: Built using -std=gnu23 for modern language features and better type safety.
  • Integrated Sanitizers: Backported UBSAN (Undefined Behavior Sanitizer) support for the kernel runtime.
  • Automated Fuzzing: Built-in LibFuzzer infrastructure for host tools (e.g., kconfig expression parser).
  • Clean Build: Warning-free build environment using strict compiler flags (-w).
  • Parallel Workflow: Optimized orchestrator with automated resource partitioning and dependency synchronization.

Quick Start (Ubuntu 26.04)

NoirOS is optimized for Ubuntu 26.04 with GCC 15/16 and Clang 21.

1. Install Dependencies

apt-get update
apt-get install -y bc build-essential libncurses5-dev libssl-dev bison flex \
                   libelf-dev libselinux1-dev gcc-arm-linux-gnueabi clang llvm lld

2. Run the Optimized Orchestrator

The recommended way to work with NoirOS is through the optimized orchestrator, which ensures all dependencies are synchronized before starting parallel Build, Test, and Fuzz threads.

python3 scripts/orchestrator.py

This will:

  • Phase 1 (Preparation): Synchronize kernel config and generate shared headers (make prepare) to prevent race conditions.
  • Phase 2 (Parallel Execution):
    • Thread 1: Build the ARM kernel with UBSAN and C23 flags using a dedicated CPU partition.
    • Thread 2: Execute kernel selftests using a dedicated CPU partition.
    • Thread 3: Run LibFuzzer against host tools (e.g., kconfig).

Manual Build and Configuration

Configure for MSM8909

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make msm8909-1gb_defconfig

Build with Strict C23 Flags

make -j$(nproc) KCFLAGS="-w -std=gnu23 -fsanitize=undefined"

Testing and Fuzzing

Fuzzing Host Tools

To manually build and run the kconfig fuzzer:

clang -fsanitize=fuzzer,address,undefined -Iscripts/kconfig \
      scripts/kconfig/fuzzer.c scripts/kconfig/expr.c scripts/kconfig/util.c \
      -o kconfig_fuzzer
./kconfig_fuzzer

Kernel Selftests

make -C tools/testing/selftests run_tests

Debugging

Logs for the automated workflow are stored in:

  • build.log: Kernel compilation output and UBSAN reports.
  • test_run.log: Results of the kernel selftests.
  • fuzz_run.log: Sanitizer reports and crashes from the LibFuzzer targets.
  • orchestrator.log: General orchestrator status.

License

NoirOS is distributed under the GNU General Public License v2.0 (GPL-2.0). See the COPYING file for details.

About

No description, website, or topics provided.

Resources

License

GPL-2.0, Unknown licenses found

Licenses found

GPL-2.0
LICENSE
Unknown
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors