1
0
Fork
You've already forked ironclad
0
forked from Ironclad/Ironclad
Formally verified, real-time capable, UNIX-like operating system kernel written in SPARK and Ada.
  • Ada 99%
  • Assembly 0.5%
  • M4 0.3%
  • Shell 0.2%
streaksu 256024399c
memory: add a cache slab for allocation
Signed-off-by: streaksu <streaksu@mailbox.org>
2026年03月29日 17:57:00 +02:00
.forgejo/workflows ci: merge spellcheck into the normal ci job 2026年01月12日 18:23:43 +01:00
.well-known docs: fix newline in well-known file 2025年06月13日 09:01:12 +02:00
docs docs: add ENOTSUPP as valid return for nvmm functions 2026年03月15日 17:28:36 +01:00
gprconfig arch: port uacpi and generalize ACPI facilities 2025年01月25日 15:40:46 +01:00
source memory: add a cache slab for allocation 2026年03月29日 17:57:00 +02:00
.als.json build: add json file for als configuration 2025年02月19日 13:07:15 +01:00
.editorconfig build: add linker scripts to .editorconfig 2025年02月18日 08:53:49 +01:00
.gitignore build: Update Flanterm and build system 2025年06月07日 22:07:04 +02:00
.mailmap mailmap: Update Mintsuki mailmap entry 2025年04月05日 05:07:32 +02:00
.typos.toml docs: fix typos 2025年10月09日 02:30:19 +02:00
bootstrap bootstrap: upgrade flanterm to 3.0.2 2026年03月18日 15:11:19 +01:00
CHANGELOG.md userland: replace ioctl for a more POSIXy devctl 2026年02月11日 14:44:31 +01:00
configure.ac build: configure.ac: Rework GET_PROG macro 2025年08月17日 05:33:19 +02:00
CONTRIBUTING.md docs: improve contribution guidelines 2025年04月01日 23:49:47 +02:00
COPYING Migrate README.md and LICENSE.md to more standard and GNU-friendly formats 2022年04月18日 18:14:25 +02:00
GNUmakefile.in build: Remove some extra files and dirs from the release tarball 2025年08月13日 08:00:18 +02:00
ironclad.gpr.in virtualization: clean a lot of the virtualization code around and organize 2026年03月02日 19:00:46 +01:00
README.md Fix markdown formatting of link to "community tab" ( #17 ) 2025年07月22日 00:59:21 +02:00
RELEASE_PROCEDURE.md docs: add release procedure 2025年05月19日 07:11:27 +02:00
rts.gpr.in build: Misc GPRBUILD files improvements 2025年07月28日 19:09:38 +02:00
SECURITY.md build: add local typo checking 2025年04月02日 06:40:02 +02:00
version.sh build: Miscellaneous fixes focusing on Alpine compatibility 2024年12月09日 23:28:35 +01:00

Ironclad

Ironclad logo

Ironclad is a partially formally verified real-time kernel, with a small footprint, for general-purpose and embedded OSes, written in SPARK and Ada.

Some of the supported features are:

  • A familiar POSIX-compatible interface.
  • True simultaneous multitasking.
  • Resiliency and small footprint.
  • Partial gold-level formal verification.
  • Advanced cryptography and a security-centered architecture, including MAC.
  • Hard real-time scheduling and real-time oriented features.
  • Support for severals architectures and boards.

For more information about the project, some autogenerated documentation, bug reporting, and development guides, check https://ironclad-os.org

Important

This repository holds the Ironclad kernel only, if you are looking for a runnable operating system, userland software is required.

An example of an operating system distribution ready to download and use is Gloire.

Building and testing

The tools needed are:

  • standard *nix tools including find and GNU make.
  • autoconf and automake when not using a tarball (for ./bootstrap).
  • gprbuild for compilation, along with a compatible Ada compiler and assembler.
  • GNU Info for building the documentation.
  • highlight for syntax highlighting when building the HTML documentation.
  • gnatprove for formal verification, if desired.
  • typos for spell-checking, if desired.

If checking out Git sources instead of building from a tarball, run ./bootstrap first.

For building the project's binaries, a standard configure-make-make install is enough, like the following:

./configure
make
make check # If desired, will need gnatprove and perl.
make install

(Replace make with gmake or similar if necessary, on systems where GNU make is not the default make).

Several flags are provided in configure for customizing kernel settings, one can check them with ./configure --help.

The above would build Ironclad for the architecture of the host system; so for example it would be built for x86_64 on an x86_64 host. In order to cross compile Ironclad for a different architecture, one can use the standard autoconf option --host= for ./configure. For example: ./configure --host=riscv64-linux-gnu would build Ironclad for RISC-V 64-bit, using the riscv64-linux-gnu toolchain.

Additionally, the optional PLATFORM=... variable can be passed to ./configure to tell the build system which platform/board to build Ironclad for. So far, the only supported value for PLATFORM is limine, which is the default.

Contributing and bug reporting

Thanks for considering contributing to Ironclad, it means a lot.

Please check our contributing document for information on how to get started, how to submit patches to the project, and how to submit bugs.

For security vulnerabilities, or other security critical bugs, please follow the guidelines of our security policy.

Joining the community

You can visit our list of community channels on Ironclad's community tab.

Thanks to

This project is funded through NGI Zero Core, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.

NLnet foundation logo NGI Zero Logo