Multi-architecture hobby operating system kernel created in C
Find a file
2025-05-05 21:15:33 -05:00
.github/workflows Modify GitHub workflow. 2021-09-09 19:44:12 -05:00
kernel fw/initrd: Support lzop-compressed CPIO 2025-05-05 21:15:33 -05:00
scripts build: Update binutils and gcc 2025-03-01 19:48:29 -06:00
.defconfig kconfig: Move more config options to kconfig 2025-03-02 16:31:17 -06:00
.gdbinit Automatically load kalloc GDB script 2022-07-17 07:36:01 -05:00
.gitignore proc: Add thread-aware lock 2025-03-17 21:37:11 -05:00
Doxyfile Added comments to KRNG messages. 2017-07-15 10:18:57 -05:00
Kconfig build: Use kconfig 2025-03-01 19:48:29 -06:00
LICENSE proc: Make ARMv7 context switching slightly more reliable. 2022-02-14 18:32:25 -06:00
Makefile fw/initrd: Support lzop-compressed CPIO 2025-05-05 21:15:33 -05:00
README.md build: Use kconfig 2025-03-01 19:48:29 -06:00

Lambda Kernel

Lambda OS is a hobby operating system developed by Peter Farley. Lambda OS is designed to be portable to multiple systems, and currently supports x86-based PCs, ARMv7 (Cortex-A9) support is in progress, and x86_64 and RISCV (RV64I) support is planned.

NOTE: This repository only contains the kernel portion of Lambda OS. For a usable implementation of the kernel, see the lambda-os repository.

Platform support:

  • x86
    • x86 PC (platform with the most support)
  • ARMv7
    • Cortex-A9
      • Versatile Express A9 (early stages; partially dropped)
    • Cortex-A53
      • Broadcom BCM2836/7 (Raspberry Pi) (early stages)

Building

To be able to build the Lambda kernel, you need the following tools:

  • gcc
    • If using gcc, you must use a cross-compiler. There is a convenience script for building one: scripts/build-cross-compiler.sh
    • TODO: reintroduce clang support
  • make
  • eu-readelf (elfutils)
  • menuconfig or similar, for easy configuration
    • Not required, .config file can be modified by hand
    • If no .config file is present, .defconfig is used instead
    • For a standalone Kconfig-compatible menuconfig, see Kconfiglib

To build kernel:

  • (If fisrt time) Clone the lambda-kern code repository
  • (If not first time) Run git pull
  • If you wish to make changes to the configuration: menuconfig (or similar)
    • Default config targets x86
  • Make: make CROSS_COMPILE=<gcc prefix>
    • CROSS_COMPILE is not necessary when using Clang
      • Clang can be enabled via CONFIG_BUILD_USE_CLANG in the config
      • Using clang with ARM is currently not fully supported
    • To speed up compilation, add -j<threads> argument to the make command