MorphixIdeasManifesto

From MorphixWiki

Jump to: navigation, search

monnoorl This was the document that formed the outline for building Morphix. I wrote it begin January 2003, the first version came out a few weeks later. Anyway, this should explain most of the concepts and structure in a more in-depth manner. If you want a quick overview, check out WtfIsMorphix instead

(copied from my main drupal page)


Morphix, easy-to-make, easy-to-adapt, easy-to-use

Purpose: To build a modular system for creating custom-built distributions.

Why and What?

Kernel+Bootup+Configuration should be made separate from the user-land applications (console, X, apps etc).

Splitting Base from Main gives a greatly increased flexibility. Base is a standard distro, and should work for nearly every configuration. It handles booting the kernel, finding all hardware (sound, network, USB etc), saving the configuration and loading of a MainModule.

The MainModule is the filesystem that the user interacts with, and a user should be able to choose between a wide range of them depending on the purpose of the distribution. The MainModule depends on what the user wants his computer to do

Similarly, a MiniModule gives the user the possibility to tweak his distribution for (par example) the local network, or the possibility to add a special firewall or app to the MainModule when it doesnt suffice. The MiniModule gives increased flexibility, without having to make a new MainModule

Morphix Base:

Purpose: A distro that boots, detects and loads modules.

Overview: The people working on Base have very little to think about when it comes to user-land applications. It should be small (30mb?), fast to boot, easy to run, and with the possibility to install to harddisk (knx-install). Package-management is also available (apt/aptitude), as is kudzu. This is what makes Knoppix so great: LiveCD and hardware detection.

When it detects more than one MainModule, it gives a choice which to load. When it doesn't find a module, it asks for CD, or a NFS or SMB location to find a MainModule to load.

Steps: - lilo/grub bootscreen (?) - Boot kernel - Check any existing configuration - Detect configuration if not available - Check existance of MainModules (on CD, maybe HDD?) - If only one: load MainModule - If more than one: let user choose MainModule (framebuffer?) - If none: let user insert another CD, or choose SMB/NFS destination - If more than one or none at all, have option to exit to shell - Load MainModule

Stats: - Size must be less than 40 mb (compressed, uncompressed +/- 80/90) - Time until module loading: from CD under 20 seconds, from HDD, AFAP - Structure will be a CD track, to be burned with multisession, It's a bare-boned Knoppix, not much more, certainly not less.

The CD will be plain, like Knoppix now: kernel + root image. Additional directories will be empty, allowing the adding of Modules

Morphix MainModules:

Purpose: Customized to give the user within '90%' of what he wants to do.

Overview: On the other hand, a MainModule has very little to do with Base. It has it's own bootscript, gets the detected configuration from Base and loads it's own applications. These can be a whole lot larger than Base. What the MainModule does is all up to the maker of the module, some possibilities: X + lightweight GUI (like KnopNL), Server-based applications with simple ncurses UI, X Client with XServer network detection, etc, etc, etc...

Possibilities: 1) Chrooting to MainModule filesystem (most probable) 2) Mounting MainModule as a /usr filesystem (problems with /etc) 3) Merging MainModule with BaseModule (only possible with hdd install, not very workable). 4) ???

Steps (for pos. 1): - chroot to MainModule: - Take care of /proc, /dev etc - Maybe use /bin and /sbin of BaseModule? - Copy/link detected configuration files (needed for X etc) - Start Module-dependant bootscript - Somewhere along the line, the script should detect for MiniModules on the CD. MiniModules must be made for a specific MainModule. What to do with more than one MiniModule? choose or load all? there could be a dud-MiniModule to load nothing, otherwise you could have the MainModule load a module from cd or network...

Stats: - Size can be as large as the maker wants, keep in mind that there is about 600 mb left on a CD. There should be some form of a minimum MainModule, that makers can adapt to their liking, would be about 5mb? - Time for loading is all up to the maker (Morphix is about freedom to make your own distribution, after all...). I only like ones that are loaded within 5 minutes ;) - Structure would be a root-filesystem with an additional bootscript MainModules will be placed on the CD in the /mainmod dir, and exist as a compressed image.

Morphix MiniModule:

Purpose: To tweak an existing MainModule to the liking of an individual or a group of people.

Overview: MiniModules will be created to fill the MainModule with apps and config's of the user's liking. You may see these as separate .deb packages, adding applications to a live CD and overriding Base- and MainModule configurations. You could have MiniModules for different firewalls, for special-purpose apps (a game, maybe?) or dependant on a particular network environment

Possibilities: 1) Throw apps in /usr/local (as a mountpoint). Link configs in the modules /etc to the configs in the real /etc. 2) Installing modules would be like installing a .deb package, in fact, these would be used, just as well, to start with.

Steps: - Check if the MiniModule is made for the MainModule that loads it, MiniModules could be independant from the version of a MainModule. - Mount the compressed module in /usr/local - Adapt or link configuration files in /etc - Start a mini-script if necessary

Stats: - Size will depend on the size of the MainModule. These can exceed the CD size, but naturally wont be loadable on the same CD as Base+Main. - Time that would take to load a module must be under a few seconds. merging multiple modules will probably take a lot of time, and should only be considered when installing to hdd - Structure would be a /bin, /share, /etc and /lib dir. Maybe it would be easier to use the deb-layout, MiniModules is what I am least certain of though...

Personal tools