From 754a1e98c58c612ba0651dcf38000ecba7bd3e51 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Wed, 30 May 2012 02:04:05 -0400 Subject: Add "id" attributes to headers in "dev/todo". --- diff --git a/dev/todo.html b/dev/todo.html index 949fcb7..c760f59 100755 --- a/dev/todo.html +++ b/dev/todo.html @@ -2,13 +2,13 @@

The following is an overview of development projects that need to be done before the operating system can be considered ready for production use.

-

Boot Sequencing

+

Boot Sequencing

Currently, service init scripts are provided by the monolithic initscripts binary package. These init scripts are executed in the lexicographic order of the symbolic links matching /etc/rc.d/S* that target them. The names of these symbolic links are currently hardcoded in the build makefile of the basefiles source package. This monolithic packaging and hardcoding of link names is a temporary and poor technical solution that doesn't scale with the number and selection of services that can be installed on a system. Init scripts should instead be provided by the packages that provide the relevant system services. The order in which init scripts are executed should be determined by dynamic boot sequencing based on inter-service dependency metadata.

This boot sequencing can be done when the system boots or after a new system service is installed. For reference, NetBSD uses a program called "rcorder" to determine a boot sequence at boot time. Many GNU/Linux distributions follow (to some degree) the Linux Standard Base (LSB) specification, which defines "Comment Conventions" for dependency metadata and a method for installing sequentially-named symbolic links. Conforming implementations perform boot sequencing at the time of service installation. Because boot sequencing at boot time can slow down system booting, it is better to perform boot sequencing at install time.

Thus, generally speaking, the solution to be adopted in this system is to make packages that provide system services also include the necessary init scripts (installed in /etc/init.d), to include inter-service dependency metadata in init scripts, and to use a tool at the time of service package installation to generate sequentially-named symoblic links in /etc/rc.d.

An obvious boot sequencing tool is "insserv" maintained by Werner Fink and used by Debian and openSUSE. However, this C program (in compliance with the LSB) assumes the use of runlevels. This operating system uses the init daemon of BusyBox, which doesn't support runlevels. Therefore, we'll need to either modify insserv to work without runlevels or write our own tool for installing symbolic links to init scripts.

Additionally, we need to decide how completely we'll conform, if at all, with the LSB in this area.

-

Multiarch

+

Multiarch

Multiarch refers to the ability to install and use packages built for non-native architectures. It is currently being documented and implemented in Debian and Ubuntu. Multiarch is useful for this distribution because it makes cross compiling easy (see "Package Cross Building Tool" and "Multiarch Cross Toolchain Packages" below).

Simply speaking, there are six aspects of a multiarch implementation: