README (3588B)
1 morpheus - a statically linked musl based Linux distro 2 ====================================================== 3 4 Building 5 -------- 6 7 *** HIGHLY EXPERIMENTAL SOFTWARE - READ THE CODE FIRST! *** 8 9 To build morpheus you currently need an x86_64/x86 host. You will 10 need to have mk(1) from 9base or plan9port. 11 12 Please review config.mk prior to building and adjust any parameters. 13 14 Setting up the environment: 15 16 export mkbuild=$(pwd)/mkbuild 17 export configmk=$(pwd)/config.mk 18 export PATH=/path/to/musl/toolchain/bin:$PATH 19 20 Clone the git submodules, either via git commands or: 21 22 mk init 23 24 To build everything (though this isn't recommended): 25 26 mk 27 28 To build specific ports: 29 30 mk TARG="port1 port2 ..." 31 32 or: 33 34 cd ports/port1; mk 35 36 To force build ports: 37 38 mk -a 39 40 To clean the build system's cache: 41 42 mk clean 43 44 To clean source dirs completely: 45 46 mk distclean 47 48 To fetch all ports without building anything: 49 50 mk fetch 51 52 To generate a package tarball: 53 54 mk TARG="port1 port2 ..." package 55 56 You can then install the package using installpkg(1) from 57 http://git.2f30.org/pkgtools. 58 59 To install a port to the rootfs: 60 61 mk TARG="port1 port2 ..." ROOT=$(pwd)/root install 62 63 Note that this however will *not* create the /var/log/packages 64 entries. 65 66 For a bootable system you need at least the following packages: 67 68 busybox#1.22.1.pkg.tgz 69 curl#7.36.0.pkg.tgz 70 e2fsprogs#1.42.9.pkg.tgz 71 extlinux#6.02.pkg.tgz 72 file#5.17.pkg.tgz 73 fs.pkg.tgz 74 hbase.pkg.tgz 75 ii.pkg.tgz 76 libarchive#3.1.2.pkg.tgz 77 linux#3.10.32.pkg.tgz 78 mksh#R47.pkg.tgz 79 pkgtools.pkg.tgz 80 sbase.pkg.tgz 81 sdhcp.pkg.tgz 82 sinit.pkg.tgz 83 smdev.pkg.tgz 84 tmux#1.9a.pkg.tgz 85 ubase.pkg.tgz 86 vim#7.4.pkg.tgz 87 88 There are precompiled versions at http://morpheus.2f30.org/0.0 for the 89 x86_64 architecture. Use the misc/install-morpheus script to 90 bootstrap your system. 91 92 We suggest using a stripped-down CRUX rootfs for building ports. 93 94 http://morpheus.2f30.org/0.0/packages/x86_64/emul.pkg.tgz. 95 96 Rebuilding the kernel 97 --------------------- 98 99 There is a default config for the kernel in ports/linux. The default 100 config is copied over .config in the kernel source directory every 101 time you do a build via mk(1). You can adjust your local .config and 102 copy it over the relevant config in ports/linux or you can just 103 manually compile the kernel and copy System.map and bzImage to 104 $ROOT/boot. 105 106 Installing 107 ---------- 108 109 There is currently no installer. There is a script that creates a 2GB 110 image file that is suitable to dd to a usb stick. 111 112 To create a bootable image: 113 114 sudo modprobe -r loop 115 sudo modprobe loop max_part=15 # to be done only once 116 sudo mk ROOT=$(pwd)/root bootable # set ROOT to point to your rootfs 117 118 Make sure to change the kernel command line to point it to your root 119 device. You can do this at the boot prompt: 120 121 bzImage root=/dev/sd[X]1 rootwait ro 122 123 Otherwise modify ports/extlinux/extlinux.conf and rebuild the extlinux 124 port or directly modify $ROOT/boot/extlinux.conf. 125 126 You will also want to modify the fstab file. 127 128 Testing 129 ------- 130 131 To experiment with the x86_64 image in qemu: 132 133 qemu-system-x86_64 -hda morpheus-x86_64-0.0.img -enable-kvm -vga cirrus 134 135 Login with root and an empty password. 136 137 Debugging 138 --------- 139 140 In some cases you may want to set nprocs to 1 in order to get sane 141 build output. You can then use something like the following: 142 143 mk 2>&1 | tee -a output.log 144 145 Props 146 ----- 147 148 I'd like to thank the people behind the sabotage-linux project. 149 Their work has been really helpful to us. 150 151 Contact 152 ------- 153 154 You can find us on #morpheus at irc.oftc.net 155 156 Enjoy!