For a while now, I've been working on putting together a linux system based on suckless core tools, as well as various other projects. There are still a number of things left to do, but I'm now at a point where it is quite usable for me, and maybe for others as well.
https://github.com/michaelforney/oasis/wiki https://github.com/michaelforney/oasis/releases # stali similarities - Uses musl libc and suckless core tools. - Everything is statically linked. - Everything is built from a single repository. - Root filesystem is managed with git. - Package build systems are ignored in favor of uniform custom build scripts. # stali differences - Package sources are not checked into the source repository, but fetched on demand depending on which packages you have selected in config.rc[0]. - Though stali has given up on being a general purpose desktop system, I have not, so oasis includes my wayland display server (velox), wayland ports of dmenu and st, and a wayland implementation of the framebuffer backend for the netsurf browser. - Only x86_64 is supported at the moment. - Self-bootstrappable. Nearly all packages are buildable with only the core packages[1] and a toolchain targeting musl (some need special handling to first build some tool and add to PATH). A new toolchain can be built with the above and GNU make (using musl-cross-make). A new kernel can be built with the above and python (after applying a couple patches[2]). - Instead of makefiles, oasis uses rc scripts to generate ninja build files (maybe in the future I will work on a ninja-compatible build tool in C to avoid the C++ dependency). - Binaries are not distributed, users are expected to build their own (though, you can do so on a separate system and pull from it). # Trying it out ## Real hardware I wrote up some installation instructions[3] on the github wiki. I've tested the build and install with the xubuntu 16.10 live environment[4]. If you try this and run into any problems, please let me know so that I can fix/clarify things. ## qemu I built a qemu image[5] containing all the core, extra, and desktop packages as well as a toolchain. It is probably the best way to play around with oasis. The installed kernel is pretty minimal, and only has support for virtio drivers. The root password is `oasis`. qemu-system-x86_64 \ -enable-kvm -cpu host -m 2048 \ -device virtio-balloon \ -device virtio-keyboard \ -device virtio-tablet \ -device virtio-net,netdev=net \ -device virtio-scsi \ -device virtio-serial \ -device virtio-vga \ -chardev stdio,id=cons \ -mon chardev=cons \ -drive if=none,id=hd,file=oasis-20170211.qcow2 \ -device scsi-hd,drive=hd \ -netdev user,id=net To enable ssh login, `ssh-keygen -A && perpctl A sshd` (you will probably want to set up a bridge and change `user` to `bridge` in the netdev option to access from the host system). To start velox, `swc-launch velox`. To run without graphics mode, add `mux=on,signal=off` to the chardev option, and add `-device virtconsole,chardev=cons -display none`. To reboot/shutdown cleanly, `kill -s INT 1`/`kill -s USR1 1` respectively. ## chroot I also uploaded a tar archive[6] created with `git archive` on the root repository. It might be useful for poking around with chroot. Note that the tar does not contain any empty directories and some files are missing special permissions. After extracting, run `./libexec/oasis/applyperms -d . && ./libexec/oasis/applyperms -d etc` to fix this. Also, be aware that there is no common parent directory, so make sure to extract somewhere you can easily clean up (such as a new directory). I've added various bits of documentation to the github wiki[7] if you want to read more (or clone https://github.com/michaelforney/oasis.wiki). [0] https://github.com/michaelforney/oasis/blob/master/config.def.rc [1] https://github.com/michaelforney/oasis/blob/master/sets.rc#L1 [2] https://github.com/torvalds/linux/compare/master...michaelforney:oasis [3] https://github.com/michaelforney/oasis/wiki/Install [4] http://cdimages.ubuntu.com/xubuntu/releases/16.10/release/xubuntu-16.10-desktop-amd64.iso [5] https://github.com/michaelforney/oasis/releases/download/20170211/oasis-20170211.qcow2 [6] https://github.com/michaelforney/oasis/releases/download/20170211/oasis-20170211.tar.xz [7] https://github.com/michaelforney/oasis/wiki