hostprep: make xen actually work
[ruckus.git] / README
1 -*- mode: org; mode: flyspell -*-
2
3 * Intro
4
5 Source Ruckus Linux - an embeddable, robust, free, Linux meta-distro
6
7 What's a meta distro?  It's a collection of build tools, source packages,
8 scripts, and documentation all ready to be built into a Linux distro.
9
10 Source Ruckus Linux can be used out-of-the-box, but it's real strength lies
11 in being used as a base to derive your OWN distro from.  In other words, it
12 exists purely to be forked, although it can be used as-is.
13
14 The build scripts for bootstrapping, cross-compiling, etc, are based on those
15 documented by the Cross Linux From Scratch (CLFS) project, but the projects
16 should deviate pretty wildly from there.  Super special thanks to all the
17 LFS, BLFS, and CLFS contributors for making this possible!  See the following
18 pages for more info on the Linux From Scratch projects.
19
20 LFS - http://www.linuxfromscratch.org/
21 BLFS - http://www.linuxfromscratch.org/blfs/
22 CLFS - http://trac.cross-lfs.org/
23
24
25 * Goals
26
27 ** 32bit, 64bit, or 64bit multilib build
28
29 At build time, the user should be able to select a specific architecture to
30 cross-compile the Linux distro for (x86, x86_64 (pure64 or multilib), sparc,
31 ppc, etc).  Obviously, there are some limitations (e.g., pure64 can't use grub
32 v1, etc) and if the target system isn't bootable on the build hardware (ie,
33 building sparc on an x86 machine), the second half of the build will have to
34 be done elsewhere.
35
36 configure opts
37
38   --with-arch={i686, x86_64, etc}
39
40   --disable-multilib
41
42
43 The --disable-multilib flag should disable any multilib stuff in all the build
44 scripts and notes files (lib64, 2nd compilation, etc).
45
46 If building for 32bit, --disable-multilib will automatically be set.
47
48 Using --with-arch=x86_64 with --disable-multilib should result in a pure64
49 system (64bit libs in /lib).
50
51 NOTE: Although the CLFS books officially have instructions for x86, x86_64,
52       PowerPC, MIPS, and Sparc and have developmental ARM support, Source
53       Ruckus will be limited to x86 and x86_64 (at least for now).  The reason
54       is simple: I only have x86 and x86_64 hardware.  There's nothing to keep
55       YOU from taking this and the CLFS books and your own funky hardware and
56       hacking up the build scripts.  ;-)
57
58
59 ** Build missing host dependencies
60
61 Unlike CLFS, we're going to not only detect missing host dependencies via
62 autoconf, but we'll also build/install them so you don't have to wory about
63 it.  Why not, right?  We've got the whole opensource universe cloned in here
64 already.  This is handled by the bootstrap-early build stage.
65
66
67 ** Support for building offline
68
69 After cloning, initializing and updating submodules, and running the
70 get_sources script, you should be able to unplug your ethernet cable (or
71 turn off your WIFI), bring your laptop to the beach, and build the whole
72 darned thing w/out any package sneaking out to the internet to download
73 stuff.  I can't be the only person that this bothers... can I?  How am I
74 supposed to KNOW w/out a doubt what's in my OS if half the packages just
75 magically download extra things while they're building?  Hog wash, I say!
76 This may be a PITB to implement, but I'm doing it because I believe it to be
77 important.
78
79
80 ** Hard-realtime Scheduling (perhaps?)
81
82 Using CONFIG_PREEMPT gives us soft-realtime scheduling.  Hard-realtime
83 scheduling could be accomplished by using Ingo Molnar's CONFIG_PREEMPT_RT
84 patches, or by using a layered microkernel approach.  PREEMPT_RT is probably
85 less likely to break things, although it might not play well with Xen or KVM
86 virtual machines.  We'll see.
87
88 This will probably have to be added as a secondary kernel option (i.e.,
89 kernel-rt package in addition to the standard kernel package).
90
91 NOTE: This is getting pretty unlikely.
92
93
94 ** Nicely integrated Xen4 virtualization
95
96 The default kernel setup will be for a Xen pvops dom0 using the latest Xen4
97 hypervisor and management tools.
98
99 Source Ruckus's use of Xen will NOT involve using 3rd party management tools
100 (e.g., libvirt), but will instead concentrate on only the mainline xen
101 tools (e.g, xm, libxenlight, xl).
102
103
104 ** Tiered ROOTFS Images
105
106 The idea here is provide a hierarchy of filesystem images to install from,
107 with each image being applied on top of it's parent images.  The result of
108 this will be a nice, tiered, system suited for embedded, server, or
109 development environments.
110
111 Using tiered fs images instead of package-by-package installations will
112 speed up installation considerably (no dependency calculations).
113 Package-by-package changes can be handled by modifying the build system and
114 rolling your own distro!  Fork me!
115
116 *** tiny
117 Tiny, be small above all else.  No X server or libs, EGLIBC, busybox, only
118 what's absolutely necessary.  I thought about using uclibc, but that would
119 break binary compatibility with the rest of the images (ie, we couldn't use
120 the tiny image as a base to build the base and extra images off of).
121
122 *** base
123 Still really small, but now add in basic X, libs, tools, daemons, etc, need.
124
125 *** server
126 Adds all kinds of extra server functionality to the base system (apache,
127 mysql, bugzilla, bind, dhcpd, samba, etc).
128
129 *** workstation
130 This should add everything needed for a tidy workstation installation (e.g.,
131 LXDE, fluxbox, firefox, thunderbird, libreoffice, latex, maybe some small
132 multimedia tools).
133
134 NOTE: Leaning towards sticking EFL, and Enlightenment in here.
135
136 *** extra
137 Workstation, development and/or play environment (gnome, multimedia, debug
138 symbols, extra deb libs and tools, etc).
139
140 Everything else.  This is the complete dev system with everything and the
141 kitchen sink thrown in.
142
143 Big Fat Desktop Environments (GNOME, KDE), java, seamonkey, additional
144 multimedia stuff.
145
146 ALL debug symbols added back in!
147
148
149 * Version 3.0? But I've never heard of it...
150
151 Yeah, my bad.  Source Ruckus Linux has been my baby since back in 2000 when I
152 first started dabbling with Linux From Scratch.  I had a very low profile
153 1.0.0 release at college (Spring of 2002?), but once I got out and got a job,
154 development ceased.  A few years later, I started work on 2.0 (complete w/ a
155 full rewrite of SRP, my package manager)... but it never got off the ground.
156 Life, work, and other fun things got in the way.
157
158 This latest incarnation, started taking shape in my imagination back in 2010,
159 eventually resulting in this git repo being started.  Development has been
160 very on-and-off (same for SRP and RuckusRD), but it's come a long way since
161 then.  :-)