Go to file
Daniel Bainton 817a34ef0b Move config.mk to config.def.mk
When using mk, cp config.def.mk to config.mk if it doesn't exist.

Easier to pull changes to the tree, when config.mk doesn't all the time
complain about changes.
2014-03-10 13:52:48 +00:00
misc Redo misc/run-chroot a bit (also mount /sys) 2014-03-10 13:48:27 +02:00
pkgs Add install(1) 2014-03-10 13:53:33 +02:00
stuff Simplify fetch-pkg git check 2014-03-09 20:47:23 +00:00
.gitignore Use .cache instead of .state 2014-03-01 02:07:51 +02:00
LICENSE Add Hiltjo Posthuma to LICENSE 2014-03-04 16:26:45 +00:00
README Update README 2014-03-07 11:07:07 +00:00
TODO Update TODO 2014-03-09 14:38:26 +02:00
config.def.mk Move config.mk to config.def.mk 2014-03-10 13:52:48 +00:00
mkfile Move config.mk to config.def.mk 2014-03-10 13:52:48 +00:00

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!