{"id":13625870,"url":"https://github.com/oasislinux/oasis","last_synced_at":"2025-05-15T00:12:30.087Z","repository":{"id":41368138,"uuid":"60745639","full_name":"oasislinux/oasis","owner":"oasislinux","description":"a small statically-linked linux system","archived":false,"fork":false,"pushed_at":"2024-10-11T06:17:05.000Z","size":5136,"stargazers_count":2797,"open_issues_count":32,"forks_count":85,"subscribers_count":55,"default_branch":"master","last_synced_at":"2024-10-29T15:35:05.146Z","etag":null,"topics":["linux","musl"],"latest_commit_sha":null,"homepage":"","language":"Roff","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oasislinux.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}},"created_at":"2016-06-09T02:55:17.000Z","updated_at":"2024-10-29T08:49:17.000Z","dependencies_parsed_at":"2023-01-25T18:45:38.860Z","dependency_job_id":"a34808f1-bccb-4783-8cf8-bbe2c3197636","html_url":"https://github.com/oasislinux/oasis","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasislinux%2Foasis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasislinux%2Foasis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasislinux%2Foasis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oasislinux%2Foasis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oasislinux","download_url":"https://codeload.github.com/oasislinux/oasis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281393,"owners_count":21077423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["linux","musl"],"created_at":"2024-08-01T21:02:04.229Z","updated_at":"2025-04-10T19:28:20.825Z","avatar_url":"https://github.com/oasislinux.png","language":"Roff","readme":"# oasis\n\n[![builds.sr.ht status](https://builds.sr.ht/~mcf/oasis/commits/master/.build.yml.svg)](https://builds.sr.ht/~mcf/oasis/commits/master/.build.yml)\n\noasis is a small linux system.\n\nIt is probably quite a bit different from other Linux-based operating\nsystems you might be familiar with, and is closer to a BSD.\n\nThere are many features that distinguish it from other operating\nsystems:\n\n* Completely **statically linked**.\n\nAll software in the base system is linked statically, including the\ndisplay server ([velox]) and web browser ([netsurf]). Compared to\ndynamic linking, this is a simpler mechanism which eliminates\nproblems with upgrading libraries, and results in completely\nself-contained binaries that can easily be copied to other systems.\n\n[velox]: https://github.com/michaelforney/velox\n[netsurf]: https://www.netsurf-browser.org\n\n* **Fast builds** that are **100% reproducible**.\n\nAll packages are built with [samurai], using build manifests generated\nby [Lua scripts]. This involves considerable up-front packaging\ncost, but minimal maintenance cost, and offers numerous advantages,\nincluding near optimal build times, predictable and reproducible\nbuilds, reduced build-time dependencies, and incremental builds\neven across package boundaries.\n\n[samurai]: https://github.com/michaelforney/samurai\n[Lua scripts]: https://github.com/oasislinux/oasis/blob/master/pkg/nasm/gen.lua\n\n* **Minimal bootstrap dependencies**.\n\nAny POSIX system with git, lua, curl, a sha256 utility, standard\ncompression utilities, and an `x86_64-linux-musl` cross compiler\ncan be used to bootstrap oasis. This makes it trivial to cross-compile,\neven from non-Linux systems such as macOS or OpenBSD.\n\n* **BearSSL** is the system TLS and crypto library.\n\nBearSSL is incredibly small and well written, but is not widely\nadopted. Through the use of libcurl, which now has native BearSSL\nsupport, and [libtls-bearssl], an alternative implementation of\nlibtls based on BearSSL, oasis uses BearSSL throughout the system.\nOnly a [few optional packages] still require LibreSSL.\n\n[libtls-bearssl]: https://sr.ht/~mcf/libtls-bearssl\n[few optional packages]: https://github.com/oasislinux/oasis/issues/14\n\n* **No package manager**.\n\nInstead, you configure a set of [specifications] of what files from\nwhich packages to include on your system, and the build system\nwrites the resulting filesystem tree into a git repository. This\ncan then be merged into `/`, or pulled from another machine.\n\n[specifications]: https://github.com/oasislinux/oasis/blob/master/config.def.lua#L12-L15\n\n* Integrates well with **OS-agnostic package systems**.\n\nAlthough the aim is to provide a complete system, there is a lot\nof free software out there, a lot of which does not match up well\nto our goals. Rather than trying to build and maintain yet another\nrepository with thousands of packages, oasis works well with [pkgsrc]\nand [nix]. This makes it easy to extend your system with software\nyou might need, while keeping the base system small and focused.\n\n[pkgsrc]: https://github.com/oasislinux/oasis/wiki/pkgsrc\n[nix]: https://nixos.org/nix\n\n* Extremely **simple system configuration**.\n\nA guiding principle is that the `/etc` directory should be simple\nenough for system administrators to understand completely and\ncustomize appropriately. The most complex file in the default\nconfiguration is the system initialization script, [`/etc/rc.init`],\nat only 16 lines.\n\n[`/etc/rc.init`]: https://github.com/oasislinux/etc/blob/master/rc.init\n\n* Mostly **ISO C conformant**.\n\nA major goal of oasis is to build with [cproc], a C compiler which\nis much stricter about the ISO C standard than gcc or clang, and\norders of magnitude smaller. Although this is a [work-in-progress\neffort], all core packages, and most others, build successfully\nwith cproc.\n\n[cproc]: https://sr.ht/~mcf/cproc\n[work-in-progress effort]: https://github.com/oasislinux/oasis/issues/13\n\n## Principles\n\n* Software complexity should be measured by including all transitive\n  dependencies.\n* Executables should be linked statically.\n* Software components should allow for easy customization and/or\n  modification.\n* Package sources should be referenced through a URL or git submodule,\n  but not included directly.\n* `/etc` should be simple enough to be understood in its entirety.\n* Patches should be well organized, have good descriptions, and\n  should always apply cleanly.\n\n## Install\n\nAn install guide can be found on the [wiki].\n\nHowever, keep in mind that oasis is an ambitious project, and there\nis still a lot of work to do. Users should be comfortable building\ntheir own kernel and tinkering with their system when things go wrong.\nIf you do run into trouble, I'm always happy to help you out.\n\n[wiki]: https://github.com/michaelforney/oasis/wiki\n\n## QEMU\n\nIf you'd like to give oasis a try without installing it yourself,\nthere is a QEMU image available [here][qemu-image].\n\nInside the archive are the root filesystem, a Linux kernel, and a\nscript to launch qemu. There is also `README.md` with some information\nabout how to use it. In short, use `./run` to launch in graphical\nmode, and `./run -s` to launch in serial mode.\n\n[qemu-image]: https://s3.sr.ht/builds.sr.ht/artifacts/~mcf/1138649/ff314f9e1f24ce4f/oasis-qemu.tar.xz\n\n## Software\n\noasis uses smaller and simpler implementations of libraries and\ntools whenever possible:\n\n- musl instead of glibc\n- sbase instead of coreutils\n- ubase instead of util-linux\n- pigz instead of gzip\n- mandoc instead of man-db\n- bearssl instead of openssl\n- oksh instead of bash\n- sdhcp instead of dhclient or dhcpcd\n- vis instead of vim or emacs\n- byacc instead of bison\n- perp and sinit instead of sysvinit or systemd\n- netsurf instead of chromium or firefox\n- samurai instead of ninja\n- velox instead of Xorg\n- netbsd-curses instead of ncurses\n\nThese packages are grouped into logical [sets], and the full list\nis available in the [pkg] directory.\n\nIf your favorite software is missing, keep in mind that you can\nlikely still install it via pkgsrc or nix.\n\n[sets]: https://github.com/oasislinux/oasis/blob/master/sets.lua\n[pkg]: https://github.com/oasislinux/oasis/blob/master/pkg\n\n## Contact\n\nThere is a mailing list at\n[~mcf/oasis@lists.sr.ht](mailto:~mcf/oasis@lists.sr.ht), and an IRC\nchannel at #oasis on [libera.chat](ircs://irc.libera.chat:6697).\nFeel free to use them for questions, patches, or general discussion.\n","funding_links":[],"categories":["Roff","Linux","linux","Active"],"sub_categories":["Distros"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foasislinux%2Foasis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foasislinux%2Foasis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foasislinux%2Foasis/lists"}