How is the deepOfix source code organised?
This article explains in detail how the source code of the deepOfix is organised in the repository.
Overview of the deepOfix source code
The base directory of the deepOfix development trunk contains the following content:
bin install_cd LICENSE packages sources
- The bin directory contains scripts that are used to perform maintenance tasks on the deepOfix install CD source code.
- The install_cd directory is the one that is contained on the install CD image. This directory contains all that is required on the install CD to install deepOfix.
- The LICENSE file outlines the licensing terms of the deepOfix install cd source code.
- The packages directory contains the source code, build scripts etc. for the various binary packages that are custom-built for the deepOfix operating system.
- The sources directory contains the source code for all packages that are shipped as a part of the deepOfix install CD and operating system.
Further sections discuss each of these directories in greater detail.
The bin directory
Currently the bin directory contains just two simple scripts:
- The mkcd script which can be used to create a new deepOfix install CD ISO image from the source code. You could then write this new image to a CD and install it. This script simply takes the contents of the install_cd directory along with the requisite boot options to generate the new CD image. To include new content to the install CD, you must add the content to the install_cd directory.
- The update-packages script generates a new PACKAGES file. This PACKAGES file is required to make a valid Debian package repository on the install CD.
These scripts were designed to automate and simplify manual and repetitive tasks related to the developing, extending and testing the deepOfix install CD.
The install_cd directory
This is one of the most important directories of the source code repository. It contains the layout of the on-disk filesystem found on the deepOfix install CD.
Here is a tree of the important files and directories in this directory:
install_cd/ |`- bin/ | |`- eject | |`- mdadm | `- sfdisk | |`- COPYING | |`- deepofix/ | |`- deepofix-packages/ | |`- dists/ | |`- installer/ | | |`- deepofix-installer-first-stage | | |`- deepofix-installer-second-stage | | |`- first-stage/ | | |`- second-stage/ | | `- zoneinfo | | | |`- kernel/ | `- packages/ | |`- isolinux/ | |`- LICENSE | `- tools/
The install_cd/bin/ directory
This directory is meant to contain simple tools that will be used from the install CD during the process of installing deepOfix. All tools that exist in this directory are compiled statically to ensure that they have no runtime dependencies on shared object (.so) libraries.
The install_cd/deepofix/ directory
This directory is meant to contain the bulk of deepOfix specific install CD source code.
- install_cd/deepofix/deepofix-packages/ contains the compiled binary version of deepOfix specific packages in the Debian .deb format.
- install_cd/deepofix/dists/: This directory is the base of the deepOfix Debian packaged distribution. It contains a directory layout (and corresponding config and data files) that can be used by the Debian apt-get package management system to install packages and their automatically computed dependencies.
- install_cd/deepofix/installer/ contains the complete source code of the deepOfix installer - both the first and second stage.
- First stage installer code: install_cd/deepofix/installer/first-stage/
- Second stage installer code: install_cd/deepofix/installer/second-stage/
The deepOfix installer is written in simple Bash shell syntax. On the deepOfix install CD, however, the ash shell is used; this is a simpler shell with a syntax similar to that of Bash.
- The install_cd/deepofix/kernel/ directory contains different versions of the Linux kernel compiled for different platforms and CPU architectures.
- The install_cd/deepofix/packages/ directory contains all the standard, unmodified Debian packages that are installed as a part of the deepOfix operating system.
The install_cd/isolinux/ directory
This directory contains all data required to boot the deepOfix installation CD. It includes the following important files:
- The Linux kernel - install_cd/isolinux/bzImage
- An initrd (initial ram disk) with a minimal root file system to start the deepOfix installer - install_cd/isolinux/initrd
- The main ISOLINUX configuration file - install_cd/isolinux/isolinux.cfg
- The pre-boot image that is displayed just after the CD has booted up - install_cd/isolinux/splash.lss
The packages directory
This directory contains the source code all deepOfix specific .deb packages. All these packages are generated using the Easy Package Manager (epm) tool.
- altermime - The deepofix-altermime package that plugs into the email scanning system to optionally attach disclaimers to all outgoing email messages.
- deepofix-mta - This is a virtual Debian package that provides the mail-transfer-agent package to the deepOfix system. This eliminates the need to have any other MTA such as exim or postfix installed on deepOfix.
- djbdns - This is the source for the deepofix-djbdns package used to compile and install dnscache, a caching, forward-only DNS server and tinydns, a DNS server, along with other DNS related utilities.
- easypush-webserver - This package contains the source for the Xitami Web Server package for the EasyPush Server Manager.
- openldap - This is the source for the deepofix-openldap package that installs the OpenLDAP directory server. OpenLDAP is used for all user and group account management functions as well as for serving public addressbooks.
- qmail-ldap - This is the source for the deepofix-qmail-ldap package which compiles and installs the the qmail-ldap mail server from source.
- qmail-scanner - This is the source for the deepofix-qmail-scanner package which installs the Qmail Scanner mail scanning engine for the qmail MTA.
- qmail-tools is a small collection of qmail-related tools that help in mail server administration.
- serialmail is the source of the deepofix-serialmail package that is used to relay emails to users who don't exist on deepOfix but have accounts on a remote SMTP server.
- services is the source for the deepofix-services package that installs, configures and activates various services that are run in deepOfix using the runit service supervision and management system.
- squirrelmail - This contains the source code for the deepofix-webmail package that installs the Squirrelmail package to let users access their email from anywhere on the network.
- The system-config directory stores the source code for the deepofix-system-config package. This package is responsible for a variety of system configuration and customisation
- uschedule contains the source for the deepofix-uschedule package which is used for scheduling inside the deepOfix operating system.
