morpheus - a statically linked musl based Linux distro ====================================================== Building -------- *** HIGHLY EXPERIMENTAL SOFTWARE - READ THE CODE FIRST! *** To build morpheus you currently need an x86_64/x86 host. You will need to have mk(1) from 9base or plan9port. Please review config.mk prior to building and adjust any parameters. To build everything: mk world To build specific packages: mk pkg1 pkg2 ... To force build packages and all their dependencies: mk -a pkg1 pkg2 ... To clean the build system's cache: mk clean To clean everything including the downloaded files and the rootfs: mk clean-world To fetch all packages without building anything: mk fetch-world Rebuilding the kernel --------------------- There is a default config for the kernel in stuff/kernel-config-$arch. The default config is copied over .config in the kernel source directory every time you do a build via mk(1). You can adjust your local .config and copy it over stuff/kernel-config-$arch or you can just manually compile the kernel and copy System.map and bzImage to $root/boot. Installing ---------- There is currently no installer. There is a script that creates a 2GB image file that is suitable to dd to a usb stick. To create a bootable image: sudo modprobe -r loop sudo modprobe loop max_part=15 # to be done only once sudo mk bootable # this invokes stuff/create-bootable Make sure to change the kernel command line to point it to your root device. You can do this at the boot prompt: bzImage root=/dev/sd[X]1 rootwait init=/init ro Otherwise modify stuff/extlinux.conf and rebuild the extlinux package. You will also want to modify the fstab file. Testing ------- To experiment with the x86_64 image in qemu: qemu-system-x86_64 -hda morpheus-x86_64-0.0.img -enable-kvm -vga cirrus Login with root and an empty password. To obtain binary images go to http://dl.2f30.org/morpheus-img/ Debugging --------- In some cases you may want to set NPROC to 1 in order to get sane build output. You may also have to set nprocs to 1. You can then use something like the following: mk world 2>&1 | tee -a output.log or similarly if you are trying to build an individual package. Contact ------- You can find us on #morpheus at irc.oftc.net. Enjoy!