{"id":34657081,"url":"https://github.com/elydre/profanos","last_synced_at":"2026-05-23T20:05:04.188Z","repository":{"id":41574676,"uuid":"509796344","full_name":"elydre/profanOS","owner":"elydre","description":"The i386 profan Operating System","archived":false,"fork":false,"pushed_at":"2026-02-28T23:11:13.000Z","size":22353,"stargazers_count":57,"open_issues_count":2,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-01T02:08:40.071Z","etag":null,"topics":["kernel","osdev"],"latest_commit_sha":null,"homepage":"https://elydre.github.io/profan","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elydre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-07-02T15:49:03.000Z","updated_at":"2026-02-18T13:16:28.000Z","dependencies_parsed_at":"2023-10-16T02:30:30.708Z","dependency_job_id":"fa980f28-e29f-4adc-9cf0-ae22abf12d88","html_url":"https://github.com/elydre/profanOS","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/elydre/profanOS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elydre%2FprofanOS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elydre%2FprofanOS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elydre%2FprofanOS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elydre%2FprofanOS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elydre","download_url":"https://codeload.github.com/elydre/profanOS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elydre%2FprofanOS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30090037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T18:31:08.343Z","status":"ssl_error","status_checked_at":"2026-03-04T18:31:07.708Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kernel","osdev"],"created_at":"2025-12-24T18:25:51.258Z","updated_at":"2026-04-10T17:36:42.545Z","avatar_url":"https://github.com/elydre.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The profan Operating System\n\n[![publish](https://github.com/elydre/profanOS/actions/workflows/publish.yml/badge.svg)](https://github.com/elydre/profanOS/actions/workflows/publish.yml)\n[![commit-activity](https://img.shields.io/github/commit-activity/m/elydre/profanOS)](https://github.com/esolangs/profanOS-build/tree/main/img)\n[![loc](https://img.shields.io/badge/dynamic/json?color=blue\u0026label=code%20lines\u0026query=profan_lines\u0026url=https://elydre.github.io/build/profan_data.json)](https://github.com/elydre/profanOS/graphs/code-frequency)\n[![latest](https://img.shields.io/badge/dynamic/json?color=blue\u0026label=latest%20kernel\u0026query=kernel_version\u0026url=https://elydre.github.io/build/profan_data.json)](https://elydre.github.io/profan)\n\n![wave](https://elydre.github.io/img/profan.svg)\n\nThe profan Operating System is an independent OS developed from scratch.\nIt is characterized by its ring0-only preemptive modular multitasking\nminimalist kernel and colorful-looking command line-based user interface.\n[Test it from your browser](https://elydre.github.io/profan)\nwithout installing anything.\n\nYou can find a progress roadmap in [github projet](https://github.com/users/elydre/projects/7),\na [monthly updates](https://github.com/elydre/profanOS/discussions/categories/retrospective) and\nthe [wiki](https://github.com/elydre/profanOS/wiki) for documentation.\n\n## Setup\n\n\u003e [!NOTE]\n\u003e Compilation is guaranteed only on linux but\n\u003e it is also possible in windows with virtualization\n\u003e solutions like wsl (on windows 11) or hyperV.\n\n### Install dependencies\n\n```bash\n# Debian based\nsudo apt update\nsudo apt install -y make python3 gcc g++ nasm qemu-system-i386 \\\n                    grub-common xorriso grub-pc-bin mtools\n\n# Arch based\nsudo pacman -Syu\nsudo pacman -S      make python gcc nasm qemu-full xorriso \\\n                    grub-common mtools\n```\n\n### Compile \u0026 Run\n\n```bash\n# Compile and run\nmake run\n\n# Show all commands\nmake help\n```\n\nEach time the disk is modified you must force its reconstruction with `make disk`.\nThe main ports (more information in the [ports](#Major ports - Addons) section) are not included\nin the repo source code but are easily downloadable with `make addons disk`.\n\n### Automated build\n\nYou can download the build images from the [latest release](https://github.com/elydre/profanOS/releases/tag/latest)\nor the repo [profanOS-build](https://github.com/esolangs/profanOS-build).\n\n```bash\n# Run the iso image in qemu\nqemu-system-i386 -cdrom profanOS.iso\n\n# With KVM acceleration\nqemu-system-i386 -cdrom profanOS.iso -enable-kvm\n```\n\nprofanOS can also be tested online with two clicks with the [v86 copy](https://github.com/copy/v86)\nemulator [here](https://elydre.github.io/profan).\n\n## First look\n\nWhen starting profanOS, you will be greeted by the [Olivine](https://github.com/elydre/profanOS/wiki/olivine) shell, a language similar to bash.\nYou can then run the `help` command to see a list of useful commands.\n\n![banner](https://elydre.github.io/img/profan/banner2.png)\n\n\u003e [!TIP]\n\u003e To switch the keyboard layout use the `kb \u003clayout\u003e` command, such as `kb qwerty`.\n\n## The kernel\n\n### Overview\n\nThe **profanOS kernel** is the core of the operating system. It is extremely minimalist and\nprovides only the essential features required to run a multitasking OS. Everything\nnon-essential is kept outside of the kernel and implemented as modules.\n\n**Main features**:\n\n- multiboot support\n- 32 bits protected mode\n- custom modular filesystem\n- preemptive multitasking\n- virtual memory management\n- syscalls with interrupts\n- ELF modules loading\n\n### Modules\n\nModules extend the kernel with additional functionality, they can be hot-loaded and\nhave access to all kernel functions. Typical modules provide drivers, UNIX compatibility\nlayers, or low-level libraries.\n\n**Main modules**:\n\n- unix file descriptors interface\n- ATA and AHCI disk driver\n- profan filesystem extansion\n- intel HDA audio driver\n- panda terminal emulator\n\n## The userspace\n\n### Programing languages\n\nThe kernel and userspace are developed mainly in C. The Olivine Shell (see the\n[language documentation](https://github.com/elydre/profanOS/wiki/olivine)) is the main shell language.\nYou can also use python3, posix-sh, lua, perl, sulfur, and C languages to create your\nown programs.\n\nIf you prefer a bash like rather than Olivine, you can use the `dash` port which is\nPOSIX compliant and often used as `/bin/sh` in linux systems.\n\n### Major ports - Addons\n\n- [python](https://www.python.org/) Python 3.11 interpreter\n- [dash](https://github.com/elydre/dash-profan) POSIX compliant shell\n- [tcc](https://bellard.org/tcc/) Small and fast C compiler\n- [GNU make](https://www.gnu.org/software/make/) Makefile interpreter\n- [doom](https://github.com/ozkl/doomgeneric) Raycasting first person shooter\n\nAll the ports are available with the command `make addons`.\nA lot of programs are compiled from [this repo](https://github.com/elydre/libatron),\nyou can also find a list of stuff tested in profanOS\n[here](https://github.com/stars/elydre/lists/compile-in-profan).\n\n### Libraries\n\nLibraries are loaded from file system and are dynamically linked to executables using\n`deluge` (profan dynamic linker).\n\nHere is a list of the main libraries and kernel modules:\n\n- **libc** - standard C library\n- **libpf** - extra stuff like [libtsi](https://github.com/elydre/profanOS/wiki/lib_tsi)\n- **libm** - math library *(port)*\n- **libSDL2** - Simple DirectMedia Layer 2 *(port)*\n\nFind all the libraries available on the [wiki](https://github.com/elydre/profanOS/wiki/Dev-Links).\n\n## Real-Hardware\n\nprofanOS works on pc with legacy bios but not with uefi. However profanOS\ncan work on recent pc by activating bios compatibility.\n\nTo install profanOS on a USB key or an internal disk, it is possible to use\nthe installation script `tools/install.sh` or any other image flasher.\n\n\u003e [!WARNING]\n\u003e Installing an OS on a real machine can be risky and\n\u003e must be done with knowledge of the possible risks!\n\n### Install on USB key\n\n- Download ISO or build it in linux\n- Flash the ISO on the USB key with `dd` or any other image flasher\n- Activate the legacy bios in the bios settings (if not already done)\n- Boot on the USB key from the bios boot menu\n- select the graphical mode\n\n### Install on internal disk\n\nThis method is dangerous and will cause the complete erasure of your machine's disk.\nPlease make a backup of your data and be sure of what you are doing.\n\n- Activate the legacy bios in the bios settings (if not already done)\n- Boot on a live linux\n- Download ISO or build it in linux\n- Flash the ISO with `tools/install.sh` or any other image flasher\n\n```sh\n# replace sdX with the disk to flash\nsudo sh install.sh /dev/sdX profanOS.iso\n```\n\n- Reboot on the internal disk\n\n## About\n\n### Screenshots\n\n| ![halfix](https://elydre.github.io/img/profan/screen/halfix.png)     | ![yacc](https://elydre.github.io/img/profan/screen/yacc.png) |\n|----------------------------------------------------------------------|--------------------------------------------------------------|\n| ![windaube](https://elydre.github.io/img/profan/screen/windaube.png) | ![doom](https://elydre.github.io/img/profan/screen/doom.png) |\n\n1. *Linux running in halfix x86 emulator*\n2. *Configuring and compiling yacc from source*\n3. *Discontinued desktop environment for profanOS*\n4. *The doom port running in profanOS*\n\n### Authors \u0026 Contact\n\n- pf4 ([@elydre](https://github.com/elydre))\n- asqel ([@asqel](https://github.com/asqel))\n\nContact me on my discord [server](https://discord.gg/PFbymQ3d97) or in PM `@pf4`\n\n### Source \u0026 Acknowledgment\n\n- **[os tutorial](https://github.com/cfenollosa/os-tutorial) for the original tutorial**\n- [@Sarah](https://github.com/Sarenard) for all the help and ideas\n- [@copy](https://github.com/copy/v86) for the v86 online emulator and floppy build\n- [@spaskalev](https://github.com/spaskalev/buddy_alloc) for the buddy allocator\n- [osdev wiki](https://wiki.osdev.org/) for documentation made by the community\n- [ToaruOS](https://github.com/klange/toaruos) for the inspiration and the dynamic linking\n- [BleskOS](https://github.com/VendelinSlezak/BleskOS) for the Intel HDA driver\n- [mintsuki](https://codeberg.org/OSDev/freestnd-c-hdrs-0bsd) for freestanding headers\n\nA huge thank you to all the [contributors](https://github.com/elydre/profanOS/graphs/contributors)\nand all the people who took the time to look at this project!\n\n*be careful with our friend 55*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felydre%2Fprofanos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felydre%2Fprofanos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felydre%2Fprofanos/lists"}