aboutsummaryrefslogtreecommitdiff
path: root/docs/docs/carbslinux.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/docs/carbslinux.txt')
-rw-r--r--docs/docs/carbslinux.txt1356
1 files changed, 0 insertions, 1356 deletions
diff --git a/docs/docs/carbslinux.txt b/docs/docs/carbslinux.txt
deleted file mode 100644
index a969c74..0000000
--- a/docs/docs/carbslinux.txt
+++ /dev/null
@@ -1,1356 +0,0 @@
- _________________________
-
- CARBS LINUX USER MANUAL
-
- Cem Keylan
- _________________________
-
-
-Table of Contents
-_________________
-
-1. Copying
-2. Installation
-.. 1. Preparing Environment
-..... 1. Download
-..... 2. Signature verification
-..... 3. Extracting the tarball
-..... 4. Obtain the chroot helper
-.. 2. Chroot
-..... 1. Setting up repositories
-..... 2. Updating packages
-..... 3. Installing packages
-..... 4. Essential Software
-..... 5. Obtaining the documentation
-.. 3. System Configuration
-..... 1. Configuring hostname
-..... 2. Hosts file
-.. 4. Kernel
-..... 1. Obtaining the kernel sources
-..... 2. Kernel dependencies
-..... 3. Building the kernel
-.. 5. Making your system bootable
-..... 1. Bootloader
-..... 2. Init scripts
-..... 3. Fstab
-.. 6. Post-installation
-..... 1. KISS repositories
-3. Init System
-.. 1. Configuring Init
-..... 1. Kernel Command Line
-..... 2. `/etc/init/rc.conf' file
-..... 3. Init Hooks
-.. 2. Changing Init Program
-..... 1. Rebooting after changing init
-4. Contribution Guidelines
-.. 1. Conventions
-..... 1. Shell Conventions
-..... 2. Repository Conventions
-5. GNU Free Documentation License
-
-
-This is the full documentation of [Carbs Linux], from the details of the
-distribution, installation, to the package manager. It is not yet
-complete.
-
-You can build and install the 'info' package in order to view this documentation
-with the info reader. It is divided into sections and easier to read.
-
-
-[Carbs Linux] <https://carbslinux.org>
-
-
-1 Copying
-=========
-
- Copyright (c) 2020 Cem Keylan
-
- Permission is granted to copy, distribute and/or modify
- this document under the terms of the GNU Free
- Documentation License, Version 1.3 or any later version
- published by the Free Software Foundation; with no
- Invariant Sections, with no Front-Cover Texts and no
- Back-Cover Texts. A copy of the license is included in
- the section entitled "GNU Free Documentation License."
-
-
-2 Installation
-==============
-
- These are the step-by-step instructions for installing Carbs Linux. It
- can be acquired as plain-text to be viewed offline with a pager from
- <https://carbslinux.org/install.txt>.
-
- ,----
- | curl -sL https://carbslinux.org/install.txt | less
- `----
-
- .. 1. Preparing Environment
- ..... 1. Download
- ..... 2. Signature verification
- ..... 3. Extracting the tarball
- ..... 4. Obtain the chroot helper
- .. 2. Chroot
- ..... 1. Setting up repositories
- ..... 2. Updating packages
- ..... 3. Installing packages
- ..... 4. Essential Software
- ..... 5. Obtaining the documentation
- .. 3. System Configuration
- ..... 1. Configuring hostname
- ..... 2. Hosts file
- .. 4. Kernel
- ..... 1. Obtaining the kernel sources
- ..... 2. Kernel dependencies
- ..... 3. Building the kernel
- .. 5. Making your system bootable
- ..... 1. Bootloader
- ..... 2. Init scripts
- ..... 3. Fstab
- .. 6. Post-installation
- ..... 1. KISS repositories
-
-
-2.1 Preparing Environment
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
- To install Carbs Linux, you will need a Live Linux ISO. For that
- purpose, you can obtain a Gentoo or Void Linux live image. You can
- follow their instructions to boot and setup your network.
-
- You will need the following programs in order to install Carbs Linux:
-
- - tar
- - wget
- - xz
- - some form of base utilities (coreutils, sbase, busybox, etc.)
-
- Rest of these instructions will assume that you have set all of these
- up, and will continue on that point.
-
-
-2.1.1 Download
---------------
-
- First, we need to download the rootfs tarball. You can do the
- following in order to obtain the rootfs. If you are using an i686
- machine, replace the `x86_64' with `i686'. We are setting this in a
- URL variable so that we don't have to write it every time.
-
- ,----
- | wget $URL/carbs-rootfs.tar.xz.sha256
- | sha256sum -c carbs-rootfs.tar.xz.sha256
- `----
-
-
-2.1.2 Signature verification
-----------------------------
-
- It is highly recommended to verify the signature of the tarball. You
- will need GPG for this.
-
- ,----
- | wget $URL/carbs-rootfs.tar.xz.sig
- | gpg --recv-keys FF484BDFEFCEF8FF
- | gpg --verify carbs-rootfs.tar.xz.sig
- `----
-
-
-2.1.3 Extracting the tarball
-----------------------------
-
- You will need to extract the tarball to your desired location. For
- partitioning, you can follow [this guide]. This will assume that you
- will be mounting your root partition to `/mnt'.
-
- ,----
- | mount /dev/sdx1 /mnt
- | tar xf carbs-rootfs.tar.xz -C /mnt
- `----
-
-
-[this guide] <https://wiki.archlinux.org/index.php/Partitioning>
-
-
-2.1.4 Obtain the chroot helper
-------------------------------
-
- You can obtain the `cpt-chroot' script in order to do a simple chroot
- into your new root filesystem.
-
- ,----
- | wget https://dl.carbslinux.org/distfiles/cpt-chroot
- | chmod a+x cpt-chroot
- `----
-
-
-2.2 Chroot
-~~~~~~~~~~
-
- Chroot into Carbs Linux!
-
- ,----
- | ./cpt-chroot /mnt
- `----
-
-
-2.2.1 Setting up repositories
------------------------------
-
- Newest tarballs do not come with repositories, so you will need to
- manually obtain them, and set your `CPT_PATH' environment
- variable. Carbs Linux repositories can either be obtained by `git' or
- `rsync'. While rsync repositories are overall faster and smaller, git
- offers the whole history of the repository and a means to manipulate
- your repository as you like it. If you want to obtain the git
- repository, you will need to install `git' itself.
-
- The following guide will assume that you put the repositories into
- `~/repos/' directory, but you can put the repositories into any
- directory you want. So go ahead and create that directory:
-
- ,----
- | mkdir -p $HOME/repos
- `----
-
-
-* 2.2.1.1 Obtaining from git
-
- Carbs Linux git repositories can be found both from the main server
- and GitHub (mirror). Here are both their repository links. You can
- clone any of them.
-
- - git://git.carbslinux.org/repository
- - <https://github.com/carbslinux/repository>
-
- ,----
- | git clone git://git.carbslinux.org/repository $HOME/repos/carbs
- `----
-
-
-* 2.2.1.2 Obtaining from rsync
-
- Carbs Linux rsync repositories live in rsync://carbslinux.org/repo. In
- order to obtain it, run the following:
-
- ,----
- | rsync -avc rsync://carbslinux.org/repo $HOME/repos/carbs
- `----
-
-
-* 2.2.1.3 Making the package manager use the repositories
-
- In your shell's configuration file, or in your `~/.profile' file, add
- the following lines:
-
- ,----
- | CPT_PATH=$HOME/repos/carbs/core
- | CPT_PATH=$CPT_PATH:$HOME/repos/carbs/extra
- | CPT_PATH=$CPT_PATH:$HOME/repos/carbs/xorg
- | CPT_PATH=$CPT_PATH:$HOME/repos/carbs/community
- | export CPT_PATH
- `----
-
-
-2.2.2 Updating packages
------------------------
-
- It is good practice to make sure your system is up to date, especially
- before building new packages. If there is an update for the package
- manager you will need to update twice.
-
- ,----
- | cpt-update && cpt-update
- `----
-
-
-2.2.3 Installing packages
--------------------------
-
- Since you are operating on a really small base, you might need to
- build and install new programs to extend the functionality of your
- system. In order to build and install packages new packages in Carbs,
- you need to execute the following. "Package" is not actually a package
- and is given as an example.
-
- ,----
- | cpt-build package
- | cpt-install package
- `----
-
-
-2.2.4 Essential Software
-------------------------
-
- Here is a list of software that you might want to have on your system.
-
- *BOOTLOADERS*
-
- - efibootmgr
- - grub
-
- *FILESYSTEMS*
-
- - e2fsprogs
- - dosfstools
- - ntfs-3g
-
- *NETWORKING*
-
- - dhcpcd
- - wpa_supplicant
-
- *TEXT EDITORS*
-
- - nano
- - vim
- - neatvi
- - emacs
- - emacs-nox (terminal-only version of emacs)
-
- *USER SHELLS*
-
- - bash
- - zsh
- - oksh
- - rc
-
- *POSIX BASE UTILITIES*
-
- - busybox
- - sbase
- - coreutils
-
- *DOCUMENTATION*
-
- - carbs-docs
- - man-pages
- - man-pages-posix
-
-
-2.2.5 Obtaining the documentation
----------------------------------
-
- All the documentation for Carbs Linux can be found on a single info
- manual to be viewed offline. You can obtain texinfo or the info
- (standalone) package in order to view the documentation.
-
- ,----
- | # Install the documentation.
- | cpt b carbs-docs && cpt i carbs-docs
- |
- | # Install either texinfo or the info package. We will be installing standalone info
- | # as it doesn't need perl.
- | cpt b info && cpt i info
- |
- | # You can then run info and navigate through the documentation.
- | info carbslinux
- `----
-
-
-2.3 System Configuration
-~~~~~~~~~~~~~~~~~~~~~~~~
-
- After you have finished installing some extra packages, you can
- configure your system to your liking.
-
-
-2.3.1 Configuring hostname
---------------------------
-
- You might want to add a hostname, especially in a networked
- environment. Your hostname will default to 'carbslinux' unless you set
- this.
-
- ,----
- | echo your-hostname > /etc/hostname
- `----
-
-
-2.3.2 Hosts file
-----------------
-
- You can edit your /etc/hosts file, which is the static lookup table
- for host names. By default, there are two entries for localhost which
- are OKAY. You can replace the 'localhost' part of these entries to
- your hostname.
-
- ,----
- | 127.0.0.1 localhost.localdomain localhost
- | ::1 localhost.localdomain localhost ip6-localhost
- `----
-
-
-2.4 Kernel
-~~~~~~~~~~
-
- Kernel isn't managed under the main repositories, even though you
- could package one for your personal use. Here is an [example kernel
- package], which you will need to reconfigure for your specific setup
- if you want to make use of it.
-
-
-[example kernel package]
-<https://github.com/cemkeylan/kiss-repository/tree/master/personal/linux>
-
-2.4.1 Obtaining the kernel sources
-----------------------------------
-
- You can visit the <https://kernel.org> website to choose a kernel that
- you want to install. Though only the latest stable and longterm (LTS)
- versions are supported.
-
- ,----
- | # Download the kernel and extract it
- | wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
- | tar xf linux-5.9.1.tar.xz
- |
- | # Change directory into the kernel sources
- | cd linux-5.9.1
- `----
-
-
-2.4.2 Kernel dependencies
--------------------------
-
- In order to compile the kernel you will need to install some
- dependencies. You will need `libelf', and `bison' to compile the
- kernel. If you want to configure using the menu interface you will
- also need `ncurses'.
-
- ,----
- | # The package manager asks to install if you are building more than one package,
- | # so no need to run 'cpt i ...'
- | cpt b libelf ncurses
- `----
-
- In the vanilla kernel sources, you need perl to compile the kernel,
- but it can be easily patched out. You will need to apply the following
- patch. Patch was written by [E5ten]. You will need to obtain and apply
- the patch in the kernel source directory.
-
- ,----
- | wget https://dl.carbslinux.org/distfiles/kernel-no-perl.patch
- | patch -p1 < kernel-no-perl.patch
- `----
-
-
-[E5ten] <https://github.com/E5ten>
-
-
-2.4.3 Building the kernel
--------------------------
-
- Next step is configuring and building the kernel. You can check
- Gentoo's [kernel configuration guide] to learn more about the
- matter. Overall, Gentoo Wiki is a good place to learn about
- configuration according to your hardware. The following will assume a
- monolithic kernel.
-
- ,----
- | make menuconfig
- | make
- | install -Dm755 $(make -s image_name) /boot/vmlinuz-linux
- `----
-
-
-[kernel configuration guide]
-<https://wiki.gentoo.org/wiki/Kernel/Configuration>
-
-
-2.5 Making your system bootable
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- In order to be able to boot your fresh system, wou will need an
- init-daemon, init-scripts and a bootloader. The init daemon is already
- provided by busybox, but you can optionally change it.
-
-
-2.5.1 Bootloader
-----------------
-
- In the main repository, there is efibootmgr and grub to serve as
- bootloaders. efibootmgr can be used as a standalone bootloader, or
- can be used to install grub in a UEFI environment. efibootmgr is
- needed unless you are using a device without UEFI support (or you
- really want to use BIOS for a reason).
-
-
-* 2.5.1.1 GRUB BIOS installation
-
- ,----
- | cpt b grub && cpt i grub
- | grub-install --target=i386-pc /dev/sdX
- | grub-mkconfig -o /boot/grub/grub.cfg
- `----
-
-
-* 2.5.1.2 GRUB UEFI installation
-
- ,----
- | cpt b efibootmgr && cpt i efibootmgr
- | cpt b grub && cpt i grub
- |
- | grub-install --target=x86_64-efi \
- | --efi-directory=esp \
- | --bootloader-id=CarbsLinux
- |
- | grub-mkconfig -o /boot/grub/grub.cfg
- `----
-
-
-2.5.2 Init scripts
-------------------
-
- Only thing left to do is installing the init-scripts, and now you are
- almost ready to boot your system!
-
- ,----
- | cpt b carbs-init && cpt i carbs-init
- `----
-
-
-2.5.3 Fstab
------------
-
- You can now manually edit your fstab entry, or you can use the
- genfstab tool. If you want to use the tool, exit the chroot and run
- the following:
-
- ,----
- | wget https://github.com/cemkeylan/genfstab/raw/master/genfstab
- | chmod +x genfstab
- | ./genfstab -U /mnt >> /mnt/etc/fstab
- `----
-
-
-2.6 Post-installation
-~~~~~~~~~~~~~~~~~~~~~
-
- The base installation is now complete, you can now fine tune your
- system according to your needs. Rest of these instructions are
- completely optional. You can check the rest of the documentation to
- learn more about the system.
-
-
-2.6.1 KISS repositories
------------------------
-
- While not 100% compatible with cpt, you can use kiss repositories in
- your system the same way you are using the distribution
- repositories. Here is an example for the KISS Linux Community
- repository.
-
-
-3 Init System
-=============
-
- Carbs Linux init scripts are run by the init daemon (`busybox' by
- default) on boot and shutdown processes. It also provides its own
- halting program named shalt. This provides a portable method that
- doesn't rely on non-POSIX external programs.
-
-
-3.1 Configuring Init
-~~~~~~~~~~~~~~~~~~~~
-
- There are three ways you can change the behaviour of the init
- system. Those are:
-
- - Kernel Command Line
- - `/etc/init/rc.conf' file
- - Init Hooks
-
-
-3.1.1 Kernel Command Line
--------------------------
-
- On GRUB, you can edit the kernel command line parameters, which will
- be parsed as variables on the init system. Not all of the parameters
- will be acted upon, but all of them will be set as variables on the
- init script. For example an example command line, and how it is
- interpreted.
-
- ,----
- | BOOT_IMAGE=/boot/vmlinuz root=/dev/sda2 rw loglevel=3 quiet
- `----
-
- This command line will be parsed to set the following variables:
-
- ,----
- | BOOT_IMAGE=/boot/vmlinuz
- | root=/dev/sda2
- | rw=1
- | loglevel=3
- | quiet=1
- `----
-
- Some of these variables, such as `rw=/=ro', `loglevel', and `quiet',
- will be used by the init system to change the behaviour of the
- startup.
-
-
-3.1.2 `/etc/init/rc.conf' file
-------------------------------
-
- However, the kernel command line isn't the only place to set your boot
- parameters. You can specify variables here as well, although note that
- the kernel command line always gets the priority for these variables
- since they can be set just before boot.
-
-
-3.1.3 Init Hooks
-----------------
-
- Init hooks are for custom personal commands that the user may want to
- add to alter their boot. These can be used to load kernel modules,
- modify interfaces, and lot more. Those hooks are added to the
- `/etc/init' directory with the hook name as the suffix. For example, a
- boot script will be placed as `/etc/init/my-hook.boot'. Currently,
- there are 4 hooks that the user can use.
-
- early-boot
- Run after pseudo-filesystems are mounted.
- boot
- Run before the boot stage is completed.
- pre.shutdown
- Run first when shutting down.
- umount
- Run just before filesystems are unmounted.
- post.shutdown
- Run just before the system is halted.
-
-
-3.2 Changing Init Program
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
- By default, Carbs Linux comes preinstalled with `busybox-init', but
- this can easily be replaced without any issues. Currently, available
- init systems are:
-
- - `sinit'
- - `busybox'
- - `runit'
- - `shinit'
-
- This example is for runit, but it will work with all init systems
- packaged in the distribution repositories. See the
- `cpt-alternatives(1)' manual page for more details.
-
- ,----
- | cpt a runit /usr/bin/init
- | cpt a runit /usr/bin/poweroff
- | cpt a runit /usr/bin/reboot
- `----
-
-
-3.2.1 Rebooting after changing init
------------------------------------
-
- After switching init systems, your running init system may not accept
- the new poweroff commands. You will need to reboot/poweroff using the
- running init's utilities for the new utilities to work. These commands
- are for the init system currently running on your system and not the
- one you are switching to.
-
- Program Command
- --------------------------------
- busybox `busybox reboot'
- runit `runit-init 6'
- shinit/sinit `kill -s INT 1'
-
-
-4 Contribution Guidelines
-=========================
-
- Thanks for taking your time to contribute! To maintain stylistic
- behaviour throughout the repositories, one must adhere to these
- conventions. Exceptions and changes may occur with good reasoning.
-
-
-4.1 Conventions
-~~~~~~~~~~~~~~~
-
- [0010]
- Try to keep the file readable.
- [0011]
- Characters on a line shouldn't exceed 100 characters.
- [0012]
- Make sure you don't have code commented out during
- commit. Uncomment them or remove them completely.
- [0013]
- Do not add comments following the code, add them to the
- top of the code. It makes it harder to read, and lines
- longer. Here is an example:
-
- ,----
- | # Good way of commenting.
- | your code goes here
- |
- | your code goes here # Avoid this way of commenting.
- `----
-
-
-4.1.1 Shell Conventions
------------------------
-
- Shell is central to Carbs Linux projects. Most of the tools and
- packages are written in POSIX sh.
-
- [1010]
- Use 4 spaces for indentation, don't use tabs.
- [1020]
- Make sure you don't use bash-specific code.
- [1030]
- Make sure you lint your code with `shellcheck' and if you are
- new to POSIX sh, use `checkbashisms'.
- [1040]
- Don't spawn new processes if you don't absolutely need to,
- especially during string manipulation.
- [1041]
- Never use a program for text manupilation that isn't
- defined in the POSIX standard. This includes `gawk' and
- `perl'.
- [1042]
- Instead of `$(basename $file)', use `${file##*}'.
- [1043]
- Instead of `$(dirname $file)', use `${file%/*}'.
-
- ,----
- | # This is the same thing as basename /path/to/test.asc .asc
- |
- | $ file=/path/to/test.asc file=${file##*/} file=${file%.asc}
- | $ echo $file
- | test
- `----
- [1050]
- Instead of backticks, use `$(..)'.
-
-
-4.1.2 Repository Conventions
-----------------------------
-
- Repository conventions are important in order to ensure every package
- resemble themselves. Here are the things to keep in mind:
-
- [2010]
- Prefer tarballs over git packages unless there is a sensible
- reason. Here are some:
- - Every patch is a new release. (See [vim])
- - There are no releases. (See [sbase])
- - Following a development branch.
- - There has been a long time since the latest release, but
- upstream is far ahead.
- [2020]
- Prefer sources without a dependency to `automake'. There are
- usually distribution tarballs that are `autoconf''ed. Don't
- submit tarballs with an automake dependency unless you are
- `sure' there is no alternative.
- [2030]
- Avoid these packages:
- dbus
- Usually can be disabled by `--disable-dbus'.
- gettext
- Usually can be disabled by `--disable-nls'.
- [2040]
- - Always install a package to the `/usr' prefix.
- - All binaries should go to `/usr/bin', not `/usr/sbin' or any
- other directory.
- - All libraries should go to `/usr/lib'.
- [2050]
- All build files on the repository should be a POSIX shell
- script, and must start with `#!/bin/sh -e'.
-
- The next section is about package templates that should be used in
- order to ensure stylistic consistency. Note that the option
- configurations shouldn't be taken literally, they are meant as
- examples.
-
-
-[vim] <https://github.com/vim/vim>
-
-[sbase] <https://git.suckless.org/sbase>
-
-* 4.1.2.1 Make [2210]
-
- ,----
- | #!/bin/sh -e
- |
- | make
- | make DESTDIR="$1" PREFIX=/usr install
- `----
-
-
-* 4.1.2.2 Configure/Make [2211]
-
- ,----
- | #!/bin/sh -e
- |
- | ./configure \
- | --prefix=/usr \
- | --disable-option \
- | --enable-option
- |
- | make
- | make DESTDIR="$1" install
- `----
-
-
-* 4.1.2.3 Autoconf/Automake [2212]
-
- ,----
- | #!/bin/sh -e
- |
- | autoreconf -fi
- |
- | ./configure \
- | --prefix=/usr \
- | --disable-option \
- | --enable-option
- |
- | make
- | make DESTDIR="$1" install
- `----
-
-
-* 4.1.2.4 Meson [2220]
-
- ,----
- | #!/bin/sh -e
- |
- | export DESTDIR=$1
- |
- | meson \
- | --prefix=/usr \
- | -Doption=false \
- | -Doption2=true \
- | . output
- |
- | ninja -C output
- | ninja -C output install
- `----
-
-
-* 4.1.2.5 Cmake [2230]
-
- ,----
- | #!/bin/sh -e
- |
- | export DESTDIR=$1
- |
- | cmake -B build \
- | -DCMAKE_INSTALL_PREFIX=/usr \
- | -DCMAKE_BUILD_TYPE=Release \
- | -DOPTION=ON
- |
- | cmake --build build
- | cmake --install build
- `----
-
-
-* 4.1.2.6 Go [2240]
-
- ,----
- | #!/bin/sh -e
- |
- | export GOPATH=$PWD/gopath
- | trap "go clean -modcache" EXIT INT
- | go mod vendor
- |
- | go build
- | install -Dm755 program "$1/usr/bin/program"
- `----
-
-
-* 4.1.2.7 Python [2241]
-
- ,----
- | #!/bin/sh -e
- |
- | python setup.py build
- | python setup.py install --prefix=/usr --root="$1"
- `----
-
-
-5 GNU Free Documentation License
-================================
-
- Version 1.3, 3 November 2008
-
- Copyright (c) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
- <http://fsf.org/>
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- 0. PREAMBLE
-
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document free in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or
- noncommercially. Secondarily, this License preserves for the author
- and publisher a way to get credit for their work, while not being
- considered responsible for modifications made by others.
-
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft
- license designed for free software.
-
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same freedoms
- that the software does. But this License is not limited to
- software manuals; it can be used for any textual work, regardless
- of subject matter or whether it is published as a printed book. We
- recommend this License principally for works whose purpose is
- instruction or reference.
-
- 1. APPLICABILITY AND DEFINITIONS
-
- This License applies to any manual or other work, in any medium,
- that contains a notice placed by the copyright holder saying it can
- be distributed under the terms of this License. Such a notice
- grants a world-wide, royalty-free license, unlimited in duration,
- to use that work under the conditions stated herein. The
- "Document", below, refers to any such manual or work. Any member
- of the public is a licensee, and is addressed as "you". You accept
- the license if you copy, modify or distribute the work in a way
- requiring permission under copyright law.
-
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
-
- A "Secondary Section" is a named appendix or a front-matter section
- of the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document's overall
- subject (or to related matters) and contains nothing that could
- fall directly within that overall subject. (Thus, if the Document
- is in part a textbook of mathematics, a Secondary Section may not
- explain any mathematics.) The relationship could be a matter of
- historical connection with the subject or with related matters, or
- of legal, commercial, philosophical, ethical or political position
- regarding them.
-
- The "Invariant Sections" are certain Secondary Sections whose
- titles are designated, as being those of Invariant Sections, in the
- notice that says that the Document is released under this License.
- If a section does not fit the above definition of Secondary then it
- is not allowed to be designated as Invariant. The Document may
- contain zero Invariant Sections. If the Document does not identify
- any Invariant Sections then there are none.
-
- The "Cover Texts" are certain short passages of text that are
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
- that says that the Document is released under this License. A
- Front-Cover Text may be at most 5 words, and a Back-Cover Text may
- be at most 25 words.
-
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images composed
- of pixels) generic paint programs or (for drawings) some widely
- available drawing editor, and that is suitable for input to text
- formatters or for automatic translation to a variety of formats
- suitable for input to text formatters. A copy made in an otherwise
- Transparent file format whose markup, or absence of markup, has
- been arranged to thwart or discourage subsequent modification by
- readers is not Transparent. An image format is not Transparent if
- used for any substantial amount of text. A copy that is not
- "Transparent" is called "Opaque".
-
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format,
- SGML or XML using a publicly available DTD, and standard-conforming
- simple HTML, PostScript or PDF designed for human modification.
- Examples of transparent image formats include PNG, XCF and JPG.
- Opaque formats include proprietary formats that can be read and
- edited only by proprietary word processors, SGML or XML for which
- the DTD and/or processing tools are not generally available, and
- the machine-generated HTML, PostScript or PDF produced by some word
- processors for output purposes only.
-
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the
- material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title
- Page" means the text near the most prominent appearance of the
- work's title, preceding the beginning of the body of the text.
-
- The "publisher" means any person or entity that distributes copies
- of the Document to the public.
-
- A section "Entitled XYZ" means a named subunit of the Document
- whose title either is precisely XYZ or contains XYZ in parentheses
- following text that translates XYZ in another language. (Here XYZ
- stands for a specific section name mentioned below, such as
- "Acknowledgements", "Dedications", "Endorsements", or "History".)
- To "Preserve the Title" of such a section when you modify the
- Document means that it remains a section "Entitled XYZ" according
- to this definition.
-
- The Document may include Warranty Disclaimers next to the notice
- which states that this License applies to the Document. These
- Warranty Disclaimers are considered to be included by reference in
- this License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and
- has no effect on the meaning of this License.
-
- 2. VERBATIM COPYING
-
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that you
- add no other conditions whatsoever to those of this License. You
- may not use technical measures to obstruct or control the reading
- or further copying of the copies you make or distribute. However,
- you may accept compensation in exchange for copies. If you
- distribute a large enough number of copies you must also follow the
- conditions in section 3.
-
- You may also lend copies, under the same conditions stated above,
- and you may publicly display copies.
-
- 3. COPYING IN QUANTITY
-
- If you publish printed copies (or copies in media that commonly
- have printed covers) of the Document, numbering more than 100, and
- the Document's license notice requires Cover Texts, you must
- enclose the copies in covers that carry, clearly and legibly, all
- these Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also clearly
- and legibly identify you as the publisher of these copies. The
- front cover must present the full title with all words of the title
- equally prominent and visible. You may add other material on the
- covers in addition. Copying with changes limited to the covers, as
- long as they preserve the title of the Document and satisfy these
- conditions, can be treated as verbatim copying in other respects.
-
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
-
- If you publish or distribute Opaque copies of the Document
- numbering more than 100, you must either include a machine-readable
- Transparent copy along with each Opaque copy, or state in or with
- each Opaque copy a computer-network location from which the general
- network-using public has access to download using public-standard
- network protocols a complete Transparent copy of the Document, free
- of added material. If you use the latter option, you must take
- reasonably prudent steps, when you begin distribution of Opaque
- copies in quantity, to ensure that this Transparent copy will
- remain thus accessible at the stated location until at least one
- year after the last time you distribute an Opaque copy (directly or
- through your agents or retailers) of that edition to the public.
-
- It is requested, but not required, that you contact the authors of
- the Document well before redistributing any large number of copies,
- to give them a chance to provide you with an updated version of the
- Document.
-
- 4. MODIFICATIONS
-
- You may copy and distribute a Modified Version of the Document
- under the conditions of sections 2 and 3 above, provided that you
- release the Modified Version under precisely this License, with the
- Modified Version filling the role of the Document, thus licensing
- distribution and modification of the Modified Version to whoever
- possesses a copy of it. In addition, you must do these things in
- the Modified Version:
-
- 1. Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of previous
- versions (which should, if there were any, be listed in the
- History section of the Document). You may use the same title as
- a previous version if the original publisher of that version
- gives permission.
-
- 2. List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in the
- Modified Version, together with at least five of the principal
- authors of the Document (all of its principal authors, if it has
- fewer than five), unless they release you from this requirement.
-
- 3. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
-
- 4. Preserve all the copyright notices of the Document.
-
- 5. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
-
- 6. Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified Version
- under the terms of this License, in the form shown in the
- Addendum below.
-
- 7. Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
-
- 8. Include an unaltered copy of this License.
-
- 9. Preserve the section Entitled "History", Preserve its Title, and
- add to it an item stating at least the title, year, new authors,
- and publisher of the Modified Version as given on the Title
- Page. If there is no section Entitled "History" in the Document,
- create one stating the title, year, authors, and publisher of
- the Document as given on its Title Page, then add an item
- describing the Modified Version as stated in the previous
- sentence.
-
- 10. Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in the
- "History" section. You may omit a network location for a work
- that was published at least four years before the Document
- itself, or if the original publisher of the version it refers
- to gives permission.
-
- 11. For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the section
- all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
-
- 12. Preserve all the Invariant Sections of the Document, unaltered
- in their text and in their titles. Section numbers or the
- equivalent are not considered part of the section titles.
-
- 13. Delete any section Entitled "Endorsements". Such a section may
- not be included in the Modified Version.
-
- 14. Do not retitle any existing section to be Entitled
- "Endorsements" or to conflict in title with any Invariant
- Section.
-
- 15. Preserve any Warranty Disclaimers.
-
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no
- material copied from the Document, you may at your option designate
- some or all of these sections as invariant. To do this, add their
- titles to the list of Invariant Sections in the Modified Version's
- license notice. These titles must be distinct from any other
- section titles.
-
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties---for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
-
- You may add a passage of up to five words as a Front-Cover Text,
- and a passage of up to 25 words as a Back-Cover Text, to the end of
- the list of Cover Texts in the Modified Version. Only one passage
- of Front-Cover Text and one of Back-Cover Text may be added by (or
- through arrangements made by) any one entity. If the Document
- already includes a cover text for the same cover, previously added
- by you or by arrangement made by the same entity you are acting on
- behalf of, you may not add another; but you may replace the old
- one, on explicit permission from the previous publisher that added
- the old one.
-
- The author(s) and publisher(s) of the Document do not by this
- License give permission to use their names for publicity for or to
- assert or imply endorsement of any Modified Version.
-
- 5. COMBINING DOCUMENTS
-
- You may combine the Document with other documents released under
- this License, under the terms defined in section 4 above for
- modified versions, provided that you include in the combination all
- of the Invariant Sections of all of the original documents,
- unmodified, and list them all as Invariant Sections of your
- combined work in its license notice, and that you preserve all
- their Warranty Disclaimers.
-
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name
- but different contents, make the title of each such section unique
- by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a
- unique number. Make the same adjustment to the section titles in
- the list of Invariant Sections in the license notice of the
- combined work.
-
- In the combination, you must combine any sections Entitled
- "History" in the various original documents, forming one section
- Entitled "History"; likewise combine any sections Entitled
- "Acknowledgements", and any sections Entitled "Dedications". You
- must delete all sections Entitled "Endorsements."
-
- 6. COLLECTIONS OF DOCUMENTS
-
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the documents
- in all other respects.
-
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert
- a copy of this License into the extracted document, and follow this
- License in all other respects regarding verbatim copying of that
- document.
-
- 7. AGGREGATION WITH INDEPENDENT WORKS
-
- A compilation of the Document or its derivatives with other
- separate and independent documents or works, in or on a volume of a
- storage or distribution medium, is called an "aggregate" if the
- copyright resulting from the compilation is not used to limit the
- legal rights of the compilation's users beyond what the individual
- works permit. When the Document is included in an aggregate, this
- License does not apply to the other works in the aggregate which
- are not themselves derivative works of the Document.
-
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half
- of the entire aggregate, the Document's Cover Texts may be placed
- on covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic
- form. Otherwise they must appear on printed covers that bracket
- the whole aggregate.
-
- 8. TRANSLATION
-
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section
- 4. Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also
- include the original English version of this License and the
- original versions of those notices and disclaimers. In case of a
- disagreement between the translation and the original version of
- this License or a notice or disclaimer, the original version will
- prevail.
-
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to
- Preserve its Title (section 1) will typically require changing the
- actual title.
-
- 9. TERMINATION
-
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense, or distribute it is void,
- and will automatically terminate your rights under this License.
-
- However, if you cease all violation of this License, then your
- license from a particular copyright holder is reinstated (a)
- provisionally, unless and until the copyright holder explicitly and
- finally terminates your license, and (b) permanently, if the
- copyright holder fails to notify you of the violation by some
- reasonable means prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from
- that copyright holder, and you cure the violation prior to 30 days
- after your receipt of the notice.
-
- Termination of your rights under this section does not terminate
- the licenses of parties who have received copies or rights from you
- under this License. If your rights have been terminated and not
- permanently reinstated, receipt of a copy of some or all of the
- same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
- The Free Software Foundation may publish new, revised versions of
- the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- <http://www.gnu.org/copyleft/>.
-
- Each version of the License is given a distinguishing version
- number. If the Document specifies that a particular numbered
- version of this License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If
- the Document does not specify a version number of this License,
- you may choose any version ever published (not as a draft) by the
- Free Software Foundation. If the Document specifies that a proxy
- can decide which future versions of this License can be used, that
- proxy's public statement of acceptance of a version permanently
- authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
- "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
- World Wide Web server that publishes copyrightable works and also
- provides prominent facilities for anybody to edit those works. A
- public wiki that anybody can edit is an example of such a server.
- A "Massive Multiauthor Collaboration" (or "MMC") contained in the
- site means any set of copyrightable works thus published on the
- MMC site.
-
- "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
- license published by Creative Commons Corporation, a
- not-for-profit corporation with a principal place of business in
- San Francisco, California, as well as future copyleft versions of
- that license published by that same organization.
-
- "Incorporate" means to publish or republish a Document, in whole
- or in part, as part of another Document.
-
- An MMC is "eligible for relicensing" if it is licensed under this
- License, and if all works that were first published under this
- License somewhere other than this MMC, and subsequently
- incorporated in whole or in part into the MMC, (1) had no cover
- texts or invariant sections, and (2) were thus incorporated prior
- to November 1, 2008.
-
- The operator of an MMC Site may republish an MMC contained in the
- site under CC-BY-SA on the same site at any time before August 1,
- 2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
- To use this License in a document you have written, include a copy of
- the License in the document and put the following copyright and
- license notices just after the title page:
-
- ,----
- | Copyright (C) YEAR YOUR NAME.
- | Permission is granted to copy, distribute and/or modify this document
- | under the terms of the GNU Free Documentation License, Version 1.3
- | or any later version published by the Free Software Foundation;
- | with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
- | Texts. A copy of the license is included in the section entitled ``GNU
- | Free Documentation License''.
- `----
-
- If you have Invariant Sections, Front-Cover Texts and Back-Cover
- Texts, replace the "with...Texts." line with this:
-
- ,----
- | with the Invariant Sections being LIST THEIR TITLES, with
- | the Front-Cover Texts being LIST, and with the Back-Cover Texts
- | being LIST.
- `----
-
- If you have Invariant Sections without Cover Texts, or some other
- combination of the three, merge those two alternatives to suit the
- situation.
-
- If your document contains nontrivial examples of program code, we
- recommend releasing these examples in parallel under your choice of
- free software license, such as the GNU General Public License, to
- permit their use in free software.