1
0
mirror of git://git.2f30.org/morpheus.git synced 2024-06-16 08:18:35 +00:00
morpheus/README
2014-05-23 15:02:25 +01:00

149 lines
3.2 KiB
Plaintext

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.
Setting up the environment:
export mkbuild=$(pwd)/mkbuild
export configmk=$(pwd)/config.mk
export PATH=/path/to/musl/toolchain/bin:$PATH
Clone the git submodules, either via git commands or:
mk init
To build everything (though this isn't recommended):
mk
To build specific ports:
mk TARG="port1 port2 ..."
or:
cd ports/port1; mk
To force build ports:
mk -a
To clean the build system's cache:
mk clean
To clean source dirs completely:
mk distclean
To fetch all ports without building anything:
mk fetch
To generate a package tarball:
mk TARG="port1 port2 ..." package
You can then install the package using installpkg(1) from
http://git.2f30.org/pkgtools.
To install a port to the rootfs:
mk TARG="port1 port2 ..." ROOT=$(pwd)/root install
Note that this however will *not* create the /var/log/packages
entries.
For a bootable system you need at least the following packages:
busybox
e2fsprogs
extlinux
file
fs
hbase
linux
mksh
sbase
sdhcp
sinit
smdev
ubase
There are precompiled versions at http://morpheus.2f30.org/0.0 for the
x86_64 architecture.
We suggest using a stripped-down CRUX rootfs for building ports. There
is one prepackaged rootfs at http://morpheus.2f30.org/0.0/emul-x86_64.tgz.
Rebuilding the kernel
---------------------
There is a default config for the kernel in ports/linux. 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 the relevant config in ports/linux 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 ROOT=$(pwd)/root bootable # set ROOT to point to your rootfs
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 ro
Otherwise modify ports/extlinux/extlinux.conf and rebuild the extlinux
port or directly modify $ROOT/boot/extlinux.conf.
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.
Debugging
---------
In some cases you may want to set nprocs to 1 in order to get sane
build output. You can then use something like the following:
mk 2>&1 | tee -a output.log
Props
-----
I'd like to thank the people behind the sabotage-linux project.
Their work has been really helpful to us.
Contact
-------
You can find us on #morpheus at irc.oftc.net.
Enjoy!