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 98.7%
  • M4 0.5%
  • Assembly 0.5%
  • Shell 0.3%
streaksu c7688a8882
userland: wire up the argument for create_thread
Signed-off-by: streaksu <streaksu@mailbox.org>
2025年05月30日 21:05:21 +02:00
.forgejo/workflows ci: add spellcheck workflow for forgejo 2025年04月02日 00:47:28 +02:00
docs userland: move pread/pwrite to flags of read/write 2025年05月30日 20:02:20 +02:00
gprconfig arch: port uacpi and generalize ACPI facilities 2025年01月25日 15:40:46 +01:00
source userland: wire up the argument for create_thread 2025年05月30日 21:05:21 +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 arch/x86_64-limine: add early boot terminal for early debugging 2025年03月11日 03:41:29 +01:00
.mailmap mailmap: Update Mintsuki mailmap entry 2025年04月05日 05:07:32 +02:00
.typos.toml docs: fix about one million typos all around the project 2025年03月23日 15:25:03 +01:00
bootstrap bootstrap: Update cc-runtime 2025年04月07日 08:17:55 +02:00
CHANGELOG.md docs: Make changes for 0.7.0 2025年05月27日 14:06:55 +02:00
configure.ac build: add local typo checking 2025年04月02日 06:40:02 +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 .forgejo instead of .github from tarballs 2025年04月15日 12:35:06 +02:00
ironclad.gpr.in arch/x86_64-limine: add early boot terminal for early debugging 2025年03月11日 03:41:29 +01:00
README.md docs: add nlnet thanks to the README 2025年05月18日 15:06:46 +02:00
RELEASE_PROCEDURE.md docs: add release procedure 2025年05月19日 07:11:27 +02:00
rts.gpr.in arch: port uacpi and generalize ACPI facilities 2025年01月25日 15:40:46 +01: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] (https://ironclad-os.org/community.html).

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