UTX's build own GNU-Linux


This page is outdated and contains invalid information. Please go to OSBuilder.

Česká verze

Build own GNU-Linux! This is the request for all of them, who wants to go inside of GNU-Linux and wants to have all under control.

This project contains lots of useful tools, patches etc., using this you can build complete GNU-Linuxu environment from source codes.

Build own GNU-Linux doesn't mean save time (at least first time) not money, but on the other side you can customize anything for own system and requirements - e. g. current ix86 distributions are propared for i486 and better, but we can compile i686 only code. We can also enable special options, libraries, functions etc.

Currently is documentation incomplete, explicitly configuration files are widely copied only and inconsistent.

Project is and forever will be unfinished, because any new version of anything can change situation.

News

There is available prerelease build-0.0.tar.gz and build-data-20000517.tar.gz.

There is new pkgshell, package compiler, offering commands, currently without docs, alpha version.

There is new autoadm providing automatic administration of some files.

Construction rules

Principles

Basic principle is: Build complete system from source codes. System is optimized to own requirements, system configuration, processor etc. Even more we can learn much about construction inside and connections.

My wish was to build GNU-Linux on latest base source codes (linux-2.3, GNU libc-2.1.1, egcs-1.1.2, forced multithreading). This causes some troubles during compilation. Some of the are sent to authors, other are present as patches.

Next rule is forcing of dynamic libraries rather than static everywhere, where is reason for it. This causes few problems during autoconfiguration (see lower). Dynamic libraries are slower, but they saves memory and disk space, because they can be shared between applications. This is explicitly good for GUIs and for specialised, rarely called libraries for special functions.

Any system must make consistency of paths for particular programs, There is more ways: Config sources, config files, and symlinks (used in this order).

Prefixes

Here is place for user. Good choice makes system more transparent and makes backup easier.
The goal is:
<root> (empty prefix) will contain files for system startup, basic communication and backup unpacking.
/usr will be main prefix for most packages.
/usr/X11R6 will be prefix of packages requiring X.
/usr/local will be prefix of concrete computer. During work it shadows files from other prefixes.
/usr/{package} will be prefix of large program packages (gtk, gnome, netpbm...).
/usr/games will be prefix of games (nearly empty ;-)

Files layout

Next question is file layout. Here I respect GNU conventions. Some of them are without prefix (for transparency reasons). If program installs many files, it is good there, where prefixes are not used, to do a separate directory or force files to start of package name (naturally except /tmp). System is solved as single platform, but small changes can cause file shareability between platforms.
The goal is:
/etc (no prefix) will contain config files and will not be changed by programs
bin will contain ordinary user's executables
sbin will contain superuser's executables
man will contain manual pages
info will contain .info pages
lib will contain libraries
libexec will contain special executables
/usr/doc will contain docs
include will contain include files for compiler
share will not changed except installation
/var (no prefix) will be used for permanent storage of variable data
/usr/src (no prefix) will contain source files
/tmp (no prefix) will be used for temporary storage of data

Sources

Sources coming from Internet. Main archives are: All of the I have at home on HD. If I get more requests for data, I will think about CD writer.

GNU configure

Many programs uses this package for system config. This is very flexible, but some system parameters can be detected incorrectly. So watch carefully messages from it. After some timewe can easy detectm if something is not correct (standard function or library not found etc.). Then we need some effort to fing the trouble. It is most often:

Disk space

Sources requires many space on disk. Mostly you can delete it after succesfull install. The only exception is kernel source (you need at least include), and glibc (ony Zdrojové soubory zaujímají mnoho místa na disku. Většinou je po úspěšné kompilaci můžete smazat. Jedinou výjimkou jsou zdrojové kódy jádra - zde je nutné si uschovat z nich alespoň include, a glibc (only if you want debug also in it).

It is an advantage, if it is possible, to compile in separate directory. After install you can delete temporary files, but we can look inside sources and trace.

Next save-space is compression. For info (after setup in site-start) and man (with changed makewhatis) files, source sodes is good slower but powerful bzip2; účinný bzip2, for fonts or run-time decompressed files is good less powerfull but faster gzip. If you have enough space on disk, you need no decompression of man and info files.

For largest projects (XFree86, GNU libc) count at least 200MB of free space to compile.

Cross dependencies avoiding

Coming soon...

Basic system

This list do not want to be complete.

Basic packages for system self re-generation (self recompilation):
egcs (gcc)
binutils
any Bourne shell compatible program (bash)
termcap or ncurses (for more, less)
make
fetish (fileutils, textutils, sh-utils)
sed
diffutils a patch (cmp is nearly required, others recommended)

Packages required (or highly recommended) for system startup:
sysvinit
update
ldconfig (standalone or from ld.so)
util-linux
e2fsprogs
modutils (if you use any modules)
psmisc, procps (psmisc required for system shutdown, others for statistics)

Packages required (or highly recommended) for basic administration:
inetutils and net-tools (if you want network support)
gzip or bzip2 (if you want compression)
tar (if you want unpack archives)
less (replacement for more)
any editor (e. g. vi clone)


Enhanced developing system, required for some packages, X, etc.:
m4
automake, autoconf, libtool
bison
lex
findutils
texinfo (for docs formatting)
perl (not required for nearly any instalation, but many scripts uses it)
tcl/tk (not required for nearly any instalation, but many scripts uses it, cross dependency while building X).


Basic extensions of user system:
readline
zlib
emacs

Packages for hardware setup:
scanpci
isapnptools
hdparm
scsifmt
mtools
setserial

To do

Not correct terminfo and termcap (colors, keys, Alt, 8bit keycodes at least on: linux, xterm).

Missing functional mailcap and good printcap with auto conversion.

Missing session managing for X.

Missing MAKEDEV.

Doesn't work under glibc:
GNU finger-1.37 (but here is BSD finger)
Reentrantn code for w3c-libwww-5.2.1
gcl-2.2.2
quota-1.51
sudo-1.2-shadow
GNU ispell-3.1.20 (but we have ispell-4.0 from other sources)
awk nor perl was not succesfull in all tests
xview toolkit
GNUStep


System skeleton

Here will be system skeleton (directories, its usage and access rights).
Description doesn't contain directories commented otherwhere and its access is rwxr-xr-x (basic access).

Popis souborů


Soubory jsou dostupné i přes ftp.penguin.cz/pub/users/utx a jako build.tar.gz. Ten však neobsahuje češtinu.
Na hlavní stránku Penguin's UTX WWW
Připomínky posílejte na utx@penguin.cz (Stanislav Brabec)