├── .gitignore
├── src
├── about
│ ├── history
│ │ └── index.md
│ └── index.md
├── installation
│ ├── index.md
│ ├── live-images
│ │ ├── downloading.md
│ │ ├── prep.md
│ │ ├── guide.md
│ │ ├── index.md
│ │ ├── partitions.md
│ │ └── booting.md
│ ├── base-requirements.md
│ └── manual.md
├── theme
│ ├── favicon.png
│ ├── css
│ │ ├── print.css
│ │ └── general.css
│ ├── book.js
│ └── index.hbs
├── configuration
│ ├── index.md
│ ├── post-installation.md
│ ├── apple.md
│ ├── virtualization.md
│ └── graphics.md
├── xbps
│ ├── troubleshooting
│ │ ├── index.md
│ │ └── static.md
│ ├── packages
│ │ ├── index.md
│ │ ├── building.md
│ │ ├── management.md
│ │ └── files.md
│ ├── index.md
│ ├── repositories
│ │ ├── official
│ │ │ ├── installing.md
│ │ │ ├── nonfree.md
│ │ │ ├── multilib.md
│ │ │ ├── index.md
│ │ │ └── debug.md
│ │ ├── index.md
│ │ ├── custom.md
│ │ ├── mirrors
│ │ │ ├── index.md
│ │ │ ├── changing.md
│ │ │ ├── list.md
│ │ │ └── tor.md
│ │ ├── signing.md
│ │ └── restricted.md
│ └── updating.md
├── howtoread
│ └── index.md
├── SUMMARY.md
├── organization
│ ├── mirrors.md
│ └── index.md
├── targets
│ └── index.md
└── faq
│ └── index.md
├── book.toml
├── README.md
├── LICENSE
└── COPYING.md
/.gitignore:
--------------------------------------------------------------------------------
1 | book
2 |
--------------------------------------------------------------------------------
/src/about/history/index.md:
--------------------------------------------------------------------------------
1 | # History
2 |
--------------------------------------------------------------------------------
/src/installation/index.md:
--------------------------------------------------------------------------------
1 | # Installation
2 |
--------------------------------------------------------------------------------
/src/theme/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/void-ppc/void-ppc-docs/HEAD/src/theme/favicon.png
--------------------------------------------------------------------------------
/src/configuration/index.md:
--------------------------------------------------------------------------------
1 | # Configuration
2 |
3 | Covers various configuration matters specific to Void, PowerPC or concrete
4 | hardware Void runs on.
5 |
--------------------------------------------------------------------------------
/src/xbps/troubleshooting/index.md:
--------------------------------------------------------------------------------
1 | # Troubleshooting XBPS
2 |
3 | Sometimes the package manager gets in a weird spot and can't fix itself without
4 | help. This section documents important fixes and things that can go wrong when
5 | working with XBPS.
6 |
--------------------------------------------------------------------------------
/src/xbps/packages/index.md:
--------------------------------------------------------------------------------
1 | # Packages
2 |
3 | Packages are managed by XBPS, the in-house package manager for Void Linux.
4 |
5 | This section contains information about using the package manager and pointers
6 | to more advanced information on building packages.
7 |
--------------------------------------------------------------------------------
/book.toml:
--------------------------------------------------------------------------------
1 | [book]
2 | authors = ["The Void-ppc Team"]
3 | multilingual = false
4 | src = "src"
5 | title = "Void Linux for PPC (unofficial) documentation"
6 |
7 | [output.html]
8 | theme = "src/theme"
9 |
10 | [preprocessor.toc]
11 | command = "mdbook-toc"
12 |
--------------------------------------------------------------------------------
/src/xbps/packages/building.md:
--------------------------------------------------------------------------------
1 | # Building From Source
2 |
3 | Building packages from source is an advanced topic that is best left to the
4 | documentation in the void-packages repository.
5 |
6 | This repository can be found at .
7 |
--------------------------------------------------------------------------------
/src/xbps/index.md:
--------------------------------------------------------------------------------
1 | # XBPS Package Manager
2 |
3 | The X Binary Package System (XBPS) is a package manager designed that was
4 | designed implemented from scratch and is extremely fast. XBPS is managed by the
5 | void-linux team and developed at .
6 |
--------------------------------------------------------------------------------
/src/xbps/repositories/official/installing.md:
--------------------------------------------------------------------------------
1 | # Installing Repositories
2 |
3 | Void provides official [repositories](./index.md) that may be installed via a
4 | package. For example, to install the `nonfree` repository, install the package
5 | `void-repo-nonfree`:
6 |
7 | ```
8 | # xbps-install -S void-repo-nonfree
9 | ```
10 |
11 | These packages only install a repository configuration file in
12 | `/usr/share/xbps.d`.
13 |
--------------------------------------------------------------------------------
/src/xbps/repositories/index.md:
--------------------------------------------------------------------------------
1 | # Repositories
2 |
3 | Repositories are the heart of the xbps package system. Repositories can be
4 | locally or remotely available. A repository contains binary package files, which
5 | may have signatures, and a data file named `$ARCH-repodata` (i.e.
6 | `x86_64-repodata`) which may also be signed.
7 |
8 | Note that, while local repositories do not require signatures, remote
9 | repositories *must* be signed.
10 |
--------------------------------------------------------------------------------
/src/xbps/repositories/official/nonfree.md:
--------------------------------------------------------------------------------
1 | # nonfree
2 |
3 | Void has a `nonfree` repository for packages that don't have free licenses.
4 | Install the `void-repo-nonfree` package to enable this repository.
5 |
6 | Packages can end up in the `nonfree` repository for a number of reasons:
7 |
8 | - Non-Free licensed software with released source-code.
9 | - Software released only as redistributable binary packages.
10 | - Patented technology, which may or may not have an (otherwise) open
11 | implementation.
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Void-ppc Docs
2 |
3 | This contains documentation specific to void-ppc and it's based on the mdbook
4 | documentation of Void Linux itself, available at
5 | .
6 |
7 | The generated result is available at . Refer
8 | to the official docs for generic things; this is meant for specific docs only.
9 |
10 | Since the structure is forked from the official Void docs, the whole repo is
11 | provided under the same license as the original.
12 |
--------------------------------------------------------------------------------
/src/xbps/repositories/official/multilib.md:
--------------------------------------------------------------------------------
1 | # multilib
2 |
3 | The `multilib` repository provides 32-bit packages as a compatibility layer
4 | inside a 64-bit system and is available through the package
5 | `void-repo-multilib`.
6 |
7 | These repositories are only available for `x86_64` systems running the `glibc` C
8 | library.
9 |
10 | # multilib/nonfree
11 |
12 | The `multilib/nonfree` repository (available through the package
13 | `void-repo-multilib-nonfree`) provides additional 32-bit packages which have
14 | non-free licenses. See [nonfree](./nonfree.md) for more information about why
15 | these packages are separated.
16 |
--------------------------------------------------------------------------------
/src/howtoread/index.md:
--------------------------------------------------------------------------------
1 | # How To Read The Documentation
2 |
3 | This documentation does not intend to be a comprehensive resource on using
4 | Void Linux, go read the official docs for that. The purpose of this is to
5 | deal with matters specific to Void Linux on PowerPC, as well as organizational
6 | matters and so on.
7 |
8 | ## Example Commands
9 |
10 | Examples in this guide may have snippets of commands to be run in your shell.
11 | When you see these, any line beginning with `$` is run as your normal user.
12 | Lines beginning with `#` are run as `root`. After either of these lines, there
13 | may be example output from the command.
14 |
--------------------------------------------------------------------------------
/src/xbps/repositories/official/index.md:
--------------------------------------------------------------------------------
1 | # Official Repositories
2 |
3 | Void provides other official repositories, which are maintained by the Void
4 | project, but not installed in the default configuration:
5 |
6 | - [debug](./debug.md): contains debugging symbols for packages
7 | - [multilib](./multilib.md): contains 32-bit libraries for 64-bit systems (glibc
8 | only)
9 | - [multilib/nonfree](./multilib.md): contains non-free multilib packages
10 | - [nonfree](./nonfree.md): contains software packages with non-free licenses
11 |
12 | The next sections provide information on installing repositories, and summaries
13 | of the different repositories offered.
14 |
--------------------------------------------------------------------------------
/src/installation/live-images/downloading.md:
--------------------------------------------------------------------------------
1 | # Downloading Images
2 |
3 | All **live images** and **rootfs tarballs** are available at:
4 |
5 | * [https://repo.voidlinux-ppc.org/live/current](https://repo.voidlinux-ppc.org/live/current)
6 |
7 | There is a choice of a plain command line image and a graphical flavor with
8 | the Xfce desktop environment. Other flavor images are currently not planned,
9 | but you can install a desktop of your choice yourself.
10 |
11 | It is recommended that you have enough RAM (at least 256 or 512MB) available
12 | when using the graphical images.
13 |
14 | ## Verifying file integrity
15 |
16 | The
17 | [sha256sums.txt](https://repo.voidlinux-ppc.org/live/current/sha256sums.txt)
18 | file contains the `SHA256` hashes to verify the integrity of the downloaded files.
19 |
--------------------------------------------------------------------------------
/src/xbps/packages/management.md:
--------------------------------------------------------------------------------
1 | # General Package Management
2 |
3 | Most general package management is done with the following commands:
4 |
5 | - [xbps-query(1)](https://man.voidlinux.org/xbps-query.1) displays information
6 | about packages installed locally, or, with the `-R` flag, packages contained
7 | in repositories.
8 | - [xbps-install(1)](https://man.voidlinux.org/xbps-install.1) installs and
9 | updates packages, and syncs repository indexes.
10 | - [xbps-remove(1)](https://man.voidlinux.org/xbps-remove.1) removes installed
11 | packages, and can remove cached package files.
12 |
13 | Most questions can be answered by consulting the man pages for these tools. For
14 | a more detailed overview of the X Binary Package System (XBPS), see the
15 | documentation in the [xbps repository](https://github.com/void-linux/xbps).
16 |
--------------------------------------------------------------------------------
/src/xbps/repositories/official/debug.md:
--------------------------------------------------------------------------------
1 | # debug
2 |
3 | Void Linux packages come without debugging symbols, if you want to debug
4 | software or look at a coredump you will need the debugging symbols. These
5 | packages are contained in the debug repo. Install the `void-repo-debug` package
6 | to enable this repository.
7 |
8 | ## Installing debugging symbols
9 |
10 | To get debugging symbols for packages, activate the `void-repo-debug` repo. Once
11 | enabled, symbols may be obtained for `package` by installing `package-dbg`.
12 |
13 | ```
14 | # xbps-install -S -dbg
15 | ```
16 |
17 | ## Finding debug dependencies
18 |
19 | The `xtools` package contains the `xdbg` utility to retrieve a list of debug
20 | packages including dependencies for a package.
21 |
22 | ```
23 | $ xdbg bash
24 | bash-dbg
25 | glibc-dbg
26 | # xbps-install -S $(xdbg bash)
27 | ```
28 |
--------------------------------------------------------------------------------
/src/theme/css/print.css:
--------------------------------------------------------------------------------
1 |
2 | #sidebar,
3 | #menu-bar,
4 | .nav-chapters,
5 | .mobile-nav-chapters {
6 | display: none;
7 | }
8 |
9 | #page-wrapper.page-wrapper {
10 | transform: none;
11 | margin-left: 0px;
12 | overflow-y: initial;
13 | }
14 |
15 | #content {
16 | max-width: none;
17 | margin: 0;
18 | padding: 0;
19 | }
20 |
21 | .page {
22 | overflow-y: initial;
23 | }
24 |
25 | code {
26 | background-color: #666666;
27 | border-radius: 5px;
28 |
29 | /* Force background to be printed in Chrome */
30 | -webkit-print-color-adjust: exact;
31 | }
32 |
33 | pre > .buttons {
34 | z-index: 2;
35 | }
36 |
37 | a, a:visited, a:active, a:hover {
38 | color: #4183c4;
39 | text-decoration: none;
40 | }
41 |
42 | h1, h2, h3, h4, h5, h6 {
43 | page-break-inside: avoid;
44 | page-break-after: avoid;
45 | }
46 |
47 | pre, code {
48 | page-break-inside: avoid;
49 | white-space: pre-wrap;
50 | }
51 |
52 | .fa {
53 | display: none !important;
54 | }
55 |
--------------------------------------------------------------------------------
/src/SUMMARY.md:
--------------------------------------------------------------------------------
1 | # Summary
2 |
3 | - [About](./about/index.md)
4 | - [How To Read The Documentation](./howtoread/index.md)
5 | - [Supported Targets](./targets/index.md)
6 | - [Project Organization](./organization/index.md)
7 | - [Sources And Mirrors](./organization/mirrors.md)
8 | - [Installation](./installation/index.md)
9 | - [Base System Requirements](./installation/base-requirements.md)
10 | - [Live Installers](./installation/live-images/index.md)
11 | - [Downloading Images](./installation/live-images/downloading.md)
12 | - [Prepare Installation Media](./installation/live-images/prep.md)
13 | - [Booting](./installation/live-images/booting.md)
14 | - [Partitioning Notes](./installation/live-images/partitions.md)
15 | - [Installation Guide](./installation/live-images/guide.md)
16 | - [Manual Installation](./installation/manual.md)
17 | - [Configuration](./configuration/index.md)
18 | - [Post-Installation](./configuration/post-installation.md)
19 | - [Apple Hardware](./configuration/apple.md)
20 | - [Virtualization](./configuration/virtualization.md)
21 | - [Graphics](./configuration/graphics.md)
22 | - [FAQ](./faq/index.md)
23 |
--------------------------------------------------------------------------------
/src/installation/base-requirements.md:
--------------------------------------------------------------------------------
1 | # Base System Requirements
2 |
3 | These are the requirements of the live media. Manual installations as well
4 | as rootfs tarballs typically have lower requirements and can be used as long
5 | as you meet the criteria specified [here](/targets).
6 |
7 | | Architecture | CPU | RAM | Storage | Platform |
8 | | ------------ | ------ | ----- | ------- | ----------------------------- |
9 | | ppc64le | POWER8 | 96MB | 700MB | OpenPOWER, IBM OF |
10 | | ppc64le-musl | POWER8 | 96MB | 600MB | OpenPOWER, IBM OF |
11 | | ppc64 | 970/G5 | 96MB | 700MB | OpenPOWER, IBM/Apple OF |
12 | | ppc64-musl | 970/G5 | 96MB | 600MB | OpenPOWER, IBM/Apple OF |
13 | | ppc | G3 | 64MB | 700MB | Apple OF |
14 | | ppc-musl | G3 | 64MB | 600MB | Apple OF |
15 |
16 | > Note: Graphical flavors require more resources, depending on the flavor.
17 |
18 | Other platforms may also work, but are currently untested.
19 |
20 | It is recommended to have a network connection available during installation,
21 | but it is not strictly necessary.
22 |
--------------------------------------------------------------------------------
/src/xbps/repositories/custom.md:
--------------------------------------------------------------------------------
1 | # Custom Repositories
2 |
3 | Void supports user created repositories available locally, or remotely. This is
4 | only recommended for serving custom packages created personally, or packages
5 | from another trusted source. The Void project does not support *any* third party
6 | package repositories, and the use of third party software packages poses very
7 | serious security concerns, and risks serious damage your system.
8 |
9 | ## Adding custom repositories
10 |
11 | To add custom repositories create a file in `/etc/xbps.d` with the format:
12 |
13 | ```
14 | repository=
15 | ```
16 |
17 | Where `` is either a local directory or a URL to a remote repository.
18 |
19 | For example, to define a remote repository:
20 |
21 | ```
22 | # echo 'repository=http://my.domain.com/repo' > /etc/xbps.d/my-remote-repo.conf
23 | ```
24 |
25 | > Note: Remote repositories need to be [signed](signing.md).
26 | > [xbps-install(1)](https://man.voidlinux.org/xbps-install.1) refuses to install
27 | > packages from remote repositories if they are not signed.
28 |
29 | Or, to define a local repository:
30 |
31 | ```
32 | # echo 'repository=/path/to/repo' > /etc/xbps.d/my-local-repo.conf
33 | ```
34 |
--------------------------------------------------------------------------------
/src/xbps/repositories/mirrors/index.md:
--------------------------------------------------------------------------------
1 | # Mirrors
2 |
3 | Void Linux maintains mirrors in several geographic regions for you to use. In
4 | normal use your traffic will be routed to the nearest mirror to you based on
5 | your IP Address. If you would like to directly use a particular mirror you can
6 | set this manually. This can also be handy if you are on a different continent
7 | than the primary mirror, or if you are not on the same continent as any
8 | officially managed mirrors.
9 |
10 | ## Tier 1 mirrors
11 |
12 | Tier 1 mirrors sync directly from the build-master and will always have the
13 | latest packages available. These repositories are maintained by the Void Linux
14 | Infrastructure Team. In rare occasions we may permit a mirror that we don’t
15 | manage to sync directly from our primary servers if there are extenuating
16 | circumstances.
17 |
18 | ## Tier 2 mirrors
19 |
20 | Tier 2 mirrors sync from a nearby tier 1 mirror when possible, but there is no
21 | guarantee of a mirror being nearby. These mirrors are not managed by Void nor do
22 | they have any specific guarantees for staleness or completeness of packages.
23 | Tier 2 mirrors are free to sync only specific architectures and exclude
24 | sub-repositories (nonfree/multilib).
25 |
--------------------------------------------------------------------------------
/src/xbps/repositories/signing.md:
--------------------------------------------------------------------------------
1 | ## Signing repositories
2 |
3 | Remote repositories **must** be signed, local repositories do not need to be
4 | signed.
5 |
6 | The [xbps-rindex(1)](https://man.voidlinux.org/xbps-rindex.1) tool is used to
7 | sign repositories. First initialize the repository metadata with signing
8 | properties (this is only required once).
9 |
10 | The private key to sign packages needs to be a PEM encoded RSA key, the key can
11 | be generated with either [ssh-keygen(1)](https://man.voidlinux.org/ssh-keygen.1)
12 | or [openssl(1)](https://man.voidlinux.org/openssl.1) choose one of the following
13 | methods.
14 |
15 | ```
16 | $ ssh-keygen -t rsa -m PEM -f private.pem
17 | ```
18 |
19 | ```
20 | $ openssl genrsa -out private.pem
21 | ```
22 |
23 | First the public part of the private key has to be added to the repository
24 | metadata, this step is only required once.
25 |
26 | ```
27 | $ xbps-rindex --privkey private.pem --sign --signedby "I'm Groot" /path/to/repository/dir
28 | ```
29 |
30 | Afterwards sign one or more packages with the following command:
31 |
32 | ```
33 | $ xbps-rindex --privkey private.pem --sign-pkg /path/to/repository/dir/*.xbps
34 | ```
35 |
36 | > Note: Future packages will not be automatically signed.
37 |
--------------------------------------------------------------------------------
/src/xbps/packages/files.md:
--------------------------------------------------------------------------------
1 | # Finding Files
2 |
3 | To search a file in packages you can use one of two methods
4 |
5 | The `xtools` package contains the `xlocate` utility that works like
6 | [locate(1)](https://man.voidlinux.org/locate.1) but for all files in the void
7 | package repository.
8 |
9 | ```
10 | # xbps-install -Su xtools
11 |
12 | $ xlocate -S
13 | From https://repo.voidlinux.org/xlocate/xlocate +
14 | 16d97bfe86...2ad1a4a8d1 master -> master (forced update)
15 | $ xlocate fizz
16 | nim-0.17.0_1 /usr/lib/nim/examples/fizzbuzz.nim ponysay-3.0.2_1
17 | /usr/share/ponysay/ponies/cherryfizzy.pony ->
18 | /usr/share/ponysay/ponies/cherrycola.pony ponysay-3.0.2_1
19 | /usr/share/ponysay/ttyponies/cherryfizzy.pony ->
20 | /usr/share/ponysay/ttyponies/cherrycola.pony supertux2-data-0.5.1_1
21 | /usr/share/supertux2/sounds/fizz.wav
22 | ```
23 |
24 | It is also possible to use `xbps-query` to find files, but this is strongly
25 | discouraged. It requires `xbps-query` to download parts of every package to find
26 | the file requested. `xlocate`, on the other hand, is able to query a locally
27 | cached index of all files, so no network is required to query for files.
28 |
29 | ```
30 | $ xbps-query -Ro /usr/bin/xlocate
31 | xtools-0.46_1: /usr/bin/xlocate (regular file)
32 | ```
33 |
--------------------------------------------------------------------------------
/src/xbps/repositories/mirrors/changing.md:
--------------------------------------------------------------------------------
1 | # Changing Mirrors
2 |
3 | Repository files define URLs for the repository mirror used. These files are
4 | installed by the package manager in `/usr/share/xbps.d`, but if duplicate files
5 | are found in `/etc/xbps.d`, those values are used instead.
6 |
7 | To modify mirror URLs cleanly, copy all the repository configuration files to to
8 | `/etc/xbps.d` and change the URLs in each repository file in `/etc/xbps.d`.
9 |
10 | ```
11 | # mkdir -p /etc/xbps.d
12 | # cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
13 | # sed -i 's|https://alpha.de.repo.voidlinux.org||g' /etc/xbps.d/*-repository-*.conf
14 | ```
15 |
16 | After changing the URLs, you must synchronize xbps with the new mirrors:
17 |
18 | ```
19 | # xbps-install -S
20 | ```
21 |
22 | You should see the new repository URLs while synchronizing. You can also use
23 | `xbps-query` to verify the repository URLs, but only after they have been
24 | synchronized:
25 |
26 | ```
27 | $ xbps-query -L
28 | 9970 https://alpha.de.repo.voidlinux.org/current (RSA signed)
29 | 27 https://alpha.de.repo.voidlinux.org/current/multilib/nonfree (RSA signed)
30 | 4230 https://alpha.de.repo.voidlinux.org/current/multilib (RSA signed)
31 | 47 https://alpha.de.repo.voidlinux.org/current/nonfree (RSA signed)
32 | 5368 https://alpha.de.repo.voidlinux.org/current/debug (RSA signed)
33 | ```
34 |
--------------------------------------------------------------------------------
/src/xbps/troubleshooting/static.md:
--------------------------------------------------------------------------------
1 | # Static XBPS
2 |
3 | In rare cases, it is possible to break the system sufficiently that XBPS can no
4 | longer function. This usually happens while trying to do unsupported things with
5 | libc, but can also happen when an update contains a corrupt glibc archive or
6 | otherwise fails to unpack and configure fully.
7 |
8 | In these cases it is possible to recover your system with a separate, statically
9 | compiled copy of XBPS.
10 |
11 | ## Obtaining static XBPS
12 |
13 | Statically compiled versions of XBPS are available in all mirrors in the static/
14 | directory. The link below points to the static copies on the primary mirror in
15 | Germany:
16 |
17 |
18 |
19 | Download and unpack the latest version, or the version that matches the broken
20 | copy on your system (with a preference for the latest copy).
21 |
22 | ## Using static XBPS
23 |
24 | The tools in the static set are identical to the normal ones found on most
25 | systems. The only distinction is that these tools are statically linked to the
26 | musl C library, and should work on systems where nothing else does. In systems
27 | where the platform can no longer boot, it is recommended to chroot in with Void
28 | installation media and use the static tools from there, as it is unlikely that
29 | even a shell will work correctly on the target system.
30 |
--------------------------------------------------------------------------------
/src/xbps/repositories/restricted.md:
--------------------------------------------------------------------------------
1 | # Restricted Packages
2 |
3 | Void offers some packages that are officially maintained, but not distributed.
4 | These packages are marked as restricted and must be built from their
5 | [void-packages](https://github.com/void-linux/void-packages) template locally.
6 |
7 | Packages can be restricted from distribution by either the upstream author or
8 | Void. Void reserves the right to restrict distribution of any package for
9 | effectively any reason, massive size being the most common. Another common
10 | reason is restrictive licensing that does not allow third-party redistribution
11 | of source or binary packages.
12 |
13 | ## Building manually
14 |
15 | You can use `xbps-src` in the
16 | [void-packages](https://github.com/void-linux/void-packages) repository to build
17 | the restricted packages from templates. For instructions on building packages
18 | from templates see the
19 | [void-packages](https://github.com/void-linux/void-packages) documentation, and
20 | specifically the quick setup section of the README.
21 |
22 | Remember that the building of restricted packages must be enabled explicitly by
23 | setting `XBPS_ALLOW_RESTRICTED=yes` in your `xbps-src` configuration (in the
24 | `etc/conf` file in the repository.)
25 |
26 | ## Automated building
27 |
28 | There is also a tool,
29 | [xbps-mini-builder](https://github.com/the-maldridge/xbps-mini-builder) which
30 | automates the process of building a list of packages. The script can be called
31 | periodically and will only rebuild packages if their templates have changed.
32 |
--------------------------------------------------------------------------------
/src/xbps/updating.md:
--------------------------------------------------------------------------------
1 | # Updating
2 |
3 | Like any other system it is important to keep Void Linux up to date.
4 |
5 | In general Void should be updated with an XBPS invocation:
6 |
7 | ```
8 | # xbps-install -Su
9 | ```
10 |
11 | > Note: XBPS must use a separate transaction to update itself. If your first
12 | > update includes the package `xbps`, you will need to run an additional update
13 | > for the rest of the system.
14 |
15 | ## Restarting services
16 |
17 | If you are installing Void in production or otherwise have long lived services,
18 | its important to note that XBPS does not restart services when they are updated.
19 | This task is left to the administrator so they can orchestrate maintenance
20 | windows, ensure reasonable backup capacity, and generally be present for service
21 | upgrades.
22 |
23 | To find processes running different versions than are present on disk, use the
24 | `xcheckrestart` tool provided by the `xtools` package:
25 |
26 | ```
27 | # xbps-install -S xtools
28 | ```
29 |
30 | ```
31 | $ xcheckrestart
32 | 11339 /opt/google/chrome/chrome (deleted) (google-chrome)
33 | ```
34 |
35 | `xcheckrestart` will print out the PID, path to the executable, status of the
36 | path that was launched (almost always deleted) and the process name.
37 |
38 | `xcheckrestart` can and should be run as an unprivileged user.
39 |
40 | ## Kernel Panic After Update
41 |
42 | Your system likely ran out of space in `/boot`. XBPS installs kernels and
43 | requests that hooks such as DKMS and Dracut be run, but it doesn't remove
44 | kernels that are obsolete. This is left as a task for the administrator to
45 | permit the retention of obsolete but still booted or known working kernels.
46 |
47 | Remove kernels with [vkpurge(8)](https://man.voidlinux.org/vkpurge.8).
48 |
--------------------------------------------------------------------------------
/src/xbps/repositories/mirrors/list.md:
--------------------------------------------------------------------------------
1 | # Mirror List
2 |
3 | ## Tier 1 mirrors
4 |
5 | | Repository | Location |
6 | |------------------------------------------------|------------------|
7 | | | EU: Finland |
8 | | | USA: Kansas City |
9 | | | USA: New York |
10 | | | USA: Chicago |
11 |
12 | ## Tier 2 mirrors
13 |
14 | | Repository | Location |
15 | |----------------------------------------------------------------------------------------|-------------------|
16 | | | AU: Canberra |
17 | | | AU: Melbourne |
18 | | | EU: Sweden |
19 | | | EU: Denmark |
20 | | | APAN: Singapore |
21 | | | APAN: South Korea |
22 | | | EU: Sweden |
23 | | | EU: Sweden |
24 | | | RU: Russia |
25 | | | EU: Amsterdam, NL |
26 |
--------------------------------------------------------------------------------
/src/configuration/post-installation.md:
--------------------------------------------------------------------------------
1 | # Post-Installation
2 |
3 | Once you have a working system, there are things you might want to do.
4 |
5 | ## Page poisoning and SLUB debug
6 |
7 | By default, Void enables `slub_debug=P page_poison=1`. These are hardening
8 | options and have little effect on modern hardware, but on old PowerPC Macs,
9 | the performance hit may be significant.
10 |
11 | Therefore, you might want to remove these from `/etc/default/grub` and then
12 | run `update-grub`.
13 |
14 | ## Updates
15 |
16 | You will definitely want to update your system, especially if the live media
17 | is old. Void is a rolling distribution and therefore updates frequently. Run:
18 |
19 | ```
20 | # xbps-install -Su
21 | ```
22 |
23 | ## NTP (time syncing)
24 |
25 | You might want to enable a time syncing daemon. This is especially important
26 | if your hardware can't keep clock. For example, you can do:
27 |
28 | ```
29 | # xbps-install -S openntpd
30 | # ln -s /etc/sv/ntpd /var/service/
31 | ```
32 |
33 | There are other NTP daemons to choose from as well.
34 |
35 | Keep in mind that `openntpd` by default uses the https constraint feature. That
36 | means that unless your time is set to a correct value in the first place, the
37 | daemon will fail to set the date/time. Either use `date` to manually set a
38 | close enough date/time, or remove/comment out the `constraints from` line in
39 | `/etc/ntpd.conf`.
40 |
41 | ## Logging
42 |
43 | By default, Void comes with no logging daemon. There are different implementations
44 | available, `socklog` is simplistic and easy to use:
45 |
46 | ```
47 | # xbps-install -S socklog-void
48 | # ln -s /etc/sv/socklog-unix /var/service/
49 | # ln -s /etc/sv/nanoklogd /var/service/
50 | ```
51 |
52 | ## PopCorn
53 |
54 | If you feel like helping us take over usage statistics in
55 | , install and enable `PopCorn`:
56 |
57 | ```
58 | # xbps-install PopCorn
59 | # ln -s /etc/sv/popcorn /var/service/
60 | ```
61 |
62 | ## Other things
63 |
64 | The official handbook at should come in handy.
65 |
--------------------------------------------------------------------------------
/src/about/index.md:
--------------------------------------------------------------------------------
1 | # About
2 |
3 | Void Linux for PowerPC/Power ISA is a currently unofficial staging fork of
4 | the Void Linux distribution that is meant, as the name says, for PowerPC and
5 | Power architecture devices. Its primary goal is upstreaming support for the
6 | architecture into the upstream distribution. Its secondary goal is to provide
7 | people with a complete, production ready distribution while there is still no
8 | official repository.
9 |
10 | Void currently has no official support for the architecture. While vast
11 | majority of the actual source changes have been upstreamed (and therefore,
12 | official `void-packages` can compile most things just fine), there is no
13 | official binary repository. The reason for this is largely technical, as
14 | the build infrastructure does not seem to be able to handle any more builders.
15 | This may persist for a while, and that's where this fork comes in.
16 |
17 | We put emphasis on wide hardware support. Therefore, you can run the distro
18 | on a lot of different devices, including modern OpenPOWER hardware such as
19 | the Raptor Talos 2 and Blackbird, various old PowerPC Macs (G3/G4/G5) and
20 | even consoles like Nintendo Wii U. The distribution supports both 32-bit
21 | and 64-bit hardware, and both little and big endian for 64-bit hardware.
22 |
23 | Besides the things that set Void itself apart from the others, the PowerPC
24 | fork has some unique aspects of its own. For example, it uses the modern
25 | ELFv2 ABI not only on little endian targets but also on big endian for both
26 | `glibc` and `musl` and even the kernel itself. We aim to be legacy free, and
27 | being a new port, making that a reality becomes a lot easier.
28 |
29 | In total we have six flavors of the distro, `ppc64le`, `ppc64le-musl`, `ppc64`,
30 | `ppc64-musl`, `ppc` and `ppc-musl`. The requirements and hardware support of
31 | each is described in other sections.
32 |
33 | Last but not least, wide software support is also important. The project aims
34 | for a complete repository coverage (where applicable) and therefore parity
35 | with `x86_64` on all targets. This is a work in progress, and the repository
36 | sizes may differ.
37 |
38 | Since we provide custom repositories, our fork of `void-packages` is also
39 | updated to use those. Therefore, as a user, you can build your own packages
40 | effortlessly, just like if you were on `x86_64`.
41 |
42 |
--------------------------------------------------------------------------------
/src/organization/mirrors.md:
--------------------------------------------------------------------------------
1 | # Sources And Mirrors
2 |
3 | There are several mirrors to help lighten the load on the primary infrastructure.
4 |
5 | Tier 1 mirrors sync directly from the primary and contain everything. They are
6 | also required to provide https. Other mirrors may sync from somewhere else and
7 | are allowed to host specific things only (and may not always be up to date).
8 |
9 | To change your mirrors to use a different set, you must create files in
10 | `/etc/xbps.d` with the same names as those in `/usr/share/xbps.d`. Once you
11 | have created such files, replace the URL with one of the servers below. Only
12 | the files containing ‘repository’ in the filename need to be duplicated to
13 | `/etc/xbps.d/`.
14 |
15 | The default is . This is supposed to be
16 | load-balancing between available Tier 1 mirrors, but that currently does not
17 | work, so it’s equivalent to the primary for the time being.
18 |
19 | ## Tier 1 Mirrors
20 |
21 | - (USA: Chicago)
22 | - (USA: Chicago)
23 |
24 | ## Tier 2 Mirrors
25 |
26 | - (EU: Sweden)
27 | - (EU: Sweden)
28 | - (EU: Germany)
29 |
30 | ## Package repositories
31 |
32 | The main project binary location is .
33 |
34 | - xbps repository (`ppc64le` direct):
35 | - xbps repository (`ppc64le-musl` direct):
36 | - xbps repository (`ppc64` direct):
37 | - xbps repository (`ppc64-musl` direct):
38 | - xbps repository (`ppc` direct):
39 | - xbps repository (`ppc-musl` direct):
40 | - xbps repository (`ppc64le` load balancing):
41 | - xbps repository (`ppc64le-musl` load balancing):
42 | - xbps repository (`ppc64` load balancing):
43 | - xbps repository (`ppc64-musl` load balancing):
44 | - xbps repository (`ppc` load balancing):
45 | - xbps repository (`ppc-musl` load balancing):
46 | - static xbps for all (built using musl):
47 | - rsync for mirroring: `rsync://repo.voidlinux-ppc.org/void-ppc`
48 |
49 | ## Live images and rootfs tarballs
50 |
51 | The primary location is and contains
52 | regularly updated ISO images (at very least for base system for every supported
53 | target) and rootfs tarballs (`base-voidstrap` for each supported target, useful
54 | for containers and so on). By extension, every mirror below also provides those
55 | images.
56 |
--------------------------------------------------------------------------------
/src/organization/index.md:
--------------------------------------------------------------------------------
1 | # Project Organization
2 |
3 | This project exists with the goal of being a staging area, which means to keep
4 | as few patches as possible not upstreamed.
5 |
6 | Therefore, vast majority of patches are intended for submission as soon as they
7 | are ready. There are some exceptions to this - for example, our `xbps` template
8 | is modified to use our own repositories, same with the `void-packages` config
9 | so that building using `xbps-src` will automatically pull in binaries.
10 |
11 | The project welcomes contributors. If you have changes, you may choose to either
12 | work on them with us, or submit them directly for the upstream repository. In
13 | that case, please tag the respective maintainers in order to keep track.
14 |
15 | The current active maintainers are:
16 |
17 | - `q66` - lead maintainer, all targets; tag always
18 |
19 | ## Discussion channels
20 |
21 | Decisions are made in our Github organization, with the main real-time chat tool
22 | being IRC (`#voidlinux-ppc` on `irc.oftc.net`). Feel free to join us if you want
23 | to keep track or if you just want to chat (most topics are welcome, and everyone
24 | is expected to do their part in keeping the place fun - we want everyone to get
25 | along so please use common sense). In case of on-topic talk going on, it should
26 | be prioritized over off-topic stuff at the time.
27 |
28 | At this point there is no code of conduct and we have no immediate plans to
29 | introduce one. That, however, does not mean our standards are any lower than
30 | those of places that do have it, it simply means there hasn't been a need to
31 | introduce one yet. Please do not give us a reason to introduce one; any kind
32 | of harassment or other toxic behavior will not be tolerated. If you suspect
33 | this kind of activity is going on without being noticed, reach out to anyone
34 | with operator rights.
35 |
36 | ## Donations
37 |
38 | The project also accepts hardware donations for testing. We do not accept
39 | financial donations.
40 |
41 | ## Git repository structure
42 |
43 | We have several repositories:
44 |
45 | - `void-packages` - the fork itself; contains our "ports tree"
46 | - `void-mklive` - also forked from upstream; contains the installer and
47 | live media generator
48 | - `void-ppc-docs` - contains this documentation
49 | - `void-ppc.github.io` - the website
50 |
51 | There may be other repositories that are forks of various projects or the
52 | developers' repositories.
53 |
54 | The `void-packages` and `void-mklive` repositories have two primary branches
55 | that are identical contents-wise. The `master` branch contains all the latest
56 | changes and is maintained using the merge strategy, so you will always be able
57 | to pull from it safely. The `staging` branch is like `master` but is maintained
58 | using the rebase strategy, which means it's not safe to pull from, but has a
59 | clean history that makes it obvious how ahead/behind upstream we are.
60 |
61 | Other branches are usually temporary, for pull requests. Users and contributors
62 | are encouraged to base theirs off `master` for convenience.
63 |
--------------------------------------------------------------------------------
/src/xbps/repositories/mirrors/tor.md:
--------------------------------------------------------------------------------
1 | # Using Tor mirrors
2 |
3 | Tor is an anonymising software that bounces traffic via computers all around the
4 | world. It can provide access to regular sites on the internet or to hidden sites
5 | only available on the network.
6 |
7 | ## Using XBPS with Tor
8 |
9 | XBPS can be made to connect to mirrors using Tor. These mirrors can be normal
10 | mirrors, via exit relays, or, for potentially greater anonymity, hidden service
11 | mirrors on the network.
12 |
13 | XBPS respects the `SOCKS_PROXY` environment variable, which makes it easy to use
14 | via Tor.
15 |
16 | ### Installing Tor
17 |
18 | Tor can be installed using XBPS:
19 |
20 | ```
21 | # xbps-install -S tor
22 | ```
23 |
24 | After having installed Tor, you can start it as your own user:
25 |
26 | ```
27 | $ tor
28 | ```
29 |
30 | or as a system service:
31 |
32 | ```
33 | # ln -s /etc/sv/tor /var/service/
34 | ```
35 |
36 | By default, Tor will act as a client and open a SOCKS5 proxy on TCP port 9050 on
37 | localhost.
38 |
39 | ### Making XBPS connect via the SOCKS proxy
40 |
41 | XBPS reads the `SOCKS_PROXY` environment variable and will use any proxy
42 | specified in it. By simply setting the variable to the address and port of the
43 | proxy opened by the Tor client, all XBPS's connections will go over the Tor
44 | network.
45 |
46 | An example upgrading your system over Tor:
47 |
48 | ```
49 | # export SOCKS_PROXY="socks5://127.0.0.1:9050"
50 | # xbps-install -Su
51 | ```
52 |
53 | ### Using a hidden service mirror
54 |
55 | To use a hidden service mirror, the default mirrors need to be overwritten with
56 | configuration files pointing to `.onion`-addresses that are used internally on
57 | the Tor network. XBPS allows overriding repository addresses under
58 | `/etc/xbps.d`.
59 |
60 | Copy your repository files from `/usr/share/xbps.d` to `/etc/xbps.d` and replace
61 | the addresses with that of an onion service (Lysator's onion used as an
62 | example):
63 |
64 | ```
65 | # mkdir -p /etc/xbps.d
66 | # cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
67 | # sed -i 's|https://alpha.de.repo.voidlinux.org|http://lysator7eknrfl47rlyxvgeamrv7ucefgrrlhk7rouv3sna25asetwid.onion/pub/voidlinux|g' /etc/xbps.d/*-repository-*.conf
68 | ```
69 |
70 | Tor provides layered end-to-end encryption so https is not necessary.
71 |
72 | When installing packages, with `SOCKS_PROXY` set like the earlier example, XBPS
73 | should indicate that it is synchronising the repositories from the onion address
74 | specified in the override:
75 |
76 | ```
77 | # xbps-install -S
78 | [*] Updating `http://lysator7eknrfl47rlyxvgeamrv7ucefgrrlhk7rouv3sna25asetwid.onion/pub/voidlinux/current/aarch64/nonfree/aarch64-repodata' ...
79 | aarch64-repodata: 4030B [avg rate: 54KB/s]
80 | [*] Updating `http://lysator7eknrfl47rlyxvgeamrv7ucefgrrlhk7rouv3sna25asetwid.onion/pub/voidlinux/current/aarch64/aarch64-repodata' ...
81 | aarch64-repodata: 1441KB [avg rate: 773KB/s]
82 | ```
83 |
84 | ### Security consideration
85 |
86 | It is advisable to set `SOCKS_PROXY` automatically in your environment if you
87 | are using an onion. If the setting is missing, a DNS query for the name of the
88 | hidden service will leak to the configured DNS server.
89 |
90 | To automatically set the environment variable, add it to a file in
91 | `/etc/profile.d`:
92 |
93 | ```
94 | # cat - < /etc/profile.d/socksproxy.sh
95 | #!/bin/sh
96 | export SOCKS_PROXY="socks5://127.0.0.1:9050"
97 | EOF
98 | ```
99 |
--------------------------------------------------------------------------------
/src/targets/index.md:
--------------------------------------------------------------------------------
1 | # Supported Targets
2 |
3 | The project supports three architectures, each with `glibc` and `musl`. A basic
4 | table is below:
5 |
6 | | Target | Min. CPU requirement | Notes |
7 | | ------------ | ----------------------- | ------------------------------------------- |
8 | | ppc64le | `powerpc64le` (generic) | `-maltivec -mtune=power9`, POWER8 or better |
9 | | ppc64le-musl | `powerpc64le` (generic) | `-maltivec -mtune=power9`, POWER8 or better |
10 | | ppc64 | 970 / G5 | `-maltivec -mtune=power9`, POWER4 or better |
11 | | ppc64-musl | 970 / G5 | `-maltivec -mtune=power9`, POWER4 or better |
12 | | ppc | `powerpc` (generic) | `-mno-altivec -mtune=G4` |
13 | | ppc-musl | `powerpc` (generic) | `-mno-altivec -mtune=G4` |
14 |
15 | The typical expected little endian target (`ppc64le`) is a Raptor Talos 2,
16 | Blackbird or similar commonly accessible hardware. At very least, you will
17 | need a POWER8, which means ISA 2.07 and little endian AltiVec/VSX. There may
18 | be other hardware implementing these, but that is currently untested. Notably
19 | the `e6500` systems are not supported, as they implement ISA 2.07 but do not
20 | support little endian AltiVec/VSX.
21 |
22 | For booting the little endian live media, a PowerNV (OpenPOWER) or PowerVM
23 | environment is expected, so either Petitboot or SLOF can be used. In the
24 | former case, it will directly load the kernel, in the latter case, GRUB
25 | will be loaded by the firmware.
26 |
27 | The 64-bit big endian requirements are more relaxed and require at least a
28 | PowerPC 970 (G5) with AltiVec support. That means any 64-bit PowerPC Mac
29 | will be able to boot the system, but not POWER4/POWER5, as they do not
30 | support AltiVec (same with e.g. `e5500`; `e6500` should work). POWER6
31 | and newer can boot it, this includes all targets supported by little
32 | endian as well.
33 |
34 | The 32-bit builds are completely generic and require no specific processor.
35 | However, the live media expect an OpenFirmware environment (IBM or Apple
36 | style), and the typical platform for those is therefore an Apple PowerPC
37 | system of the NewWorld kind (any G4, plus G3 "Blue and White" and newer).
38 | Other environments may need manual intervention.
39 |
40 | This listing is not exhaustive. There may be other platforms capable of booting
41 | the media. If you know of one, or know how to make one work, please let us know.
42 |
43 | All 64-bit targets use the ELFv2 ABI for both kernel and userland. This includes
44 | big endian `glibc`. This may have some compatibility implications, so be aware
45 | of those (you will not be able to run legacy prebuilt binaries directly and
46 | will need to set up a container with another distribution). Void aims to be
47 | a legacy-free system and is the first and currently only distribution to use
48 | ELFv2 on big endian `glibc`, as well as the first and only to use it for the
49 | big endian kernel.
50 |
51 | ## Repository status
52 |
53 | There is a separate [statistics](https://repo.voidlinux-ppc.org/stats.html) page
54 | with a detailed matrix of what is built, what is buildable and what is not.
55 |
56 | At the time of writing this, at least all major desktops and common applications
57 | were available for all targets. Application-specific issues may exist, but not
58 | more than on other distributions. Please report any issues you may come across
59 | [here](https://github.com/void-ppc/void-packages/issues).
60 |
--------------------------------------------------------------------------------
/src/installation/live-images/prep.md:
--------------------------------------------------------------------------------
1 | # Prepare Installation Media
2 |
3 | After [downloading a live image](./downloading.md), it must be written to
4 | bootable media, such as a USB drive, SD card, or CD/DVD.
5 |
6 | ## Create a bootable USB drive or SD card on Linux
7 |
8 | ### Identify the Device
9 |
10 | Before writing the image, identify the device you'll write it to. You can do
11 | this using [fdisk(8)](https://man.voidlinux.org/man8/fdisk.8). After connecting
12 | the storage device, identify the device path by running:
13 |
14 | ```
15 | # fdisk -l
16 | Disk /dev/sda: 7.5 GiB, 8036286464 bytes, 15695872 sectors
17 | Disk model: Your USB Device's Model
18 | Units: sectors of 1 * 512 = 512 bytes
19 | Sector size (logical/physical): 512 bytes / 512 bytes
20 | I/O size (minimum/optimal): 512 bytes / 512 bytes
21 | ```
22 |
23 | In the example above, the output shows the USB device as `/dev/sda`. On Linux,
24 | the path to the device will typically be in the form of `/dev/sdX` (where X is a
25 | number) for USB devices, `/dev/mmcblkX` for SD cards, or other variations
26 | depending on the device. You can use the model and size (`7.5GiB` above, after
27 | the path) to identify the device if you're not sure what path it will have.
28 |
29 | Once you've identified the device you'll use, ensure it's not mounted by
30 | unmounting it with [umount(8)](https://man.voidlinux.org/man8/umount.8):
31 |
32 | ```
33 | # umount /dev/sdX
34 | umount: /dev/sdX: not mounted.
35 | ```
36 |
37 | ### Write the live image
38 |
39 | First, wipe any partition table information from the target device, as there
40 | may be a partition table left. This is especially common if you had a GPT
41 | hybrid OS written in there before (like an `x86_64` Linux media) and you are
42 | overwriting it with hybrid APM media (which is needed for PowerPC). You can
43 | easily do it using [wipefs(8)](https://man.voidlinux.org/man8/wipefs.8):
44 |
45 | > **Warning**: this will destroy any data currently on the referenced device.
46 | > Exercise caution.
47 |
48 | ```
49 | # wipefs -a /dev/sdX
50 | /dev/sdX: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
51 | /dev/sdX: 8 bytes were erased at offset 0x12bffe00 (gpt): 45 46 49 20 50 41 52 54
52 | /dev/sdX: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
53 | ```
54 |
55 | The [dd(1)](https://man.voidlinux.org/man1/dd.1) command can be used to copy a
56 | live image to a storage device. Using dd, write the live image to the device:
57 |
58 | ```
59 | # dd bs=4M if=/path/to/void-live-ARCH-DATE-VARIANT.iso of=/dev/sdX
60 | 90+0 records in
61 | 90+0 records out
62 | 377487360 bytes (377 MB, 360 MiB) copied, 0.461442 s, 818 MB/s
63 | ```
64 |
65 | dd won't print anything until it's completed (or if it failed), so depending on
66 | the device, this can take a few minutes or longer.
67 |
68 | Finally, ensure all data is flushed before disconnecting the device:
69 |
70 | ```
71 | $ sync
72 | ```
73 |
74 | The number of records, amount copied, and rates will all vary depending on the
75 | device and the live image you chose.
76 |
77 | ## Burning to a CD or DVD
78 |
79 | Any disk burning application should be capable of writing the `.iso` file to a
80 | CD or DVD. The following free software applications are available
81 | (cross-platform support may vary):
82 |
83 | - [Brasero](https://wiki.gnome.org/Apps/Brasero/)
84 | - [K3B](https://userbase.kde.org/K3b)
85 | - [Xfburn](https://goodies.xfce.org/projects/applications/xfburn)
86 |
87 | > Note: with a CD or DVD, live sessions will be less responsive than with a USB
88 | > or hard drive.
89 |
--------------------------------------------------------------------------------
/src/theme/book.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | // Fix back button cache problem
4 | window.onunload = function () { };
5 |
6 | (function sidebar() {
7 | var html = document.querySelector("html");
8 | var sidebar = document.getElementById("sidebar");
9 | var sidebarLinks = document.querySelectorAll('#sidebar a');
10 | var sidebarToggleButton = document.getElementById("sidebar-toggle");
11 | var firstContact = null;
12 |
13 | function showSidebar() {
14 | html.classList.remove('sidebar-hidden')
15 | html.classList.add('sidebar-visible');
16 | Array.from(sidebarLinks).forEach(function (link) {
17 | link.setAttribute('tabIndex', 0);
18 | });
19 | sidebarToggleButton.setAttribute('aria-expanded', true);
20 | sidebar.setAttribute('aria-hidden', false);
21 | try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { }
22 | }
23 |
24 | function hideSidebar() {
25 | html.classList.remove('sidebar-visible')
26 | html.classList.add('sidebar-hidden');
27 | Array.from(sidebarLinks).forEach(function (link) {
28 | link.setAttribute('tabIndex', -1);
29 | });
30 | sidebarToggleButton.setAttribute('aria-expanded', false);
31 | sidebar.setAttribute('aria-hidden', true);
32 | try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { }
33 | }
34 |
35 | // Toggle sidebar
36 | sidebarToggleButton.addEventListener('click', function sidebarToggle() {
37 | if (html.classList.contains("sidebar-hidden")) {
38 | showSidebar();
39 | } else if (html.classList.contains("sidebar-visible")) {
40 | hideSidebar();
41 | } else {
42 | if (getComputedStyle(sidebar)['transform'] === 'none') {
43 | hideSidebar();
44 | } else {
45 | showSidebar();
46 | }
47 | }
48 | });
49 |
50 | document.addEventListener('touchstart', function (e) {
51 | firstContact = {
52 | x: e.touches[0].clientX,
53 | time: Date.now()
54 | };
55 | }, { passive: true });
56 |
57 | document.addEventListener('touchmove', function (e) {
58 | if (!firstContact)
59 | return;
60 |
61 | var curX = e.touches[0].clientX;
62 | var xDiff = curX - firstContact.x,
63 | tDiff = Date.now() - firstContact.time;
64 |
65 | if (tDiff < 250 && Math.abs(xDiff) >= 150) {
66 | if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300))
67 | showSidebar();
68 | else if (xDiff < 0 && curX < 300)
69 | hideSidebar();
70 |
71 | firstContact = null;
72 | }
73 | }, { passive: true });
74 |
75 | // Scroll sidebar to current active section
76 | var activeSection = sidebar.querySelector(".active");
77 | if (activeSection) {
78 | sidebar.scrollTop = activeSection.offsetTop;
79 | }
80 | })();
81 |
82 | (function chapterNavigation() {
83 | document.addEventListener('keydown', function (e) {
84 | if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; }
85 | if (window.search && window.search.hasFocus()) { return; }
86 |
87 | switch (e.key) {
88 | case 'ArrowRight':
89 | e.preventDefault();
90 | var nextButton = document.querySelector('.nav-chapters.next');
91 | if (nextButton) {
92 | window.location.href = nextButton.href;
93 | }
94 | break;
95 | case 'ArrowLeft':
96 | e.preventDefault();
97 | var previousButton = document.querySelector('.nav-chapters.previous');
98 | if (previousButton) {
99 | window.location.href = previousButton.href;
100 | }
101 | break;
102 | }
103 | });
104 | })();
105 |
--------------------------------------------------------------------------------
/src/configuration/apple.md:
--------------------------------------------------------------------------------
1 | # Apple Hardware
2 |
3 | ## Media keys and keyboard backlight on laptops
4 |
5 | Install and enable `pbbuttonsd`:
6 |
7 | ```
8 | # xbps-install pbbuttonsd
9 | # ln -s /etc/sv/pbbuttonsd /var/service/
10 | ```
11 |
12 | ## Right click emulation
13 |
14 | Install and enable `mouseemu`:
15 |
16 | ```
17 | # xbps-install mouseemu
18 | # ln -s /etc/sv/mouseemu /var/service/
19 | ```
20 |
21 | Middle click defaults to F10, right click to F11. Scrolling modifier
22 | defaults to Alt.
23 |
24 | ## Wireless networking
25 |
26 | The `b43` driver is usually used. Unfortunately, the firmware for that is
27 | not redistributable. Our templates collection ships some templates which you
28 | can use to build your own firmware packages.
29 |
30 | ### Using void-packages
31 |
32 | You will need to set up `void-packages`. Follow the standard instructions,
33 | using our `void-ppc` fork. The condensed version would be:
34 |
35 | ```
36 | # xbps-install base-devel git
37 | $ git clone https://github.com/void-ppc/void-packages.git
38 | $ cd void-packages
39 | $ ./xbps-src binary-bootstrap
40 | ```
41 |
42 | Follow the official documentation for `xbps-src` usage for more information.
43 |
44 | Enable `restricted` packages:
45 |
46 | ```
47 | $ echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf
48 | ```
49 |
50 | Then build the appropriate firmware package:
51 |
52 | ```
53 | $ ./xbps-src pkg b43-firmware
54 | ```
55 |
56 | or:
57 |
58 | ```
59 | $ ./xbps-src pkg b43-firmware-classic
60 | ```
61 |
62 | Whether you should use `b43-firmware` (version `6.x.x.x`) or `b43-firmware-classic`
63 | (version `5.x.x`) depends on the wireless card you have. First, find out which
64 | one it is:
65 |
66 | ```
67 | $ lspci | grep Wireless
68 | ```
69 |
70 | The output may be something like (this is from a 2005 PowerBook G4 15"):
71 |
72 | ```
73 | 0001:10:12.0 Network controller: Broadcom Inc. and subsidiaries BCM4306 802.11b/g Wireless LAN Controller (rev 03)
74 | ```
75 |
76 | If you have one of BCM4306 rev.3 (this is the above), BCM4311, BCM4312 or
77 | BCM4318 rev.2, you should use `b43-firmware-classic`. If you have a BCM4331,
78 | you should use `b43-firmware`. In other cases, you should probably be able to
79 | use either.
80 |
81 | Install the firmware:
82 |
83 | ```
84 | # xbps-install -R hostdir/binpkgs/nonfree b43-firmware
85 | ```
86 |
87 | or:
88 |
89 | ```
90 | # xbps-install -R hostdir/binpkgs/nonfree b43-firmware-classic
91 | ```
92 |
93 | If one doesn't work for you, try the other.
94 |
95 | ### Using b43-fwcutter manually
96 |
97 | If you don't want to clone the `void-packages` repository for some reason,
98 | you can always set it up manually. First, read the section above anyway; it
99 | contains useful information about compatibility. Then install `b43-fwcutter`:
100 |
101 | ```
102 | # xbps-install b43-fwcutter
103 | ```
104 |
105 | Make a dedicated directory:
106 |
107 | ```
108 | $ mkdir broadcom_fw && cd broadcom_fw
109 | ```
110 |
111 | Then fetch the firmware. This is for `b43-firmware`:
112 |
113 | ```
114 | $ xbps-uhelper fetch http://www.lwfinger.com/b43-firmware/broadcom-wl-6.30.163.46.tar.bz2
115 | ```
116 |
117 | or for `b43-firmware-classic`:
118 |
119 | ```
120 | $ xbps-uhelper fetch http://www.lwfinger.com/b43-firmware/broadcom-wl-5.100.138.tar.bz2
121 | ```
122 |
123 | You're free to use any other tool you want to fetch it (`wget`, `curl`, etc).
124 |
125 | Extract it:
126 |
127 | ```
128 | $ tar xf broadcom-wl-*.tar.bz2
129 | ```
130 |
131 | And finally use the cutter to extract the firmware. For `b43-firmware`:
132 |
133 | ```
134 | # b43-fwcutter -w /usr/lib/firmware broadcom-wl-*.wl_apsta.o
135 | ```
136 |
137 | Or for `b43-firmware-classic`:
138 |
139 | ```
140 | # b43-fwcutter -w /usr/lib/firmware linux/wl_apsta.o
141 | ```
142 |
143 | This will make sure to place the firmware in the appropriate location. After
144 | that, just reboot and wireless network should just work, but don't expect it
145 | to be fast :)
146 |
147 | If you need to remove it later, just
148 |
149 | ```
150 | # rm -rf /usr/lib/firmware/b43
151 | ```
152 |
153 | Particularly you will need to do that when switching versions, as you should
154 | not install two conflicting versions at the same time.
155 |
156 | ## Audio
157 |
158 | By default, it might seem like audio "doesn't work". This is not actually true,
159 | it's just that PCM is muted by default.
160 |
161 | To remedy this, install `alsa-utils`:
162 |
163 | ```
164 | # xbps-install alsa-utils
165 | ```
166 |
167 | Then open `alsamixer`. Press the F6 key to switch the card to something like
168 | `SoundByLayout`; if you're using plain ALSA, you might not have to switch
169 | anything, but PulseAudio will show its own mixer first.
170 |
171 | Then once you see the `PCM` slider (you might have to scroll a little to the
172 | right), up its level, it'll probably be at 0 by default. Don't up it too much,
173 | or you will introduce distortion; it seems 80 is the maximum safe value.
174 |
175 | Audio should work afterwards and you can change the volume using the `Master`
176 | slider or using PulseAudio or whichever other solution you like. Don't get
177 | confused by there being just one output instead of separate ones for
178 | headphones and speakers; automatic jack sensing works and it will switch
179 | depending on if there's anything plugged in.
180 |
--------------------------------------------------------------------------------
/src/installation/live-images/guide.md:
--------------------------------------------------------------------------------
1 | # Installation Guide
2 |
3 | Once you have [downloaded](./downloading.md) a Void image to install and
4 | [prepared](./prep.md) your install media, you are ready to install Void Linux.
5 |
6 | ## Booting
7 |
8 | Boot your machine from the install media you created. If you have enough RAM,
9 | there is an option on the boot screen to load the entire image into ram, which
10 | will take some time but speed up the rest of the install process.
11 |
12 | Once the live image has booted, log in as `root` with password `voidlinux`.
13 | Then, check if date/time is correct, with the `date` command. Especially
14 | on old Macs with bad batteries and in some VMs it may be set to 1970. If
15 | that is the case, fix it again with the `date` command.
16 |
17 | Afterwards, run:
18 |
19 | ```
20 | # void-installer
21 | ```
22 |
23 | The following sections will detail each screen of the installer.
24 |
25 | ## Keyboard
26 |
27 | Select the keymap for your keyboard; standard "qwerty" keyboards will generally
28 | use the "us" keymap.
29 |
30 | ## Network
31 |
32 | Select your primary network interface. If you do not choose to use DHCP, you
33 | will be prompted to provide an IP address, gateway, and DNS servers.
34 |
35 | If you intend to use a wireless connection during the installation, you may need
36 | to configure it manually using wpa_supplicant and dhcpcd manually before running
37 | `void-installer`.
38 |
39 | ## Source
40 |
41 | To install packages provided on the install image, select `Local`. Otherwise,
42 | you may select `Network` to download the latest packages from the Void
43 | repository.
44 |
45 | > Note: if you are installing a desktop environment from a ''flavor'' image, you
46 | > MUST choose `Local` for the source!
47 |
48 | ## Hostname
49 |
50 | Select a hostname for your computer (that is all lowercase, with no spaces.)
51 |
52 | ## Locale
53 |
54 | Select your default locale settings. This option is for glibc only, as musl does
55 | not currently support locales.
56 |
57 | ## Timezone
58 |
59 | Select your timezone based on standard timezone options.
60 |
61 | ## Root password
62 |
63 | Enter and confirm your `root` password for the new installation. The password
64 | will not be shown on screen.
65 |
66 | ## User account
67 |
68 | Choose a login (default `void`) and a descriptive name for that login. Then
69 | enter and confirm the password for the new user. You will then be prompted to
70 | verify the groups for this new user. They are added to the `wheel` group by
71 | default and will have `sudo` access.
72 |
73 | ## Partition
74 |
75 | Next, you will need to partition your disks. Void does not provide a preset
76 | partition scheme, so you will need to create your partitions manually.
77 | Depending on your platform, the installer will guide you with instructions
78 | on how to partition your drive. You might need to use different partitioning
79 | tools depending on the hardware (`cfdisk` for most, `pmac-fdisk` for Macs).
80 |
81 | See the [Partitioning Notes](./partitions.md) for more details about
82 | partitioning your disk.
83 |
84 | ## Filesystems
85 |
86 | Create the filesystems for each partition you have created. For each partition
87 | you will be prompted to choose a filesystem type, whether you want to create a
88 | new filesystem on the partition, and a mount point, if applicable. When you are
89 | finished, select `Done` to return to the main menu.
90 |
91 | ## Bootloader
92 |
93 | ### OpenPOWER systems
94 |
95 | Since OpenPOWER systems use Petitboot, you will not be able to install a
96 | bootloader. The installer will still ask you whether to at least use GRUB
97 | for generating the configuration file. As Petitboot can read these configs,
98 | it can generate a menu for you. You will probably want to say Yes.
99 |
100 | ### IBM OF systems
101 |
102 | These use the `PReP boot` partition. You will need to point the installer to
103 | it so that it can put GRUB in there. You will also be asked whether to use
104 | a graphical terminal. That's generally up to you, in either case you will
105 | get a boot menu.
106 |
107 | ### NewWorld PowerPC Macs
108 |
109 | You will need to select your bootstrap partition. The choice of graphical
110 | bootloader is again up to you, but keep in mind that it might be slow on
111 | this hardware, so you will likely want to say No.
112 |
113 | ### Other hardware
114 |
115 | Other hardware is generally unsupported by the installer when it comes to
116 | bootloader setup, though you can still use it for other things and skip the
117 | bootloader installation, then do it manually.
118 |
119 | ## Review settings
120 |
121 | It is a good idea to review your settings before proceeding. Use the right arrow
122 | key to select the settings button and hit ``. All your selections will be
123 | shown for review.
124 |
125 | ## Install
126 |
127 | Selecting `Install` from the menu will start the installer. The installer will
128 | create all the filesystems selected, and install the base system packages. It
129 | will then generate an initramfs and install a GRUB2 bootloader to the bootable
130 | partition.
131 |
132 | These steps will all run automatically, and after the installation is completed
133 | successfully, you can reboot into your new Void Linux install!
134 |
135 | ## Post installation
136 |
137 | See the [Post-Installation](../../configuration/post-installation.md)
138 | guide for some tips on setting up your new system.
139 |
--------------------------------------------------------------------------------
/src/installation/live-images/index.md:
--------------------------------------------------------------------------------
1 | # Live Installers
2 |
3 | Like official Void, we provide a set of live images containing a bootable
4 | system with an installer. These live images are also useful for rescue.
5 |
6 | All 6 platforms have live images, including graphical flavors.
7 |
8 | ## Installer images
9 |
10 | There are two kinds of images just like in the official distro; base images
11 | and flavor images. Flavor images come with a graphical desktop environment.
12 |
13 | ### Base images
14 |
15 | These provide only a minimal set of packages to install on the given platform.
16 | This basically means `base-system` plus a few extras for partitioning and so on.
17 |
18 | ### Flavor images
19 |
20 | These come with a desktop environment, a web browser and some other basic
21 | applications. Please keep in mind that the installer will only copy over the
22 | whole desktop if you use the local installation option. Network installation
23 | only installs the base system always.
24 |
25 | #### Comparison of flavor images
26 |
27 | This differs slightly from the official distro. The desktops are the same but
28 | the browsers and other applications might differ.
29 |
30 | | | Enlightenment | Cinnamon | LXDE | LXQT | MATE | XFCE |
31 | |-------------------|-------------------------------------------------------|-----------------|-----------------------------------------|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
32 | | Window Manager | Enlightenment Window Manager | Mutter (Muffin) | Openbox | Openbox | Metacity (Marco) | xfwm4 |
33 | | File Manager | Enlightenment File Manager | Nemo | PCManFM | PCManFM-Qt | Caja | Thunar |
34 | | Web Browser | Firefox (ppc64le, ppc64), Epiphany (ppc) | <= | <= | <= | <= | <= |
35 | | Terminal | Terminology | gnome-terminal | LXTerminal | QTerminal | MATE terminal | xfce4-Terminal |
36 | | Document Viewer | - | - | - | - | Atril (PS/PDF) | - |
37 | | Plain text viewer | - | - | - | - | Pluma | Mousepad |
38 | | Image viewer | - | - | GPicView | LXImage | Eye of MATE | Ristretto |
39 | | Archive unpacker | - | - | - | - | Engrampa | - |
40 | | Other | Mixer, EConnMan (connection manager), Elementary Test | - | LXTask (task manager), MIME type editor | Screen grabber | Screen grabber, file finder, MATE color picker, MATE font viewer, Disk usage analyzer, Power statistics, System monitor (task manager), Dictionary, Log file viewer | Bulk rename, Orage Globaltime, Orage Calendar, Task Manager, Parole Media Player, Audio Mixer, MIME type editor, Application finder |
41 |
--------------------------------------------------------------------------------
/src/theme/index.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {{ title }}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
20 |
21 |
30 |
31 |
32 |
57 |
58 |
59 |
119 |
120 | {{#if livereload}}
121 |
122 |
135 | {{/if}}
136 |
137 | {{#if search_js}}
138 |
139 |
140 |
141 | {{/if}}
142 |
143 |
144 |
145 |
146 |
--------------------------------------------------------------------------------
/src/theme/css/general.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: 'Ubuntu', sans-serif;
3 | font-size: 1rem;
4 | line-height: 1.5;
5 | color: #333;
6 | margin: 0;
7 | background-color: #ffffff;
8 | }
9 | h1, h2, h3, h4, h5, h6 { color: #333; }
10 | a {
11 | color: #3f89b8;
12 | text-decoration: none;
13 | }
14 | a:hover {
15 | color: #333;
16 | text-decoration: underline;
17 | }
18 |
19 | code {
20 | background: #fdf6e3;
21 | padding: 2px 4px;
22 | border-radius: 4px;
23 | white-space: pre-wrap;
24 | overflow-wrap: break-word;
25 | }
26 | pre code {
27 | padding: 0;
28 | border-radius: 0;
29 | }
30 | pre {
31 | padding: .5em;
32 | margin: 1em 0;
33 | background: #fdf6e3;
34 | border: 1px solid #ccc;
35 | border-radius: 4px;
36 | }
37 |
38 | blockquote {
39 | margin: 20px 0;
40 | padding: 0 20px;
41 | padding-left: 1em;
42 | background: #ebf4ef;
43 | border: 1px solid #d1e6da;
44 | border-left: none;
45 | border-right: none;
46 | }
47 |
48 | table {
49 | border-collapse: collapse;
50 | }
51 | table td {
52 | padding: 3px 20px;
53 | border: 1px #fafafa solid;
54 | }
55 | table thead {
56 | background: #fafafa;
57 | }
58 | table thead td {
59 | font-weight: 700;
60 | border: none;
61 | }
62 | table thead tr {
63 | }
64 | /* Alternate background colors for rows */
65 | table tbody tr:nth-child(2n) {
66 | background: #fafafa;
67 | }
68 |
69 | .hidden {
70 | display: none;
71 | }
72 |
73 | .icon-button {
74 | border: none;
75 | background: none;
76 | padding: 1em;
77 | }
78 |
79 | .right {
80 | float: right;
81 | }
82 |
83 | /* void navigation */
84 |
85 | #void-nav {
86 | width: 100%;
87 | height: 50px;
88 | background: #3f89b8;
89 | font-size: 14px;
90 | }
91 | #void-nav button,
92 | #void-nav label {
93 | color: #fff;
94 | height: 50px;
95 | display: block;
96 | line-height: 50px;
97 | padding: 0 15px;
98 | font-size: 1.2em;
99 | }
100 | #void-nav ul {
101 | list-style: none;
102 | margin: 0;
103 | padding: 0;
104 | }
105 | #void-nav ul li {
106 | float: left;
107 | }
108 | #void-nav ul li a {
109 | color: #fff;
110 | display: block;
111 | padding: 0 15px;
112 | line-height: 50px;
113 | font-size: 1.2em;
114 | text-decoration: none
115 | }
116 | #void-nav ul li a:hover,
117 | #void-nav ul li a:focus,
118 | #void-nav button:hover,
119 | #void-nav button:focus,
120 | #void-nav label:hover,
121 | #void-nav label:focus {
122 | background: #000;
123 | }
124 |
125 | #skip-to-content {
126 | position: absolute;
127 | left: -999px;
128 | top: -999px;
129 | }
130 |
131 | #skip-to-content:active,
132 | #skip-to-content:focus {
133 | position: relative;
134 | left: 0;
135 | top: 0;
136 | }
137 |
138 | /* sidebar */
139 |
140 | .sidebar-hidden #sidebar {
141 | display: none;
142 | }
143 | #sidebar {
144 | padding: .5em;
145 | background: #fafafa;
146 | font-size: 0.875em;
147 | }
148 | #sidebar ol {
149 | list-style: none;
150 | margin: 0;
151 | }
152 | #sidebar ol.chapter {
153 | padding: 0;
154 | line-height: 2.2em;
155 | }
156 | #sidebar ol.section {
157 | padding-left: 20px;
158 | line-height: 1.9em;
159 | }
160 | #sidebar a {
161 | color: #000;
162 | display: block;
163 | }
164 | #sidebar a:hover {
165 | color: #3f89b8;
166 | text-decoration: none;
167 | }
168 | #sidebar a.active {
169 | color: #3f89b8;
170 | }
171 |
172 | #sidebar-toggle {
173 | display: none;
174 | }
175 |
176 | /* search */
177 |
178 | #searchbar {
179 | width: 100%;
180 | padding: 10px 16px;
181 | margin: 5px 0;
182 | border-radius: 3px;
183 | border: 1px solid #aaa;
184 | }
185 | #searchresults-header {
186 | font-weight: bold;
187 | font-size: 1em;
188 | padding: 18px 0 0 5px;
189 | }
190 | ul#searchresults {
191 | list-style: none;
192 | padding-left: 20px;
193 | }
194 | ul#searchresults li {
195 | margin: 10px 0px;
196 | padding: 2px;
197 | border-radius: 2px;
198 | }
199 | ul#searchresults span.teaser {
200 | display: block;
201 | clear: both;
202 | margin: 5px 0 0 20px;
203 | font-size: 0.8em;
204 | }
205 |
206 | /* chapter navigation */
207 |
208 | #nav-wide-wrapper {
209 | max-width: 800px;
210 | margin: 0 auto;
211 | margin-top: 50px;
212 | }
213 | .previous {
214 | float: left;
215 | }
216 | .next {
217 | float: right;
218 | right: 15px;
219 | }
220 | .nav-chapters {
221 | background: #fafafa;
222 | color: #ccc;
223 | font-size: 2.5em;
224 | text-align: center;
225 | text-decoration: none;
226 | display: block;
227 | max-width: 150px;
228 | min-width: 90px;
229 | }
230 | .nav-chapters:hover {
231 | text-decoration: none;
232 | }
233 |
234 | /* layout */
235 |
236 | body {
237 | box-sizing: border-box;
238 | }
239 | #content {
240 | display: flex;
241 | flex-direction: row;
242 | }
243 | #page-wrapper {
244 | width: 100%;
245 | padding: 0 10px;
246 | }
247 | #search-wrapper,
248 | #page-wrapper main {
249 | width: 100%;
250 | max-width: 800px;
251 | margin: 0 auto;
252 | }
253 | #sidebar {
254 | max-width: 300px;
255 | flex-shrink: 0;
256 | }
257 |
258 | /* 300px + 800px + 2*90px + 15px */
259 | @media only screen and (min-width: 1295px) {
260 | .sidebar-visible #nav-wide-wrapper {
261 | max-width: auto;
262 | margin: 0;
263 | }
264 | .sidebar-visible .nav-chapters {
265 | background: none;
266 | position: fixed;
267 | top: 50px;
268 | bottom: 0;
269 | margin: 0;
270 | justify-content: center;
271 | align-content: center;
272 | display: flex;
273 | flex-direction: column;
274 | }
275 | }
276 | /* 800px + 2*90px + 15px */
277 | @media only screen and (min-width: 995px) {
278 | .sidebar-hidden #nav-wide-wrapper {
279 | max-width: auto;
280 | margin: 0;
281 | }
282 | .sidebar-hidden .nav-chapters {
283 | background: none;
284 | position: fixed;
285 | top: 50px;
286 | bottom: 0;
287 | margin: 0;
288 | justify-content: center;
289 | align-content: center;
290 | display: flex;
291 | flex-direction: column;
292 | }
293 | }
294 |
295 | /* whatever, just hide the nav */
296 | @media only screen and (max-width: 700px) {
297 | #void-nav ul.right {
298 | display: none;
299 | }
300 | }
301 |
302 | @font-face {
303 | font-family: 'FontAwesome';
304 | src: url('/FontAwesome/fonts/fontawesome-webfont.eot?v=4.4.0');
305 | src: url('/FontAwesome/fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('/FontAwesome/fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('/FontAwesome/fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('/FontAwesome/fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');
306 | font-weight: normal;
307 | font-style: normal
308 | }
309 | .fa {
310 | display: inline-block;
311 | font: normal normal normal 14px/1 FontAwesome;
312 | font-size: inherit;
313 | text-rendering: auto;
314 | }
315 | .fa-search:before {
316 | content: "\f002"
317 | }
318 | .fa-navicon:before,.fa-reorder:before,.fa-bars:before {
319 | content: "\f0c9"
320 | }
321 | .fa-angle-left:before {
322 | content:"\f104"
323 | }
324 | .fa-angle-right:before {
325 | content:"\f105"
326 | }
327 |
--------------------------------------------------------------------------------
/src/installation/live-images/partitions.md:
--------------------------------------------------------------------------------
1 | # Partitioning Notes
2 |
3 | This is generally simple, but will differ depending on the hardware/firmware.
4 |
5 | When using the installer, it will provide you with instructions appropriate
6 | for your machine.
7 |
8 | ## OpenPOWER
9 |
10 | OpenPOWER machines, such as the Talos 2 or IBM PowerNV servers, load into Linux
11 | and feature a bootloader called Petitboot. The final kernel is then loaded via
12 | the `kexec` mechanism. POWER8 and newer machines are in general OpenPOWER, but
13 | not always (the other ones use SLOF, see below).
14 |
15 | That's why there is no bootstrap partition necessary. However, the partition
16 | that contains `/boot` must be mountable from the firmware environment. The
17 | partition table does not matter either, as long as the firmware can see it;
18 | the typical choice is either GPT or MBR.
19 |
20 | **Necessary partitions:**
21 |
22 | - Root partition (`/`)
23 |
24 | **When using an unsupported root filesystem:**
25 |
26 | - Root partition (`/`)
27 | - `/boot` partition (with a supported filesystem)
28 |
29 | Unsupported root file systems generally include out of tree ones such as ZFS,
30 | and Btrfs is usually affected as well, since it requires page size and
31 | endianness to match the machine where it was created, and Void uses 4 kB kernel
32 | pages (a typical OpenPOWER firmware uses 64 kB).
33 |
34 | ## Open Firmware
35 |
36 | Other machines the live images can boot on use Open Firmware. This comes in
37 | several flavors:
38 |
39 | - IBM PowerVM servers use SLOF (SlimLine Open Firmware)
40 | - Virtual machines in `qemu` by default use SLOF
41 | - Apple hardware uses Apple's version of OF
42 |
43 | Open Firmware based machines always use some kind of bootstrap partition. The
44 | bootstrap partition contains the first stage bootloader executable - this is
45 | usually GRUB. The executable is just plain ELF.
46 |
47 | The bootstrap partition is generally small, and **is not `/boot`**. The first
48 | stage bootloader size is at most a few hundred kilobytes in general, unless
49 | you manually install a full GRUB image, which may be larger (this is not
50 | necessary in general, other GRUB modules can be loaded from a filesystem).
51 |
52 | The rest of GRUB generally goes in `/boot/grub` which is either on your `/`
53 | partition or your `/boot` partition if you have one.
54 |
55 | **When using the installer, the bootstrap partition is what you should select
56 | when it asks you where to install the bootloader.**
57 |
58 | ### SLOF
59 |
60 | **Necessary partitions:**
61 |
62 | - `PowerPC PReP Boot` (bootstrap)
63 | - Root partition (`/`)
64 |
65 | On pSeries, virtual machines and so on, the default recommended choice is a
66 | MBR. On newer versions of SLOF, GPT will also work (and in virtual machines
67 | it does), but MBR is a safe choice.
68 |
69 | The bootstrap in SLOF is a special partition of type `PowerPC PReP Boot`.
70 | Make it around 1 megabyte; this should be generous. This partition is never
71 | mounted and does not contain a mountable filesystem.
72 |
73 | Example:
74 |
75 | ```
76 | # fdisk /dev/sdX
77 | o # MBR, g for GPT
78 | n # new partition for PReP boot; make it 1 megabyte
79 | t # change partition type to PowerPC PReP boot
80 | n # new partition for /
81 | a # set first partition bootable
82 | w # write changes and quit
83 | ```
84 |
85 | The partition type number for `PowerPC PReP boot` should be `7` for GPT and
86 | `41` for MBR.
87 |
88 | ### PowerPC Macs
89 |
90 | **Necessary partitions:**
91 |
92 | - `Apple_Bootstrap` (bootstrap)
93 | - Root partition (`/`)
94 |
95 | Macs use APM (Apple Partition Map), at least for booting. The actual `/`
96 | partition can be on anything Linux supports.
97 |
98 | You can use `pmac-fdisk` for APM partitioning. Standard `fdisk` does not
99 | support it.
100 |
101 | **Note that partitioning has nothing to do with filesystems present.**
102 | Partitioning will only ensure that you will have the partitions with correct
103 | types available. Do not get confused by partition types like `Apple_HFS`;
104 | that is unrelated to the filesystem in the partition. You will format your
105 | filesystems once everything is partitioned correctly.
106 |
107 | You will need at least one partition on your APM, the bootstrap partition,
108 | which will be used by OpenFirmware to invoke the bootloader. The actual OS
109 | can be anywhere that GRUB can use. In an APM-only setup, your partitioning
110 | will look for example like this:
111 |
112 | | Device | Type | Name | Size | System |
113 | | --------- | ------------------- | --------- | ---- | ------------------ |
114 | | /dev/sdX1 | Apple_partition_map | Apple | - | Partition map |
115 | | /dev/sdX2 | Apple_Bootstrap | bootstrap | 800k | NewWorld bootblock |
116 | | /dev/sdX3 | Apple_UNIX_SVR2 | rootfs | any | Linux native |
117 | | /dev/sdX4 | Apple_UNIX_SVR2 | swap | any | Linux swap |
118 |
119 | You can create it for example like this:
120 |
121 | ```
122 | # pmac-fdisk /dev/sdX
123 | i # init partition table, wipes all data
124 | b 2p # bootstrap partition
125 | c 3p 120G rootfs # root filesystem (/)
126 | c 4p 4p swap # swap partition, all unused space
127 | w
128 | q
129 | ```
130 |
131 | **This is only for clean installations! It will wipe anything else present
132 | on the drive. If you don't want that, read below.**
133 |
134 | In an APM, the first partition is always automatic, being the APM itself.
135 |
136 | The `b ` command in `pmac-fdisk` is functionally equivalent to something
137 | like `C 800k bootstrap Apple_Bootstrap`.
138 |
139 | The bootstrap partition contains a legacy HFS filesystem when installed, but
140 | the installer takes care of correctly formatting it and you should never worry
141 | about doing that manually.
142 |
143 | #### Dual or multiboot
144 |
145 | If you want to preserve your existing system(s) and multi-boot the computer, you
146 | will probably not want to reinitialize your partition layout.
147 |
148 | In that case, you will need to look if you have free space (should be marked
149 | `Apple_Free` when you print out the partition table in `pmac-fdisk`). If you do,
150 | everything is good and you can just create a new bootstrap partition somewhere.
151 | If you don't have available unused space, you will need to delete some other
152 | partition, or shrink some existing filesystem to make more free space.
153 |
154 | On installations with OS X, it seems to be a common occurence that there are
155 | unused `Apple_Free` spaces sized about 128MB scattered around the disk. If that
156 | is the case, that is a good place to make your bootstrap partition. OS X does not
157 | need anything other than its own HFS+ partition, which is blessed and acts as its
158 | own bootstrap.
159 |
160 | Generally, it does not matter how the disk is layouted, as long as you have a
161 | bootstrap partition somewhere and then another partition or a few for your rootfs
162 | and possibly other things.
163 |
164 | As an example, if you have an existing layout like this:
165 |
166 | | Device | Type | Name | Size | System |
167 | | --------- | ------------------- | --------- | ---- | ------------------ |
168 | | /dev/sdX1 | Apple_partition_map | Apple | - | Partition map |
169 | | /dev/sdX2 | Apple_Free | | 128M | Free space |
170 | | /dev/sdX3 | Apple_HFS | OS X | 100G | HFS |
171 | | /dev/sdX4 | Apple_Free | | 128M | Free space |
172 | | /dev/sdX5 | Apple_HFS | empty | 50G | HFS |
173 | | /dev/sdX6 | Apple_Free | | 8k | Free space |
174 |
175 | In this context, `sdX3` is OS X, and `sdX5` is an empty HFS+ formatted partition
176 | you want to install Void on. `sdX2` and `sdX4` are just unused gaps, as is `sdX6`.
177 |
178 | You'd do something like this:
179 |
180 | ```
181 | # pmac-fdisk /dev/sdX
182 | b 2p # bootstrap partition, could also be 4p
183 | d 5p # delete the empty Apple_HFS
184 | c 4p 46G rootfs # root filesystem (/)
185 | c 5p 5p swap # remaining (4G) unused space as swap
186 | w
187 | q
188 | ```
189 |
190 | Note how the rootfs is `4p`; this is because deleting a partition inbetween two
191 | free spaces merges them all together, so `sdX4`, `sdX5` and `sdX6` will become
192 | just `sdX4`.
193 |
194 | Other configurations will need equivalent changes.
195 |
--------------------------------------------------------------------------------
/src/installation/manual.md:
--------------------------------------------------------------------------------
1 | # Manual installation
2 |
3 | If the installer doesn't suffice for you, you can also install the system
4 | manually. For that, you will need a working Linux system on the hardware,
5 | which means a Void live image, a live image of any other distro, or some
6 | other environment.
7 |
8 | ## Preparation
9 |
10 | You will need the following:
11 |
12 | 1. A Linux environment
13 | 2. A static binary copy of the `xbps` package manager, available at
14 | - not needed on a Void system
15 |
16 | Don't worry about the archives being marked `musl`, these work the same on
17 | `glibc` as well. The key point here is that the binaries are statically linked,
18 | so they will work on any distribution/environment regardless of the software
19 | packages you have. **You just need to get the right archive for the endianness
20 | you want.**
21 |
22 | ## Booting and setting up environment
23 |
24 | Boot your Linux removable media. If you don't know how to, follow the
25 | [boot instructions](./live-images/booting.md).
26 |
27 | If the environment is not Void, grab your static `xbps` copy.
28 |
29 | ```
30 | # wget https://repo.voidlinux-ppc.org/static/xbps-static-0.59_5.ppc64le-musl.tar.xz
31 | ```
32 |
33 | or:
34 |
35 | ```
36 | # wget https://repo.voidlinux-ppc.org/static/xbps-static-0.59_5.ppc64-musl.tar.xz
37 | ```
38 |
39 | or:
40 |
41 | ```
42 | # wget https://repo.voidlinux-ppc.org/static/xbps-static-0.59_5.ppc-musl.tar.xz
43 | ```
44 |
45 | and then:
46 |
47 | ```
48 | # mkdir sxbps && cd sxbps
49 | # tar xvf ../xbps-static*.tar.xz
50 | ```
51 |
52 | You don't need most of the binaries, the one you are interested in is
53 | `xbps-install.static`, located in `usr/bin`.
54 |
55 | **Also, everything mentioned in this guide should be run as root.**
56 |
57 | ### Time
58 |
59 | The time may be set incorrectly, especially on old Macs with bad batteries or
60 | in VMs. Use the `date` command to set it to at least the correct day.
61 |
62 | ### Setting up the target drive
63 |
64 | See the [Partitioning Notes](./live-images/partitions.md) for more details about
65 | partitioning your disk.
66 |
67 | Once you have partitioned your disk, format the `/` and mount it:
68 |
69 | ```
70 | # mkfs.ext4 /dev/sdXN
71 | ```
72 |
73 | Now we have a target filesystem at `/dev/sdXN`. Mount it:
74 |
75 | ```
76 | $ mkdir -p /media/rootfs
77 | $ mount /dev/sdXN /media/rootfs
78 | ```
79 |
80 | ## Installing initial system
81 |
82 | Let's assume we have a target rootfs partition mounted at `/media/rootfs`, as
83 | set up in the section above. Change your current directory to the `usr/bin`
84 | location where you extracted the static `xbps` archive, so that
85 | `xbps-install.static` is present in the current directory.
86 |
87 | Then proceed to install a minimal system. Again, anything `# foo` is a comment.
88 |
89 | ```
90 | # export XBPS_ARCH=ppc64le
91 | # ./xbps-install.static -R https://repo.voidlinux-ppc.org/current -r /media/rootfs -S base-voidstrap
92 | ```
93 |
94 | This will get a minimal system installed. Alter `XBPS_ARCH` as needed, for
95 | example for 32-bit `musl` it will be `ppc-musl`. We're not installing a full
96 | system yet, as we're not sure about the outside environment's software selection.
97 | The smaller the system is, the less likely it is to result in a failure.
98 |
99 | Now we will need to set up the target so that we can chroot into it.
100 |
101 | ```
102 | # cp /etc/resolv.conf /media/rootfs/etc
103 | # cp /etc/hosts /media/rootfs/etc
104 | # mount -t devtmpfs none /media/rootfs/dev
105 | # mount -t proc none /media/rootfs/proc
106 | # mount -t sysfs none /media/rootfs/sys
107 | ```
108 |
109 | If the `dev`, `proc` and `sys` directories do not exist in the target for some
110 | reason, create them. This is a sign of a failed configuration step, if the
111 | output of `xbps-install` doesn't show any errors, you should probably be fine.
112 |
113 | Now is time to switch to the target system and install the rest of it.
114 |
115 | ```
116 | # chroot /media/rootfs
117 | ```
118 |
119 | If the configuration failed for whatever reason, reconfigure the installed
120 | packages. You can most likely do this anyway, it will not do any harm, but it
121 | should not be necessary if the initial system installation did not fail.
122 |
123 | ```
124 | # xbps-reconfigure -f base-files
125 | # xbps-reconfigure -f -a
126 | ```
127 |
128 | ## Configuring the system
129 |
130 | We can proceed to install everything else.
131 |
132 | ```
133 | # update-ca-certificates
134 | # xbps-install -S
135 | # xbps-install base-system
136 | ```
137 |
138 | For glibc targets, it is necessary to enable a locale. The list is in
139 | `/etc/default/libc-locales`. You then need to reconfigure the appropriate
140 | package. For example:
141 |
142 | ```
143 | # sed -i 's/#en_US.UTF-8/en_US.UTF-8/' /etc/default/libc-locales
144 | # xbps-reconfigure -f glibc-locales
145 | # echo 'LANG=en_US.UTF-8' > /etc/locale.conf
146 | ```
147 |
148 | You also need to set a timezone and a hostname.
149 |
150 | ```
151 | # echo 'TIMEZONE="Europe/Prague"' >> /etc/rc.conf
152 | # echo foo > /etc/hostname
153 | ```
154 |
155 | You need to set the root password, otherwise you will not be able to log in in
156 | the target system.
157 |
158 | ```
159 | # passwd root
160 | ```
161 |
162 | Finally, enable some services by default.
163 |
164 | ```
165 | # ln -s /etc/sv/dhcpcd /etc/runit/runsvdir/default/
166 | # ln -s /etc/sv/sshd /etc/runit/runsvdir/default/
167 | ```
168 |
169 | You need `dhcpcd` for internet access (it's set up for DHCP out of box, can be
170 | configured for static IP) and `sshd` is optional. You can pre-enable any other
171 | services in `/etc/sv` the same way.
172 |
173 | ## Bootloader setup
174 |
175 | ### OpenPOWER
176 |
177 | As OpenPOWER systems use Petitboot, which is embedded in the firmware, there is
178 | very little you have to do. Only a few things:
179 |
180 | ```
181 | # xbps-install grub-utils
182 | # mkdir -p /boot/grub
183 | ```
184 |
185 | We only install the utils, as we'll be using those to generate a `GRUB`
186 | configuration file, which Petitboot can read and parse. Edit `/etc/default/grub`
187 | to update your kernel commandline. It is also a good idea to add the following line:
188 |
189 | ```
190 | GRUB_DISABLE_OS_PROBER=true
191 | ```
192 |
193 | This drastically reduces the time needed to generate the configuration file,
194 | and `os-prober` is kinda useless on Petitboot anyway as it scans every storage
195 | medium separately.
196 |
197 | ```
198 | # update-grub
199 | ```
200 |
201 | ### PowerPC Macs
202 |
203 | We will need to install the OpenFirmware bootloader:
204 |
205 | ```
206 | # xbps-install grub-utils grub-powerpc-ieee1275
207 | ```
208 |
209 | Also utilities to deal with HFS:
210 |
211 | ```
212 | # xbps-install hfsutils hfsprogs
213 | ```
214 |
215 | Let's assume the bootstrap partition is `/dev/sdXM`. Create a mountpoint for
216 | the bootstrap partition, format it and mount it:
217 |
218 | ```
219 | # mkdir -p /media/bootstrap
220 | # dd if=/dev/zero of=/dev/sdXM bs=512
221 | # hformat -l bootstrap /dev/sdXM
222 | # mount -t hfs /dev/sdXM /media/bootstrap
223 | ```
224 |
225 | And proceed to install the bootloader, then unmount the bootstrap partition:
226 |
227 | ```
228 | # grub-install --macppc-directory=/media/bootstrap /dev/sdXM
229 | # umount /media/bootstrap
230 | # rmdir /media/bootstrap
231 | ```
232 |
233 | Unfortunately, that's not all you need to do. You still need to bless the
234 | directory with the bootloader and set up the file type for the boot script:
235 |
236 | ```
237 | # hmount /dev/sdXM
238 | # hattrib -t tbxi -c UNIX :System:Library:CoreServices:BootX
239 | # hattrib -b :System:Library:CoreServices
240 | # humount
241 | ```
242 |
243 | Finally, generate the configuration file:
244 |
245 | ```
246 | # update-grub
247 | ```
248 |
249 | It is also recommended to uncomment the following line in `/etc/default/grub`:
250 |
251 | ```
252 | GRUB_TERMINAL_OUTPUT=console
253 | ```
254 |
255 | and then run `update-grub` again. This is necessary because graphical GRUB
256 | is very slow on Macs and in virtual machines it will not work at all. You can
257 | also add `GRUB_DISABLE_OS_PROBER=true` to prevent `update-grub` from scanning
258 | other drives, which speeds it up considerably.
259 |
260 | ### Other OpenFirmware
261 |
262 | We will need to install the OpenFirmware bootloader:
263 |
264 | ```
265 | # xbps-install grub-utils grub-powerpc-ieee1275
266 | ```
267 |
268 | Then we will need to install the bootloader into the `PowerPC PReP boot`
269 | partition, with some files going to `/boot/grub`. That's easy:
270 |
271 | ```
272 | # grub-install --boot-directory=/boot /dev/sda1 # must point it to the PReP partition
273 | # update-grub
274 | ```
275 |
276 | Before doing `update-grub`, maybe tweak your `/etc/default/grub`, see the
277 | OpenPOWER section.
278 |
279 | ## Booting
280 |
281 | A system set up like this should be bootable. For usage, follow the Void Linux
282 | handbook: https://docs.voidlinux.org/
283 |
--------------------------------------------------------------------------------
/src/configuration/virtualization.md:
--------------------------------------------------------------------------------
1 | # Virtualization
2 |
3 | In general, virtualization works the same as on any other POWER distro. You
4 | can use either `qemu` (with or without KVM) or some frontend such as `libvirt`.
5 |
6 | This will not cover usage of the virtualization tools, as you can easily find
7 | that elsewhere. However, it will cover quirks specific to Void, which are
8 | generally in KVM.
9 |
10 | ## KVM
11 |
12 | There are two methods to get KVM on POWER. These are:
13 |
14 | 1) `kvm_hv`
15 | 2) `kvm_pr`
16 |
17 | They have matching modules in the kernel.
18 |
19 | The `kvm_hv` method is the recommended way. It is the fastest, matching bare
20 | metal performance; however, it can only virtualize at most one generation
21 | older CPU. For example on POWER9, you can virtualize POWER9 and POWER8 using
22 | this method. It is also only available on modern machines (POWER7 and later).
23 | The endianness (and page size, to a degree) of the guest does not have to match.
24 |
25 | The `kvm_pr` (PRoblem State) is the older method that runs entirely at user
26 | level. This has the advantage that you can use it to emulate any POWER or
27 | PowerPC CPU; it can emulate unsupported instructions and so on. However,
28 | it is also quite a bit slower, and requires the host to be running in
29 | HPT mode (Radix is not supported) - this has compatibility implications.
30 | The page size of the guest does not have to match, but it will nearly always
31 | be 4 KiB.
32 |
33 | ### Compatibility summary
34 |
35 | This is a summary of everything written below, to give you an idea what
36 | can and can't run. Read the detailed sections below for more information.
37 | Bold are possible default Void configurations.
38 |
39 | - **Radix host, 4 KiB pages** (Void default on POWER9 and newer):
40 | - Radix guest, 64 KiB pages (HV)
41 | - Radix guest, 4 KiB pages (HV)
42 | - HPT guest, 4 KiB pages (HV)
43 | - **HPT host, 4 KiB pages** (Void default on POWER8 and older):
44 | - HPT guest, 4 KiB pages
45 | - KVM PR
46 | - Radix host, 64 KiB pages:
47 | - Radix guest, 64 KiB pages (HV)
48 | - Radix guest, 4 KiB pages (HV)
49 | - HPT guest, 64 KiB pages (HV)
50 | - HPT guest, 4 KiB pages (HV)
51 | - HPT host, 64 KiB pages:
52 | - HPT guest, 64 KiB pages (HV)
53 | - HPT guest, 4 KiB pages (HV)
54 | - KVM PR
55 |
56 | Nested virtualization scenarios:
57 |
58 | - **Radix guest, 4 KiB pages** or 64 KiB pages:
59 | - Radix guest, 64 KiB pages (nested HV)
60 | - Radix guest, 4 KiB pages (nested HV)
61 | - **HPT guest, 4 KiB pages** or 64 KiB pages:
62 | - KVM PR
63 |
64 | ### Host system configuration
65 |
66 | Void uses kernels with 4 KiB page size. Other distributions generally use
67 | kernels with 64 KiB page size; the reason why is covered in our
68 | [FAQ](../faq/index.md#why-use-4-kib-page-kernels-instead-of-64-kib-like-other-distros).
69 |
70 | This, however, means there will be certain limitations, depending on your
71 | system configuration.
72 |
73 | #### POWER9 and newer (Radix, HPT)
74 |
75 | POWER9 machines (and newer) with a recent enough kernel (all that are provided
76 | by Void for `ppc64le`, and their big endian equivalents capable of booting
77 | on modern machines, which generally means 5.4 and newer - 4.19 big endian
78 | kernel can't boot on modern machines newer than POWER6) default to Radix MMU.
79 | These systems have a multilevel page table similar to other architectures.
80 |
81 | You can disable Radix MMU using the `disable_radix` kernel command line
82 | parameter. The only reason to do this is usually to use `kvm_pr`. If you do
83 | that, you will fall back to the traditional HPT (Hashed Page Table).
84 |
85 | If you want to check what you're running, use this command:
86 |
87 | ```
88 | $ grep MMU /proc/cpuinfo
89 | ```
90 |
91 | You will get either `Radix` or `Hash`.
92 |
93 | #### POWER8 and older (HPT)
94 |
95 | These machines only support HPT. This has compatibility implications, some
96 | of them with workarounds.
97 |
98 | ### KVM HV
99 |
100 | On supported hardware, this will usually be the default. You can make it
101 | explicit by specifying it as a part of your machine type in `qemu`, for
102 | example like `-machine pseries,accel=kvm,kvm-type=HV`.
103 |
104 | The `kvm_hv` module needs to be loaded, and `/dev/kvm` needs to have
105 | permissions set so your user can access it. Usually this is done by adding
106 | your user into the `kvm` group (and log out and in).
107 |
108 | #### Radix guests
109 |
110 | As long as your host system is also Radix, you can run Radix guests. Radix
111 | guests do not have any limitations (other than those of KVM HV itself).
112 | By default, KVM HV guests running on Radix hosts are always Radix capable,
113 | and a compatible kernel will boot in Radix mode.
114 |
115 | In general, this means it doesn't matter what page size the guest has. **You
116 | can boot kernels with either 4 KiB or 64 KiB page size on 4 KiB Radix hosts.**
117 |
118 | #### HPT guests
119 |
120 | HPT guests will work on either HPT or Radix host. Unlike Radix guests, HPT
121 | guests need to have their page size smaller or equal to the host page size.
122 | **That means default Void kernels can only run HPT guests with 4 KiB pages.**
123 |
124 | #### Configuring qemu for Radix guests
125 |
126 | As a guest kernel can boot in either Radix or HPT mode, qemu cannot know ahead
127 | of time in which mode it will run.
128 |
129 | With the default `-machine pseries` (and any `pseries` of version `3.x` and
130 | newer), you will get an error like this by default on Void:
131 |
132 | ```
133 | qemu-system-ppc64: Can't support 64 kiB guest pages with 4 kiB host pages with this KVM implementation
134 | ```
135 |
136 | This can be fixed easily. All you have to do is restrict the maximum page size
137 | for HPT mode:
138 |
139 | ```
140 | -machine pseries,cap-hpt-max-page-size=4096
141 | ```
142 |
143 | Your Radix guests will then boot fine.
144 |
145 | You can also use an older machine type. With something like `-machine pseries-2.11`,
146 | these guests will boot out of box.
147 |
148 | #### Configuring qemu for HPT guests
149 |
150 | HPT guests need to have their page size be either smaller or matching with the
151 | host. **That means Void will by default not be able to boot 64 KiB page kernels
152 | with HPT.** There is no existing workaround for that. You can run other
153 | distributions as containers, or compile your own alternative kernels for them.
154 |
155 | Moreover, ever since [this patch](https://patchwork.kernel.org/patch/11393187)
156 | (`qemu` 5.0), HPT guests will not boot out of box. You will get an error like
157 | this instead:
158 |
159 | ```
160 | qemu-system-ppc64: Unable to create 2048MiB RMA (VRMA only allows 512MiB)
161 | ```
162 |
163 | The guest memory must be backed by larger than default pages. Fortunately, this
164 | can be worked around rather easily, by using the hugepages feature of the Linux
165 | kernel, which is one of the workarounds mentioned in the patch.
166 |
167 | To manage hugepage mappings, you can use the `hugeadm` utility (`glibc` only,
168 | package `libhugetlbfs-tools`). However, for simple configurations, you don't
169 | need any external tools.
170 |
171 | First check your default huge page size:
172 |
173 | ```
174 | $ grep Hugepagesize /proc/meminfo
175 | ```
176 |
177 | By default, it will usually be 2048 KiB. You can alter this by specifying
178 | `hugepagesz=` on kernel command line, you can also specify multiple of them,
179 | the first one will be the default (the choices are 2M, 16M, 1G, 16G). You can
180 | also use the kernel command line to pre-allocate a specific number of hugepages
181 | of each type.
182 |
183 | Let's go with the easy default, in this case 2 MiB (2048 KiB). Allocate enough
184 | hugepages to cover guest memory. Let's say, 2 GiB - this will be 1024 hugepages,
185 | plus some extra, let's say 1100.
186 |
187 | ```
188 | # sysctl vm.nr_hugepages=1100
189 | ```
190 |
191 | Or alternatively:
192 |
193 | ```
194 | # echo 1100 > /proc/sys/vm/nr_hugepages
195 | ```
196 |
197 | If `grep HugePages_Total /proc/meminfo` says the number you want (should be
198 | if you have enough memory), you can proceed to mount the backing and give it
199 | correct permissions:
200 |
201 | ```
202 | # mount -t hugetlbfs hugetlbfs /dev/hugepages
203 | # chown root:kvm /dev/hugepages
204 | # chmod 1770 /dev/hugepages
205 | ```
206 |
207 | Later you can add this to `fstab`. The `fstab` line for that would be something
208 | like `hugetlbfs /dev/hugepages hugetlbfs mode=01770,gid= 0 0`.
209 |
210 | You can also use the `pagesize=` option to mount hugepages of a specific size.
211 |
212 | Either way, once you have mounted your backing somehow, you can easily pass
213 | it to `qemu`. On 4 KiB page hosts like Void, you will need to restrict the
214 | guest HPT size, otherwise you will get an error like this, even on say
215 | `pseries-2.11`:
216 |
217 | ```
218 | qemu-system-ppc64: KVM can't supply 64kiB CI pages, which guest expects
219 | ```
220 |
221 | Overall, the command will look like this, for example:
222 |
223 | ```
224 | $ qemu-system-ppc64 -m 2048 -machine pseries,cap-hpt-max-page-size=4096 -mem-path /dev/hugepages ...
225 | ```
226 |
227 | That's it - the guest should boot now.
228 |
229 | #### Nested virtualization with KVM HV
230 |
231 | It is possible to nest KVM HV virtual machines. However, this only works in
232 | Radix mode, and you can only have nested Radix guests, i.e. HPT must not appear
233 | anywhere in the chain. You also need to enable it using yet another capability
234 | flag (`cap-nested-hv`), for example:
235 |
236 | ```
237 | -machine pseries,cap-hpt-max-page-size=4096,cap-nested-hv=on
238 | ```
239 |
240 | ### KVM PR
241 |
242 | To use KVM PR, your host must run as HPT. You can then use something like
243 | `-machine pseries,accel=kvm,kvm-type=PR` to enable it. The `kvm_pr` kernel
244 | module must be loaded. You can use PR in parallel with HV.
245 |
246 | If you don't want to lose Radix and still want to use KVM PR, there's a trick
247 | you can use. Simply start your host in Radix mode, then boot a HPT guest virtual
248 | machine and run your KVM-PR virtual machine nested in that.
249 |
--------------------------------------------------------------------------------
/src/configuration/graphics.md:
--------------------------------------------------------------------------------
1 | # Graphics
2 |
3 | The goal of this page is to track compatibility with graphics hardware as well
4 | as provide information on how to configure some specifics.
5 |
6 | ## ATI/AMD graphics cards
7 |
8 | In general this comes down to generation and the port you are running.
9 |
10 | On older kernels, all AGP Radeon cards are affected by random hangs caused by
11 | AGP GART code. You will need to provide `radeon.agpmode=-1` on kernel command
12 | line to work around the issue. This is not necessary at least on kernels 4.19
13 | and newer.
14 |
15 | ### Rage, Rage Pro etc.
16 |
17 | **Interface:** PCI, AGP
18 | **OpenGL:** 1.2
19 | **Works:** Console, X11 untested but may work
20 | **KMS:** No
21 | **3D acceleration:** No
22 | **2D acceleration:** X11 (untested)
23 | **X11 driver:** `xf86-video-mach64`
24 | **Wayland:** Only compositors that support `fbdev`
25 |
26 | These models can generally be found in some old Macs. The framebuffer console
27 | is served by an `fbdev` driver, there is no modern KMS driver.
28 |
29 | In X11, these GPUs are served by the `xf86-video-mach64` driver. It will not
30 | work out of box - you need to correctly set up your modelines in `xorg.conf.d`
31 | to make it work.
32 |
33 | ### Rage 128 series
34 |
35 | **Interface:** PCI, AGP
36 | **OpenGL:** 1.2
37 | **Works:** Console, X11 untested but may work
38 | **KMS:** No
39 | **3D acceleration:** No
40 | **2D acceleration:** X11 (untested)
41 | **X11 driver:** `xf86-video-r128`, `xf86-video-fbdev`
42 | **Wayland:** Only compositors that support `fbdev`
43 |
44 | Similar things as above apply.
45 |
46 | ### Radeon 7000 series
47 |
48 | **Interface:** PCI, AGP
49 | **OpenGL:** 1.3
50 | **Works:** Yes, AGP may have issues
51 | **KMS:** Yes
52 | **3D acceleration:** Yes
53 | **2D acceleration:** X11
54 | **X11 driver:** `xf86-video-ati`
55 | **Wayland:** Only compositors that support `fbdev`
56 |
57 | These cards come up, but experience freezes shortly after boot, as far as
58 | has been confirmed. 3D acceleration is covered by Mesa. These cards only
59 | support fixed-function OpenGL, which means you can't use the modesetting
60 | driver or GLAMOR with them.
61 |
62 | ### Radeon 8000 series to 9250
63 |
64 | **Interface:** AGP
65 | **OpenGL:** 1.4
66 | **Works:** Yes, issues on `musl`
67 | **KMS:** Yes
68 | **3D acceleration:** Yes
69 | **2D acceleration:** X11
70 | **X11 driver:** `xf86-video-ati`
71 | **Wayland:** Only compositors that support `fbdev`
72 |
73 | These cards work, including 3D acceleration. However, on `musl` systems,
74 | OpenGL currently renders junk, and there is no known workaround other than
75 | using a `glibc` system.
76 |
77 | Since these cards do not support shaders, you can't use the modesetting driver
78 | or GLAMOR with them.
79 |
80 | ### Radeon 9500 and newer, X300 - X600, X1050
81 |
82 | **Interface:** AGP
83 | **OpenGL:** 2.0/2.1
84 | **Works:** With issues
85 | **KMS:** Yes
86 | **3D acceleration:** Yes
87 | **2D acceleration:** X11, GLAMOR
88 | **X11 driver:** `xf86-video-ati`, `modesetting`
89 | **Wayland:** Yes
90 |
91 | These cards seemingly work, but experience system hangs when running complex
92 | OpenGL applications (the issue manifests e.g. when loading a map in a 3D
93 | game).
94 |
95 | These cards support shaders and generally render simple things (e.g. `glxgears`)
96 | correctly, including on `musl` systems. Being OpenGL 2.1 capable hardware, they
97 | can run accelerated Wayland and can use the `modesetting` driver and GLAMOR in
98 | X11.
99 |
100 | In general, things are good enough for desktop work and video, without stability
101 | issues. Running games results in those hangs, though.
102 |
103 | ### Radeon X700 - X850, X12xx
104 |
105 | **Interface:** AGP, PCI Express
106 | **OpenGL:** 2.0/2.1
107 | **Works:** Yes (untested)
108 | **KMS:** Yes
109 | **3D acceleration:** Yes
110 | **2D acceleration:** X11, GLAMOR
111 | **X11 driver:** `xf86-video-ati`, `modesetting`
112 | **Wayland:** Yes
113 |
114 | These cards should work but haven't been widely tested.
115 |
116 | ### Radeon X700 - X850, X12xx
117 |
118 | **Interface:** AGP, PCI Express
119 | **OpenGL:** 2.0/2.1
120 | **Works:** Yes (untested)
121 | **KMS:** Yes
122 | **3D acceleration:** Yes
123 | **2D acceleration:** X11, GLAMOR
124 | **X11 driver:** `xf86-video-ati`, `modesetting`
125 | **Wayland:** Yes
126 |
127 | These cards should work but haven't been widely tested.
128 |
129 | ### Radeon X1300 - X19xx
130 |
131 | **Interface:** AGP, PCI Express
132 | **OpenGL:** 2.0/2.1
133 | **Works:** Depending on model
134 | **KMS:** Yes
135 | **3D acceleration:** Yes
136 | **2D acceleration:** X11, GLAMOR
137 | **X11 driver:** `xf86-video-ati`, `modesetting`
138 | **Wayland:** Yes
139 |
140 | These cards should technically work.
141 |
142 | However, on Macs, at least certain models use a reduced video BIOS, where a
143 | part of it is loaded by the OS afterwards. This prevents function in Linux.
144 | No workaround is currently known to the project.
145 |
146 | PC versions of the cards should work at least on G4 Macs and so on once booted
147 | into Linux.
148 |
149 | ### Radeon HD 2xxx - 4xxx
150 |
151 | **Interface:** AGP, PCI Express
152 | **OpenGL:** 3.3 (3.2 on big endian)
153 | **Works:** Yes
154 | **KMS:** Yes
155 | **3D acceleration:** Yes
156 | **2D acceleration:** X11, GLAMOR
157 | **X11 driver:** `xf86-video-ati`, `modesetting`
158 | **Wayland:** Yes
159 |
160 | These cards work. You may experience driver bugs on big endian systems.
161 |
162 | ### Radeon HD 5xxx, 6xxx, 7450, 8450, R5 230/235 etc.
163 |
164 | **Interface:** PCI Express
165 | **OpenGL:** 4.4/4.5 (3.2 on big endian)
166 | **Works:** Yes
167 | **KMS:** Yes
168 | **3D acceleration:** Yes
169 | **2D acceleration:** X11, GLAMOR
170 | **X11 driver:** `xf86-video-ati`, `modesetting`
171 | **Wayland:** Yes
172 |
173 | These cards work. You may experience driver bugs on big endian systems. You
174 | will also not be able to utilize OpenGL beyond 3.2 on big endian systems.
175 |
176 | These are the last cards that function on big endian systems in general.
177 | GCN cards currently have broken kernel drivers in all kernels.
178 |
179 | ### Radeon GCN (HD 7000/8000 series, R/RX/WX series etc.)
180 |
181 | **Interface:** PCI Express
182 | **OpenGL:** 4.6
183 | **Works:** Little endian
184 | **KMS:** Yes
185 | **3D acceleration:** Yes
186 | **2D acceleration:** X11, GLAMOR
187 | **X11 driver:** `xf86-video-amdgpu`, `modesetting`
188 | **Wayland:** Yes
189 |
190 | This includes everything up to Vega. These cards only work on little endian
191 | systems due to `amdgpu` kernel driver requirement.
192 |
193 | ### Radeon RDNA (Navi)
194 |
195 | **Interface:** PCI Express
196 | **OpenGL:** 4.6
197 | **Works:** Little endian and kernel 5.4+
198 | **KMS:** Yes
199 | **3D acceleration:** Yes
200 | **2D acceleration:** X11, GLAMOR
201 | **X11 driver:** `xf86-video-amdgpu`, `modesetting`
202 | **Wayland:** Yes
203 |
204 | In Void, AMD Navi cards (RX 5xxx etc.) work starting with kernel 5.4. In
205 | upstream (vanilla) kernel you will need at least 5.6.
206 |
207 | ## NVIDIA graphics cards
208 |
209 | Support for NVIDIA cards is generally significantly more limited and you will
210 | need to use the `nouveau` driver.
211 |
212 | ### Pre-GeForce (RIVA etc.)
213 |
214 | **Interface:** PCI, AGP
215 | **OpenGL:** 1.2
216 | **Works:** Console, X11 may work with `fbdev`
217 | **KMS:** No
218 | **3D acceleration:** No
219 | **2D acceleration:** No
220 | **X11 driver:** `xf86-video-fbdev`
221 | **Wayland:** Only compositors that support `fbdev`
222 |
223 | The framebuffer console is served by an `fbdev` driver, there is no modern KMS
224 | driver.
225 |
226 | There is no 3D acceleration support, you may still be able to get X11 to work
227 | with `xf86-video-fbdev`.
228 |
229 | ### GeForce 2 and older, 4 MX
230 |
231 | **Interface:** AGP
232 | **OpenGL:** 1.3
233 | **Works:** Issues
234 | **KMS:** Yes
235 | **3D acceleration:** Yes
236 | **2D acceleration:** X11
237 | **X11 driver:** `xf86-video-nouveau`
238 | **Wayland:** Only compositors that support `fbdev`
239 |
240 | At least GeForce 2 MX only comes up in kernel 4.4, with newer kernels failing
241 | to initialize the card. It is not known whether this affects GeForce 3 and 4 MX
242 | series as well.
243 |
244 | X11 will not come up on GeForce 2 MX. There is some issue with the video outputs
245 | disappearing when scanning EDID.
246 |
247 | ### GeForce 3 and 4
248 |
249 | **Interface:** AGP
250 | **OpenGL:** 1.3
251 | **Works:** Unknown
252 | **KMS:** Yes
253 | **3D acceleration:** Yes
254 | **2D acceleration:** X11
255 | **X11 driver:** `xf86-video-nouveau`
256 | **Wayland:** Only compositors that support `fbdev`
257 |
258 | It is currently unknown whether these cards work.
259 |
260 | ### GeForce FX
261 |
262 | **Interface:** AGP
263 | **OpenGL:** 2.1
264 | **Works:** Unknown
265 | **KMS:** Yes
266 | **3D acceleration:** Yes
267 | **2D acceleration:** X11, GLAMOR
268 | **X11 driver:** `xf86-video-nouveau`
269 | **Wayland:** Yes
270 |
271 | It is currently unknown whether these cards work.
272 |
273 | ### GeForce 6xxx, 7xxx
274 |
275 | **Interface:** AGP, PCI Express
276 | **OpenGL:** 2.1
277 | **Works:** Yes
278 | **KMS:** Yes
279 | **3D acceleration:** Yes
280 | **2D acceleration:** X11, GLAMOR
281 | **X11 driver:** `xf86-video-nouveau`
282 | **Wayland:** Yes
283 |
284 | These cards work, but suffer from `nouveau` bugs, which may cause broken
285 | rendering in various applications. Some video pixel formats may also be
286 | broken. In general it is good enough for video and accelerated desktop.
287 |
288 | ### GeForce 8xxx, 9xxx, 200 series
289 |
290 | **Interface:** PCI Express
291 | **OpenGL:** 3.3
292 | **Works:** Little endian
293 | **KMS:** Yes
294 | **3D acceleration:** Yes
295 | **2D acceleration:** X11, GLAMOR
296 | **X11 driver:** `xf86-video-nouveau`
297 | **Wayland:** Yes
298 |
299 | These cards should work with `nouveau` at least on little endian systems.
300 |
301 | ### GeForce 400 and newer series
302 |
303 | **Interface:** PCI Express
304 | **OpenGL:** 4.6
305 | **Works:** Little endian, when supported by `nouveau`
306 | **KMS:** Yes
307 | **3D acceleration:** Yes
308 | **2D acceleration:** X11, GLAMOR
309 | **X11 driver:** `xf86-video-nouveau`
310 | **Wayland:** Yes
311 |
312 | These cards should work with `nouveau` at least on little endian systems.
313 | Exact hardware support is subject to `nouveau` support (e.g. reclocking on
314 | new cards may not work and so on).
315 |
--------------------------------------------------------------------------------
/src/faq/index.md:
--------------------------------------------------------------------------------
1 | # FAQ
2 |
3 | This FAQ attempts to cover assorted questions not covered in the other chapters.
4 |
5 | ## Table of Contents
6 |
7 |
8 |
9 | ## General
10 |
11 | ### Will multilib be supported?
12 |
13 | No, it is not planned. However, the compiler is built as bi-arch, which
14 | means `-m32` works, and you can have it emit 32-bit code. This is useful for
15 | low level stuff (e.g. GRUB, which needs to emit 32-bit big endian code
16 | independent on a libc) while not burdening the higher level infrastructure.
17 | If you really need to build or use 32-bit software, use a 32-bit chroot, it
18 | should work just fine.
19 |
20 | ## Boot
21 |
22 | ### Why is yaboot not supported?
23 |
24 | The `yaboot` project is deprecated. Void uses `GRUB`, which covers pretty much
25 | all of the use cases plus more (that is, on systems that don't use `petitboot`,
26 | but there it uses at least the GRUB configuration file).
27 |
28 | ### Live USB boot fails in dracut (root mount)
29 |
30 | If you get an issue like this (and GRUB has loaded fine):
31 |
32 | ```
33 | mount: /run/initramfs/live: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.
34 | dracut: FATAL: Failed to mount block device of live image
35 | dracut: Refusing to continue
36 | ```
37 |
38 | you might be dealing with a backup partition table of some system that was
39 | previously on that USB stick overriding the new one. In that case, first do
40 | the following before `dd`ing your ISO image onto the USB stick:
41 |
42 | ```
43 | # wipefs -a /dev/sdN
44 | ```
45 |
46 | where `sdN` is your USB stick.
47 |
48 | ### GRUB raises 'error: unrecognized number'
49 |
50 | If your error looks like this:
51 |
52 | ```
53 | Welcome to GRUB!
54 |
55 | error: unrecognized number.
56 |
57 | Decrementer exception at $SRR0: ...
58 | ```
59 |
60 | You are most likely on an iBook/PowerBook with BootROM `4.8.7f1`. Since GRUB
61 | will fall back to OpenFirmware console, you can see the model and BootROM
62 | version before the console comes up.
63 |
64 | The issue also seems to affect at least some iMacs G5 and possibly other
65 | models (though you might not see a decrementer exception), so proceed anyway
66 | if you see the error, even if you don't have the model listed here.
67 |
68 | The problem is a firmware bug, which results in spurious data left in the MMU,
69 | which confuses GRUB during number parsing (it doesn't encounter a trailing
70 | zero like it should, continues parsing, finds junk and fails).
71 |
72 | The solution is to type this in the OpenFirmware console that comes up:
73 |
74 | ```
75 | dev /memory@0 100000 1000 do-unmap
76 | ```
77 |
78 | and reboot. GRUB should come up afterwards.
79 |
80 | It is possible that this issue may manifest in different ways as well, as there
81 | are multiple places in GRUB where this could potentially be a problem. So far
82 | this is the only one we've come across, though.
83 |
84 | ### SLOF machine (e.g. qemu/pseries) not booting after install (MBR)
85 |
86 | You might have forgotten to mark the PReP boot partition as bootable when
87 | partitioning. In that case, boot the live image again, open the drive with
88 | `cfdisk`, set the bootable flag, and save the changes. Your system should
89 | boot then.
90 |
91 | ## Installation
92 |
93 | ### Partition table does not refresh after pmac-fdisk
94 |
95 | This generally happens when reinitializing the partition table. The `pmac-fdisk`
96 | utility does not properly wipe the previous partition table. Therefore, run the
97 | following:
98 |
99 | ```
100 | # wipefs -a /dev/sdN
101 | ```
102 |
103 | where `sdN` is your target drive. Then initialize and partition the drive from
104 | scratch.
105 |
106 | You should not need this when modifying an existing APM (e.g. resizing partitions
107 | or creating new ones in free space).
108 |
109 | ## Kernel
110 |
111 | ### Why use 4 KiB page kernels instead of 64 KiB (like other distros)?
112 |
113 | There are multiple reasons:
114 |
115 | 1) 64 KiB pages are only supported starting with POWER8 and older archs will
116 | emulate them
117 | 2) Software is generally more compatible with 4 KiB, since other architectures
118 | use 4 KiB page size as well
119 | 3) On desktop/workstation oriented systems, 4 KiB will generally perform better
120 | thanks to finer granularity (which leads to lower fragmentation etc.)
121 | 4) The systems that benefit from larger kernel pages are mostly single-purpose
122 | servers with huge amounts of RAM, which Void does not primarily target
123 | (other distros primarily aim at servers)
124 | 5) Guard pages become viable again, without wasting virtual memory
125 | 6) Transparent hugepages mostly allow addressing scenarios which would benefit
126 | from bigger pages than default
127 |
128 | There are some drawbacks, which typically have workarounds, and have their own
129 | FAQ entries.
130 |
131 | ### Booting from Btrfs volumes on OpenPOWER (Talos 2 etc.)
132 |
133 | By default it is not possible to boot directly from a Btrfs volume on OpenPOWER
134 | systems because Btrfs volumes are tied to the page size of the kernel they were
135 | created on.
136 |
137 | Since the Skiroot kernel on OpenPOWER systems typically uses 64 KiB pages and
138 | Void kernels use 4kB pages, the firmware will not see the volume. Conversely,
139 | Void will not see Btrfs volumes created on 64kB page hosts, just like e.g.
140 | x86 systems won't see it.
141 |
142 | The same thing applies to big endian vs little endian systems - Btrfs is also
143 | tied to endianness.
144 |
145 | There have also been reports about higher resource usage and lower reliability
146 | with Btrfs volumes on 64 KiB page hosts.
147 |
148 | Workarounds include:
149 |
150 | 1) Use a separate `/boot` partition with a filesystem other than Btrfs
151 | 2) Compile your own kernel with 64 KiB pages
152 |
153 | ## Virtual Machines
154 |
155 | For things such as 4 KiB page virtualization troubles, we have an entire
156 | page (no pun intended) dedicated to it [here](../configuration/virtualization.md).
157 |
158 | ## Graphics
159 |
160 | Also see the [dedicated page](../configuration/graphics.md).
161 |
162 | ### Broken colors in ASpeed VGA on big endian
163 |
164 | This is a problem with the kernel `ast` driver. Since the fix appears
165 | to be non-trivial and there is no proper patch available, this is WONTFIX from
166 | our side. Either use a dedicated GPU (ideally PCIe, USB2 DisplayLink is known
167 | to work) or use little endian if you really need the `ast` to work properly.
168 |
169 | ### Rendering issues with Qt-based desktops (KDE, LXQt, ...) on big endian
170 |
171 | This may manifest as the panel or menus behaving strangely and so on.
172 |
173 | The workaround is to start the desktop with `QT_QUICK_BACKEND=software`
174 | exported. The cause here is some endianness related bug(s) in the default
175 | backend.
176 |
177 | **Note:** This should no longer be needed since the latest build of `qt5-5.14.2_2`
178 | in the repos, as the code has been patched to always use `software` on big endian
179 | by default (you can still override it back to the old default via the environment
180 | variable). This is not an upstream change, however.
181 |
182 | ### Rendering issues with WebKit on big endian
183 |
184 | Drivers on big endian are more buggy than usual, so with some cards you might
185 | be having rendering issues with accelerated compositing, which is on by default.
186 | Whether you are affected or not depends on the specific card. Old cards that do
187 | not support unified shaders are more likely to be affected.
188 |
189 | To use WebKit without accelerated compositing, export the following:
190 |
191 | ```
192 | export WEBKIT_DISABLE_COMPOSITING_MODE=1
193 | ```
194 |
195 | Then start the web browser of your choice again.
196 |
197 | ### System hangs shortly after boot/Xorg on older kernels (at least 4.4) and Radeon AGP
198 |
199 | You might have to append `radeon.agpmode=-1` to kernel command line to disable
200 | AGP GART. This has always been unstable on PowerPC and has been disabled in
201 | mainline kernel for at least 2 years, but older branches still have it.
202 |
203 | ### System hangs in complex OpenGL applications on late PowerBooks (Radeon 9600/9700)
204 |
205 | This is a known issue and there is currently no workaround available. It doesn't
206 | seem to be the AGP mode, and basic OpenGL works (e.g. `glxgears`, or menus in
207 | video games). This will be updated if something is found.
208 |
209 | ### Console is 800x600 rectangle on Mac Mini G4
210 |
211 | On Mac Mini G4, the console may by default display only on a portion of the
212 | screen. This is seemingly because there is an S-Video port connected and
213 | used by Linux by default.
214 |
215 | To work around this, edit `/etc/default/grub` and add the following parameter
216 | into `GRUB_CMDLINE_LINUX_DEFAULT`:
217 |
218 | ```
219 | video=SVIDEO-1:d
220 | ```
221 |
222 | If you run into the same problem on another machine, the output port name
223 | might be different. You can check by listing the contents of `/sys/class/drm`.
224 |
225 | You can also set the console video mode with something like:
226 |
227 | ```
228 | video=DVI-I-1:1280x1024@60
229 | ```
230 |
231 | You need to combine the two if you do.
232 |
233 | ### Xfce/Xfwm4 crashes on big endian
234 |
235 | This turns out to be a graphics driver issue. Xfce turned on their compositor by
236 | default in the 4.16 release, which now uses OpenGL, and that makes the issue show
237 | up; while we currently patch `xfwm4` to disable compositing on big endian out of
238 | box, you may still run into it if you manually enable it or if you caught a
239 | package where it was still enabled.
240 |
241 | To disable compositing from command line, you should be able to run something like:
242 |
243 | ```
244 | xfconf-query -c xfwm4 -p /general/use_compositing -t bool -s false
245 | ```
246 |
247 | Alternatively, you can start Xfce with `LIBGL_ALWAYS_SOFTWARE=1` exported in your
248 | environment, disable the compositor in GUI (Window Manager Tweaks) and restart with
249 | accelerated driver afterwards.
250 |
251 | If you want compositing on affected machines, you should still be able to use an
252 | alternative compositor such as `picom`, given proper configuration.
253 |
254 | ## Networking
255 |
256 | ### WiFi does not work on Apple machines (b43)
257 |
258 | See the [relevant section](../configuration/apple.md#wireless-networking).
259 |
260 | ### HTTPS does not work (e.g. repo sync)
261 |
262 | Your date/time may be set wrong (common trouble on Apple machines). Use `date`
263 | to check it. If that is the case, use this:
264 |
265 | ```
266 | # date -s "YYYY-MM-DD HH:mm:ss"
267 | ```
268 |
269 | Replace the letters with the current date and time. After that, it is recommended
270 | that you set up [NTP](../configuration/post-installation.md#ntp-time-syncing).
271 |
--------------------------------------------------------------------------------
/src/installation/live-images/booting.md:
--------------------------------------------------------------------------------
1 | # Booting
2 |
3 | This project is intended to boot on a variety of machines. They might all have
4 | a slightly different boot process, so describing that requires a somewhat more
5 | comprehensive document than a section in the installation instructions.
6 |
7 | ## Supported environments
8 |
9 | Generally, the live media support three types of environments primarily.
10 |
11 | 1) **Bare metal OpenPOWER (PowerNV)** - This includes machines such as Raptor
12 | Talos 2 (or Blackbird) and various IBM (and non-IBM) OpenPOWER hardware using
13 | the OPAL stack. These systems can boot `ppc64le` and `ppc64` media and use
14 | Petitboot+`kexec` as their bootloader of choice.
15 | 2) **Non-OpenPOWER IBM servers based of Slimline OpenFirmware (SLOF)** - This
16 | includes various IBM Power Systems (pSeries) that do not use the OpenPOWER
17 | stack. Their firmware of choice is SLOF, which is a variant of OpenFirmware.
18 | GRUB, present on the live media, is used as the bootloader. This ia also the
19 | default kind of firmware you will get in virtualized `qemu` environments by
20 | default, so it's important for KVM. They can run `ppc64le` for POWER8-and-newer
21 | based stuff as well as `ppc64` for all of them.
22 | 3) **NewWorld PowerPC Macs** - This includes various G3, G4 and G5 based 32-bit
23 | and 64-bit Apple hardware. Only NewWorld hardware is supported for the live
24 | media and installer (i.e. G3 Blue and White and newer, as well as all G4 and
25 | G5; the old Beige Macintoshes can't directly boot Linux). This hardware is
26 | based on Apple's variant of OpenFirmware. Therefore, GRUB from the live
27 | media is the bootloader. They can run `ppc64` images (for G5) and `ppc`
28 | images (for G3, G4).
29 |
30 | There may be more environments that should be able to boot. For example, the
31 | *IBM IntelliStation POWER 185* is an IBM workstation based on OpenFirmware and
32 | the PowerPC 970MP (IBM's variant of the G5) and has all the prerequisites for
33 | being able to boot Void. Therefore, it most likely does, but it's not tested,
34 | and may require workarounds (such as manually booting the GRUB image from the
35 | OpenFirmware console).
36 |
37 | ## Bare metal OpenPOWER
38 |
39 | Since the firmware of these systems is based on a small Linux system and it
40 | uses `kexec` as the boot mechanism, that makes booting the live media very simple.
41 |
42 | All you need to do is put the contents of the live image onto any storage media
43 | the firmware can read (optical media, USB sticks, etc.) and the Petitboot
44 | bootloader takes care of the rest.
45 |
46 | Remove the USB stick, then insert it into your OpenPOWER system, and wait for
47 | Petitboot to come up. The entries for live OS boot should show up. Proceed with
48 | installation or whatever else you need.
49 |
50 | ## SLOF (virtual machines, pSeries, etc)
51 |
52 | ### Virtual Machines
53 |
54 | In a virtual machine, just specify the ISO image as a `cdrom` or a `drive` and
55 | make `qemu` use it as the boot device. `GRUB` will automatically come up. Then
56 | proceed with installation and so on.
57 |
58 | ### IBM pSeries
59 |
60 | To boot on physical pSeries machine, you need to define a `cd` or `ud`
61 | device alias, since those machines doesn't seem to define it automatically.
62 |
63 | #### Using optical media
64 |
65 | If booting from optical media, we need to get the CD drive's OF path through
66 | the SMS menu:
67 |
68 | First, boot to the SMS menu (please check your machine documentation on how
69 | to do it).
70 |
71 | Then, go through those menu items:
72 | 1. Boot Options
73 | 2. Install/Boot Device
74 | 3. CD/DVD
75 | 4. List All Devices
76 | 5. Pick your CD drive here, for example it might be shown as
77 | `SATA CD-ROM (loc=U78A0.001.DNWKAM4-P2-D2)`.
78 | 6. Information
79 |
80 | In the Information page, there will be a string that looks like
81 | `/pci@XXXXXX/pciYYYY/sata/disk@ZZZZZZ`.
82 | That's the OF path of your CD drive. Copy it somewhere else, we'll use it to set
83 | up the `cd` device alias.
84 |
85 | Now, exit SMS and reboot to the OF prompt.
86 |
87 | On the prompt, create a device alias for `cd` using the path we got from SMS.
88 | ```
89 | 0 > devalias cd /pci@XXXXXX/pciYYYY/sata/disk@ZZZZZZ
90 | ```
91 |
92 | Print the alias listing again to check if it's correctly defined:
93 | ```
94 | 0 > devalias
95 | ...
96 | ...
97 | cd /pci@XXXXXX/pciYYYY/sata/disk@ZZZZZZ
98 | ```
99 |
100 | Now that we've defined the `cd` device alias, it's time to boot into GRUB:
101 | ```
102 | 0 > boot cd:,\boot\grub.img
103 | ```
104 |
105 | Now you can choose the menu item you want, boot into it and proceed with
106 | installation.
107 |
108 | #### Using a USB disk
109 |
110 | If booting from USB disk, you can boot directly to the OF prompt since it's
111 | possible get the USB disk's OF path from there.
112 |
113 | Once you get into the OF prompt, list the whole device tree:
114 | ```
115 | 0 > dev / ls
116 | ```
117 |
118 | It'll then list all the devices recognized by the firmware. For example here's
119 | a simplified listing on a Power 750:
120 | ```
121 | XXXXXXXXXXXX: ...
122 | XXXXXXXXXXXX: ...
123 | XXXXXXXXXXXX: ...
124 | XXXXXXXXXXXX: /pci@800000020000201
125 | XXXXXXXXXXXX: /usb@1
126 | XXXXXXXXXXXX: /...
127 | XXXXXXXXXXXX: /usb@1,1
128 | XXXXXXXXXXXX: /hub@1
129 | XXXXXXXXXXXX: /usb-scsi@1
130 | XXXXXXXXXXXX: /disk
131 | XXXXXXXXXXXX: /tape
132 | XXXXXXXXXXXX: /usb@1,2
133 | XXXXXXXXXXXX: /...
134 | XXXXXXXXXXXX: ...
135 | XXXXXXXXXXXX: ...
136 | XXXXXXXXXXXX: ...
137 | ```
138 | We can see that there's a USB disk `/disk` under `/usb-scsi@1`.
139 |
140 | Now, create a device alias for `ud` using that path. Of course, do adjust
141 | the command using the path from your own machine.
142 | ```
143 | 0 > devalias ud /pci@800000020000201/usb@1,1/hub@1/usb-scsi@1/disk
144 | ```
145 |
146 | Print the alias listing again to check if it's correctly defined:
147 | ```
148 | 0 > devalias
149 | ...
150 | ...
151 | ud /pci@800000020000201/usb@1,1/hub@1/usb-scsi@1/disk
152 | ```
153 |
154 | Now that we've defined the `ud` device alias, it's time to boot into GRUB:
155 | ```
156 | 0 > boot cd:,\boot\grub.img
157 | ```
158 |
159 | In GRUB, there's some adjustment to be made before we can boot successfully to
160 | the live environment when booting through a USB disk. Select the menu item you
161 | want, then press `E` to edit it. Now, do the following edits:
162 | 1. Delete the `insmod part_apple` line.
163 | 2. Delete the `search --label "VOID_LIVE"` line.
164 | 3. In the `linux` line, find the part that says `root=live:CDLABEL=VOID_LIVE`
165 | and change it into `root=live:LABEL=VOID_LIVE` (that is, remove the `CD`
166 | from `CDLABEL`).
167 |
168 | When you're done with the edits, press Ctrl-x to boot into the live environment
169 | and proceed with the installation.
170 |
171 | #### Additional notes
172 |
173 | Note that regardless of the method you choose, the live CD might take a long
174 | time (up to twenty minutes) to fully boot, so don't worry if the boot process
175 | appears to be stalling. Once installed, the slow booting problem seems to
176 | disappear, though.
177 |
178 | Also, on some machines, the main interactive console uses the `hvsi0` console,
179 | so you may need to tell the kernel to use it; edit the menu item you want to
180 | boot and append `console=hvsi0` to the `linux` line.
181 |
182 | (See also the [Serial Console](#serial-console) section)
183 |
184 | ## NewWorld PowerPC Macs
185 |
186 | If booting from optical media, this is straightforward; all you need to do is
187 | insert the media and boot from it in the usual manner (for example, using the
188 | boot device chooser).
189 |
190 | Booting from USB is also possible on *any* NewWorld Mac, but may be slightly
191 | more tricky.
192 |
193 | So if you want to boot from USB, insert your USB stick in your Mac, then power
194 | it on and **hold the Command + Option + O + F** combination. On standard
195 | non-Apple keyboards, this is **Win + Alt + O + F**.
196 | **Keep holding the combination until your display comes up.**
197 |
198 | ```
199 | Release keys to continue!
200 | ```
201 |
202 | This should be written on the screen, so release the combination. You will
203 | get a prompt:
204 |
205 | ```
206 | ok
207 | 0 >
208 | ```
209 |
210 | ### G5 machines
211 |
212 | The good news is, the G5s define the `ud` device alias, which matches the USB
213 | storage media you have inserted, at least as long as only one USB stick is
214 | inserted.
215 |
216 | You can simply boot your Void like this:
217 |
218 | ```
219 | boot ud:,\\:tbxi
220 | ```
221 |
222 | For multiple USB media, it should be possible to use numbered `ud:N`. You can
223 | list all the defined aliases with the `devalias` command.
224 |
225 | If this doesn't work, you can try to boot the GRUB image directly.
226 |
227 | ```
228 | boot ud:,\boot\grub.img
229 | ```
230 |
231 | A GRUB menu should come up.
232 |
233 | ### G4/G3 or if it doesn't work
234 |
235 | This is slightly trickier. Since the alias is not defined, we must create it.
236 | First, list the whole device tree:
237 |
238 | ```
239 | 0 > dev / ls
240 | ```
241 |
242 | This will present you with a long listing, most likely also telling you to press
243 | Space for more, as the whole listing does not fit on the screen.
244 |
245 | A simplified listing on my PowerBook G4 looks like this:
246 |
247 | ```
248 | ...
249 | ffXXXXXX: ...
250 | ffXXXXXX: ...
251 | ffXXXXXX: /pci@f2000000
252 | ffXXXXXX: /...
253 | ffXXXXXX: /...
254 | ffXXXXXX: /...
255 | ffXXXXXX: /usb@1a
256 | ffXXXXXX: /device@1
257 | ffXXXXXX: /keyboard@0
258 | ffXXXXXX: /mouse@1
259 | ffXXXXXX: /device@2
260 | ffXXXXXX: /keyboard@0
261 | ffXXXXXX: /mouse@1
262 | ffXXXXXX: /interface@2
263 | ffXXXXXX: /usb@1b
264 | ffXXXXXX: /disk@1
265 | ffXXXXXX: /...
266 | ffXXXXXX: /...
267 | ...
268 | ```
269 |
270 | And so on. This basically represents the tree of all the devices attached in
271 | your system. We are looking for USB, and within that, we are looking for a USB disk.
272 |
273 | In this case, you can see it under `/usb@1b` as `/disk@1`. Depending on the
274 | hardware as the USB port you use, this may look different.
275 |
276 | Anyway, we've found the USB disk. Let's alias it as `ud`.
277 |
278 | ```
279 | 0 > devalias ud /pci@f2000000/usb@1b/disk@1
280 | ```
281 |
282 | This should print `ok`. Obviously adjust the values for your own device tree,
283 | you just need to join it all together.
284 |
285 | Print the alias listing again:
286 |
287 | ```
288 | 0 > devalias
289 | ...
290 | ...
291 | ud /pci@f2000000/usb@1b/disk@1
292 | ```
293 |
294 | Now that you can see it's there, proceed with booting:
295 |
296 | ```
297 | boot ud:,\\:tbxi
298 | ```
299 |
300 | If that doesn't work, try loading the GRUB image directly:
301 |
302 | ```
303 | boot ud:,\boot\grub.img
304 | ```
305 |
306 | A GRUB menu should come up.
307 |
308 | ### Post-GRUB
309 |
310 | Once you have selected your option in the bootloader, loading Linux will
311 | commence. You might see some messages like:
312 |
313 | ```
314 | error: can't open device
315 | Press any key to continue...
316 | ```
317 |
318 | You don't need to press anything and these errors are harmless. Just wait (it
319 | might take a minute or a few) and eventually Linux should load.
320 |
321 | Proceed with installation and so on.
322 |
323 | ### Yaboot
324 |
325 | If GRUB for some reason won't work and there are no available workarounds,
326 | we also ship `yaboot` as a fallback. You can boot it from the OpenFirmware
327 | console as well. Just replace this:
328 |
329 | ```
330 | boot ud:,\\:tbxi
331 | ```
332 |
333 | with:
334 |
335 | ```
336 | boot ud:,\boot\yaboot conf=ud:,\etc\yaboot.conf
337 | ```
338 |
339 | The `conf` argument may not always be necessary but generally is, as it will
340 | otherwise often try to use incorrect media to look for the config file.
341 |
342 | ## Other OpenFirmware machines
343 |
344 | These are not tested but should still work, as long as the CPU is good enough
345 | to run your variant. The instructions will likely overlap with those for SLOF
346 | or for Macs. Feel free to submit modifications for this chapter.
347 |
348 | ## Serial console
349 |
350 | By default, the system will boot assuming output on your monitor. If you don't
351 | have a monitor, or for some other reason need to access the system via the
352 | serial port, you need to enable it.
353 |
354 | Just proceed booting as usual, and once at the `GRUB` screen, edit the menu
355 | item you want to boot and append something like this:
356 |
357 | ```
358 | console=tty0 console=hvc0
359 | ```
360 |
361 | This applies for machines such as the Talos 2, Blackbird or `qemu` `pSeries`
362 | virtual machines. There is a special initramfs hook which makes sure to enable
363 | the appropriate `agetty` service for the console. The supported values are
364 | `ttyS0`, `hvc0` and `hvsi0`. If you don't need output on your monitor at all,
365 | you can skip specifying `console=tty0`. But keep in mind that for the hook to
366 | work, the `console` for the serial needs to be last! Otherwise the hook will
367 | not pick it up.
368 |
369 | ## Other hardware
370 |
371 | That's completely untested, so if you manage to get something to boot,
372 | instructions to include here would be much appreciated.
373 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Attribution-ShareAlike 4.0 International
2 |
3 | =======================================================================
4 |
5 | Creative Commons Corporation ("Creative Commons") is not a law firm and
6 | does not provide legal services or legal advice. Distribution of
7 | Creative Commons public licenses does not create a lawyer-client or
8 | other relationship. Creative Commons makes its licenses and related
9 | information available on an "as-is" basis. Creative Commons gives no
10 | warranties regarding its licenses, any material licensed under their
11 | terms and conditions, or any related information. Creative Commons
12 | disclaims all liability for damages resulting from their use to the
13 | fullest extent possible.
14 |
15 | Using Creative Commons Public Licenses
16 |
17 | Creative Commons public licenses provide a standard set of terms and
18 | conditions that creators and other rights holders may use to share
19 | original works of authorship and other material subject to copyright
20 | and certain other rights specified in the public license below. The
21 | following considerations are for informational purposes only, are not
22 | exhaustive, and do not form part of our licenses.
23 |
24 | Considerations for licensors: Our public licenses are
25 | intended for use by those authorized to give the public
26 | permission to use material in ways otherwise restricted by
27 | copyright and certain other rights. Our licenses are
28 | irrevocable. Licensors should read and understand the terms
29 | and conditions of the license they choose before applying it.
30 | Licensors should also secure all rights necessary before
31 | applying our licenses so that the public can reuse the
32 | material as expected. Licensors should clearly mark any
33 | material not subject to the license. This includes other CC-
34 | licensed material, or material used under an exception or
35 | limitation to copyright. More considerations for licensors:
36 | wiki.creativecommons.org/Considerations_for_licensors
37 |
38 | Considerations for the public: By using one of our public
39 | licenses, a licensor grants the public permission to use the
40 | licensed material under specified terms and conditions. If
41 | the licensor's permission is not necessary for any reason--for
42 | example, because of any applicable exception or limitation to
43 | copyright--then that use is not regulated by the license. Our
44 | licenses grant only permissions under copyright and certain
45 | other rights that a licensor has authority to grant. Use of
46 | the licensed material may still be restricted for other
47 | reasons, including because others have copyright or other
48 | rights in the material. A licensor may make special requests,
49 | such as asking that all changes be marked or described.
50 | Although not required by our licenses, you are encouraged to
51 | respect those requests where reasonable. More considerations
52 | for the public:
53 | wiki.creativecommons.org/Considerations_for_licensees
54 |
55 | =======================================================================
56 |
57 | Creative Commons Attribution-ShareAlike 4.0 International Public
58 | License
59 |
60 | By exercising the Licensed Rights (defined below), You accept and agree
61 | to be bound by the terms and conditions of this Creative Commons
62 | Attribution-ShareAlike 4.0 International Public License ("Public
63 | License"). To the extent this Public License may be interpreted as a
64 | contract, You are granted the Licensed Rights in consideration of Your
65 | acceptance of these terms and conditions, and the Licensor grants You
66 | such rights in consideration of benefits the Licensor receives from
67 | making the Licensed Material available under these terms and
68 | conditions.
69 |
70 |
71 | Section 1 -- Definitions.
72 |
73 | a. Adapted Material means material subject to Copyright and Similar
74 | Rights that is derived from or based upon the Licensed Material
75 | and in which the Licensed Material is translated, altered,
76 | arranged, transformed, or otherwise modified in a manner requiring
77 | permission under the Copyright and Similar Rights held by the
78 | Licensor. For purposes of this Public License, where the Licensed
79 | Material is a musical work, performance, or sound recording,
80 | Adapted Material is always produced where the Licensed Material is
81 | synched in timed relation with a moving image.
82 |
83 | b. Adapter's License means the license You apply to Your Copyright
84 | and Similar Rights in Your contributions to Adapted Material in
85 | accordance with the terms and conditions of this Public License.
86 |
87 | c. BY-SA Compatible License means a license listed at
88 | creativecommons.org/compatiblelicenses, approved by Creative
89 | Commons as essentially the equivalent of this Public License.
90 |
91 | d. Copyright and Similar Rights means copyright and/or similar rights
92 | closely related to copyright including, without limitation,
93 | performance, broadcast, sound recording, and Sui Generis Database
94 | Rights, without regard to how the rights are labeled or
95 | categorized. For purposes of this Public License, the rights
96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar
97 | Rights.
98 |
99 | e. Effective Technological Measures means those measures that, in the
100 | absence of proper authority, may not be circumvented under laws
101 | fulfilling obligations under Article 11 of the WIPO Copyright
102 | Treaty adopted on December 20, 1996, and/or similar international
103 | agreements.
104 |
105 | f. Exceptions and Limitations means fair use, fair dealing, and/or
106 | any other exception or limitation to Copyright and Similar Rights
107 | that applies to Your use of the Licensed Material.
108 |
109 | g. License Elements means the license attributes listed in the name
110 | of a Creative Commons Public License. The License Elements of this
111 | Public License are Attribution and ShareAlike.
112 |
113 | h. Licensed Material means the artistic or literary work, database,
114 | or other material to which the Licensor applied this Public
115 | License.
116 |
117 | i. Licensed Rights means the rights granted to You subject to the
118 | terms and conditions of this Public License, which are limited to
119 | all Copyright and Similar Rights that apply to Your use of the
120 | Licensed Material and that the Licensor has authority to license.
121 |
122 | j. Licensor means the individual(s) or entity(ies) granting rights
123 | under this Public License.
124 |
125 | k. Share means to provide material to the public by any means or
126 | process that requires permission under the Licensed Rights, such
127 | as reproduction, public display, public performance, distribution,
128 | dissemination, communication, or importation, and to make material
129 | available to the public including in ways that members of the
130 | public may access the material from a place and at a time
131 | individually chosen by them.
132 |
133 | l. Sui Generis Database Rights means rights other than copyright
134 | resulting from Directive 96/9/EC of the European Parliament and of
135 | the Council of 11 March 1996 on the legal protection of databases,
136 | as amended and/or succeeded, as well as other essentially
137 | equivalent rights anywhere in the world.
138 |
139 | m. You means the individual or entity exercising the Licensed Rights
140 | under this Public License. Your has a corresponding meaning.
141 |
142 |
143 | Section 2 -- Scope.
144 |
145 | a. License grant.
146 |
147 | 1. Subject to the terms and conditions of this Public License,
148 | the Licensor hereby grants You a worldwide, royalty-free,
149 | non-sublicensable, non-exclusive, irrevocable license to
150 | exercise the Licensed Rights in the Licensed Material to:
151 |
152 | a. reproduce and Share the Licensed Material, in whole or
153 | in part; and
154 |
155 | b. produce, reproduce, and Share Adapted Material.
156 |
157 | 2. Exceptions and Limitations. For the avoidance of doubt, where
158 | Exceptions and Limitations apply to Your use, this Public
159 | License does not apply, and You do not need to comply with
160 | its terms and conditions.
161 |
162 | 3. Term. The term of this Public License is specified in Section
163 | 6(a).
164 |
165 | 4. Media and formats; technical modifications allowed. The
166 | Licensor authorizes You to exercise the Licensed Rights in
167 | all media and formats whether now known or hereafter created,
168 | and to make technical modifications necessary to do so. The
169 | Licensor waives and/or agrees not to assert any right or
170 | authority to forbid You from making technical modifications
171 | necessary to exercise the Licensed Rights, including
172 | technical modifications necessary to circumvent Effective
173 | Technological Measures. For purposes of this Public License,
174 | simply making modifications authorized by this Section 2(a)
175 | (4) never produces Adapted Material.
176 |
177 | 5. Downstream recipients.
178 |
179 | a. Offer from the Licensor -- Licensed Material. Every
180 | recipient of the Licensed Material automatically
181 | receives an offer from the Licensor to exercise the
182 | Licensed Rights under the terms and conditions of this
183 | Public License.
184 |
185 | b. Additional offer from the Licensor -- Adapted Material.
186 | Every recipient of Adapted Material from You
187 | automatically receives an offer from the Licensor to
188 | exercise the Licensed Rights in the Adapted Material
189 | under the conditions of the Adapter's License You apply.
190 |
191 | c. No downstream restrictions. You may not offer or impose
192 | any additional or different terms or conditions on, or
193 | apply any Effective Technological Measures to, the
194 | Licensed Material if doing so restricts exercise of the
195 | Licensed Rights by any recipient of the Licensed
196 | Material.
197 |
198 | 6. No endorsement. Nothing in this Public License constitutes or
199 | may be construed as permission to assert or imply that You
200 | are, or that Your use of the Licensed Material is, connected
201 | with, or sponsored, endorsed, or granted official status by,
202 | the Licensor or others designated to receive attribution as
203 | provided in Section 3(a)(1)(A)(i).
204 |
205 | b. Other rights.
206 |
207 | 1. Moral rights, such as the right of integrity, are not
208 | licensed under this Public License, nor are publicity,
209 | privacy, and/or other similar personality rights; however, to
210 | the extent possible, the Licensor waives and/or agrees not to
211 | assert any such rights held by the Licensor to the limited
212 | extent necessary to allow You to exercise the Licensed
213 | Rights, but not otherwise.
214 |
215 | 2. Patent and trademark rights are not licensed under this
216 | Public License.
217 |
218 | 3. To the extent possible, the Licensor waives any right to
219 | collect royalties from You for the exercise of the Licensed
220 | Rights, whether directly or through a collecting society
221 | under any voluntary or waivable statutory or compulsory
222 | licensing scheme. In all other cases the Licensor expressly
223 | reserves any right to collect such royalties.
224 |
225 |
226 | Section 3 -- License Conditions.
227 |
228 | Your exercise of the Licensed Rights is expressly made subject to the
229 | following conditions.
230 |
231 | a. Attribution.
232 |
233 | 1. If You Share the Licensed Material (including in modified
234 | form), You must:
235 |
236 | a. retain the following if it is supplied by the Licensor
237 | with the Licensed Material:
238 |
239 | i. identification of the creator(s) of the Licensed
240 | Material and any others designated to receive
241 | attribution, in any reasonable manner requested by
242 | the Licensor (including by pseudonym if
243 | designated);
244 |
245 | ii. a copyright notice;
246 |
247 | iii. a notice that refers to this Public License;
248 |
249 | iv. a notice that refers to the disclaimer of
250 | warranties;
251 |
252 | v. a URI or hyperlink to the Licensed Material to the
253 | extent reasonably practicable;
254 |
255 | b. indicate if You modified the Licensed Material and
256 | retain an indication of any previous modifications; and
257 |
258 | c. indicate the Licensed Material is licensed under this
259 | Public License, and include the text of, or the URI or
260 | hyperlink to, this Public License.
261 |
262 | 2. You may satisfy the conditions in Section 3(a)(1) in any
263 | reasonable manner based on the medium, means, and context in
264 | which You Share the Licensed Material. For example, it may be
265 | reasonable to satisfy the conditions by providing a URI or
266 | hyperlink to a resource that includes the required
267 | information.
268 |
269 | 3. If requested by the Licensor, You must remove any of the
270 | information required by Section 3(a)(1)(A) to the extent
271 | reasonably practicable.
272 |
273 | b. ShareAlike.
274 |
275 | In addition to the conditions in Section 3(a), if You Share
276 | Adapted Material You produce, the following conditions also apply.
277 |
278 | 1. The Adapter's License You apply must be a Creative Commons
279 | license with the same License Elements, this version or
280 | later, or a BY-SA Compatible License.
281 |
282 | 2. You must include the text of, or the URI or hyperlink to, the
283 | Adapter's License You apply. You may satisfy this condition
284 | in any reasonable manner based on the medium, means, and
285 | context in which You Share Adapted Material.
286 |
287 | 3. You may not offer or impose any additional or different terms
288 | or conditions on, or apply any Effective Technological
289 | Measures to, Adapted Material that restrict exercise of the
290 | rights granted under the Adapter's License You apply.
291 |
292 |
293 | Section 4 -- Sui Generis Database Rights.
294 |
295 | Where the Licensed Rights include Sui Generis Database Rights that
296 | apply to Your use of the Licensed Material:
297 |
298 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right
299 | to extract, reuse, reproduce, and Share all or a substantial
300 | portion of the contents of the database;
301 |
302 | b. if You include all or a substantial portion of the database
303 | contents in a database in which You have Sui Generis Database
304 | Rights, then the database in which You have Sui Generis Database
305 | Rights (but not its individual contents) is Adapted Material,
306 |
307 | including for purposes of Section 3(b); and
308 | c. You must comply with the conditions in Section 3(a) if You Share
309 | all or a substantial portion of the contents of the database.
310 |
311 | For the avoidance of doubt, this Section 4 supplements and does not
312 | replace Your obligations under this Public License where the Licensed
313 | Rights include other Copyright and Similar Rights.
314 |
315 |
316 | Section 5 -- Disclaimer of Warranties and Limitation of Liability.
317 |
318 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
319 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
320 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
321 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
322 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
323 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
324 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
325 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
326 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
327 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
328 |
329 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
330 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
331 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
332 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
333 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
334 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
335 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
336 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
337 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
338 |
339 | c. The disclaimer of warranties and limitation of liability provided
340 | above shall be interpreted in a manner that, to the extent
341 | possible, most closely approximates an absolute disclaimer and
342 | waiver of all liability.
343 |
344 |
345 | Section 6 -- Term and Termination.
346 |
347 | a. This Public License applies for the term of the Copyright and
348 | Similar Rights licensed here. However, if You fail to comply with
349 | this Public License, then Your rights under this Public License
350 | terminate automatically.
351 |
352 | b. Where Your right to use the Licensed Material has terminated under
353 | Section 6(a), it reinstates:
354 |
355 | 1. automatically as of the date the violation is cured, provided
356 | it is cured within 30 days of Your discovery of the
357 | violation; or
358 |
359 | 2. upon express reinstatement by the Licensor.
360 |
361 | For the avoidance of doubt, this Section 6(b) does not affect any
362 | right the Licensor may have to seek remedies for Your violations
363 | of this Public License.
364 |
365 | c. For the avoidance of doubt, the Licensor may also offer the
366 | Licensed Material under separate terms or conditions or stop
367 | distributing the Licensed Material at any time; however, doing so
368 | will not terminate this Public License.
369 |
370 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
371 | License.
372 |
373 |
374 | Section 7 -- Other Terms and Conditions.
375 |
376 | a. The Licensor shall not be bound by any additional or different
377 | terms or conditions communicated by You unless expressly agreed.
378 |
379 | b. Any arrangements, understandings, or agreements regarding the
380 | Licensed Material not stated herein are separate from and
381 | independent of the terms and conditions of this Public License.
382 |
383 |
384 | Section 8 -- Interpretation.
385 |
386 | a. For the avoidance of doubt, this Public License does not, and
387 | shall not be interpreted to, reduce, limit, restrict, or impose
388 | conditions on any use of the Licensed Material that could lawfully
389 | be made without permission under this Public License.
390 |
391 | b. To the extent possible, if any provision of this Public License is
392 | deemed unenforceable, it shall be automatically reformed to the
393 | minimum extent necessary to make it enforceable. If the provision
394 | cannot be reformed, it shall be severed from this Public License
395 | without affecting the enforceability of the remaining terms and
396 | conditions.
397 |
398 | c. No term or condition of this Public License will be waived and no
399 | failure to comply consented to unless expressly agreed to by the
400 | Licensor.
401 |
402 | d. Nothing in this Public License constitutes or may be interpreted
403 | as a limitation upon, or waiver of, any privileges and immunities
404 | that apply to the Licensor or You, including from the legal
405 | processes of any jurisdiction or authority.
406 |
407 |
408 | =======================================================================
409 |
410 | Creative Commons is not a party to its public
411 | licenses. Notwithstanding, Creative Commons may elect to apply one of
412 | its public licenses to material it publishes and in those instances
413 | will be considered the “Licensor.” The text of the Creative Commons
414 | public licenses is dedicated to the public domain under the CC0 Public
415 | Domain Dedication. Except for the limited purpose of indicating that
416 | material is shared under a Creative Commons public license or as
417 | otherwise permitted by the Creative Commons policies published at
418 | creativecommons.org/policies, Creative Commons does not authorize the
419 | use of the trademark "Creative Commons" or any other trademark or logo
420 | of Creative Commons without its prior written consent including,
421 | without limitation, in connection with any unauthorized modifications
422 | to any of its public licenses or any other arrangements,
423 | understandings, or agreements concerning use of licensed material. For
424 | the avoidance of doubt, this paragraph does not form part of the
425 | public licenses.
426 |
427 | Creative Commons may be contacted at creativecommons.org.
428 |
--------------------------------------------------------------------------------
/COPYING.md:
--------------------------------------------------------------------------------
1 | Attribution-ShareAlike 4.0 International
2 |
3 | =======================================================================
4 |
5 | Creative Commons Corporation ("Creative Commons") is not a law firm and
6 | does not provide legal services or legal advice. Distribution of
7 | Creative Commons public licenses does not create a lawyer-client or
8 | other relationship. Creative Commons makes its licenses and related
9 | information available on an "as-is" basis. Creative Commons gives no
10 | warranties regarding its licenses, any material licensed under their
11 | terms and conditions, or any related information. Creative Commons
12 | disclaims all liability for damages resulting from their use to the
13 | fullest extent possible.
14 |
15 | Using Creative Commons Public Licenses
16 |
17 | Creative Commons public licenses provide a standard set of terms and
18 | conditions that creators and other rights holders may use to share
19 | original works of authorship and other material subject to copyright
20 | and certain other rights specified in the public license below. The
21 | following considerations are for informational purposes only, are not
22 | exhaustive, and do not form part of our licenses.
23 |
24 | Considerations for licensors: Our public licenses are
25 | intended for use by those authorized to give the public
26 | permission to use material in ways otherwise restricted by
27 | copyright and certain other rights. Our licenses are
28 | irrevocable. Licensors should read and understand the terms
29 | and conditions of the license they choose before applying it.
30 | Licensors should also secure all rights necessary before
31 | applying our licenses so that the public can reuse the
32 | material as expected. Licensors should clearly mark any
33 | material not subject to the license. This includes other CC-
34 | licensed material, or material used under an exception or
35 | limitation to copyright. More considerations for licensors:
36 | wiki.creativecommons.org/Considerations_for_licensors
37 |
38 | Considerations for the public: By using one of our public
39 | licenses, a licensor grants the public permission to use the
40 | licensed material under specified terms and conditions. If
41 | the licensor's permission is not necessary for any reason--for
42 | example, because of any applicable exception or limitation to
43 | copyright--then that use is not regulated by the license. Our
44 | licenses grant only permissions under copyright and certain
45 | other rights that a licensor has authority to grant. Use of
46 | the licensed material may still be restricted for other
47 | reasons, including because others have copyright or other
48 | rights in the material. A licensor may make special requests,
49 | such as asking that all changes be marked or described.
50 | Although not required by our licenses, you are encouraged to
51 | respect those requests where reasonable. More considerations
52 | for the public:
53 | wiki.creativecommons.org/Considerations_for_licensees
54 |
55 | =======================================================================
56 |
57 | Creative Commons Attribution-ShareAlike 4.0 International Public
58 | License
59 |
60 | By exercising the Licensed Rights (defined below), You accept and agree
61 | to be bound by the terms and conditions of this Creative Commons
62 | Attribution-ShareAlike 4.0 International Public License ("Public
63 | License"). To the extent this Public License may be interpreted as a
64 | contract, You are granted the Licensed Rights in consideration of Your
65 | acceptance of these terms and conditions, and the Licensor grants You
66 | such rights in consideration of benefits the Licensor receives from
67 | making the Licensed Material available under these terms and
68 | conditions.
69 |
70 |
71 | Section 1 -- Definitions.
72 |
73 | a. Adapted Material means material subject to Copyright and Similar
74 | Rights that is derived from or based upon the Licensed Material
75 | and in which the Licensed Material is translated, altered,
76 | arranged, transformed, or otherwise modified in a manner requiring
77 | permission under the Copyright and Similar Rights held by the
78 | Licensor. For purposes of this Public License, where the Licensed
79 | Material is a musical work, performance, or sound recording,
80 | Adapted Material is always produced where the Licensed Material is
81 | synched in timed relation with a moving image.
82 |
83 | b. Adapter's License means the license You apply to Your Copyright
84 | and Similar Rights in Your contributions to Adapted Material in
85 | accordance with the terms and conditions of this Public License.
86 |
87 | c. BY-SA Compatible License means a license listed at
88 | creativecommons.org/compatiblelicenses, approved by Creative
89 | Commons as essentially the equivalent of this Public License.
90 |
91 | d. Copyright and Similar Rights means copyright and/or similar rights
92 | closely related to copyright including, without limitation,
93 | performance, broadcast, sound recording, and Sui Generis Database
94 | Rights, without regard to how the rights are labeled or
95 | categorized. For purposes of this Public License, the rights
96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar
97 | Rights.
98 |
99 | e. Effective Technological Measures means those measures that, in the
100 | absence of proper authority, may not be circumvented under laws
101 | fulfilling obligations under Article 11 of the WIPO Copyright
102 | Treaty adopted on December 20, 1996, and/or similar international
103 | agreements.
104 |
105 | f. Exceptions and Limitations means fair use, fair dealing, and/or
106 | any other exception or limitation to Copyright and Similar Rights
107 | that applies to Your use of the Licensed Material.
108 |
109 | g. License Elements means the license attributes listed in the name
110 | of a Creative Commons Public License. The License Elements of this
111 | Public License are Attribution and ShareAlike.
112 |
113 | h. Licensed Material means the artistic or literary work, database,
114 | or other material to which the Licensor applied this Public
115 | License.
116 |
117 | i. Licensed Rights means the rights granted to You subject to the
118 | terms and conditions of this Public License, which are limited to
119 | all Copyright and Similar Rights that apply to Your use of the
120 | Licensed Material and that the Licensor has authority to license.
121 |
122 | j. Licensor means the individual(s) or entity(ies) granting rights
123 | under this Public License.
124 |
125 | k. Share means to provide material to the public by any means or
126 | process that requires permission under the Licensed Rights, such
127 | as reproduction, public display, public performance, distribution,
128 | dissemination, communication, or importation, and to make material
129 | available to the public including in ways that members of the
130 | public may access the material from a place and at a time
131 | individually chosen by them.
132 |
133 | l. Sui Generis Database Rights means rights other than copyright
134 | resulting from Directive 96/9/EC of the European Parliament and of
135 | the Council of 11 March 1996 on the legal protection of databases,
136 | as amended and/or succeeded, as well as other essentially
137 | equivalent rights anywhere in the world.
138 |
139 | m. You means the individual or entity exercising the Licensed Rights
140 | under this Public License. Your has a corresponding meaning.
141 |
142 |
143 | Section 2 -- Scope.
144 |
145 | a. License grant.
146 |
147 | 1. Subject to the terms and conditions of this Public License,
148 | the Licensor hereby grants You a worldwide, royalty-free,
149 | non-sublicensable, non-exclusive, irrevocable license to
150 | exercise the Licensed Rights in the Licensed Material to:
151 |
152 | a. reproduce and Share the Licensed Material, in whole or
153 | in part; and
154 |
155 | b. produce, reproduce, and Share Adapted Material.
156 |
157 | 2. Exceptions and Limitations. For the avoidance of doubt, where
158 | Exceptions and Limitations apply to Your use, this Public
159 | License does not apply, and You do not need to comply with
160 | its terms and conditions.
161 |
162 | 3. Term. The term of this Public License is specified in Section
163 | 6(a).
164 |
165 | 4. Media and formats; technical modifications allowed. The
166 | Licensor authorizes You to exercise the Licensed Rights in
167 | all media and formats whether now known or hereafter created,
168 | and to make technical modifications necessary to do so. The
169 | Licensor waives and/or agrees not to assert any right or
170 | authority to forbid You from making technical modifications
171 | necessary to exercise the Licensed Rights, including
172 | technical modifications necessary to circumvent Effective
173 | Technological Measures. For purposes of this Public License,
174 | simply making modifications authorized by this Section 2(a)
175 | (4) never produces Adapted Material.
176 |
177 | 5. Downstream recipients.
178 |
179 | a. Offer from the Licensor -- Licensed Material. Every
180 | recipient of the Licensed Material automatically
181 | receives an offer from the Licensor to exercise the
182 | Licensed Rights under the terms and conditions of this
183 | Public License.
184 |
185 | b. Additional offer from the Licensor -- Adapted Material.
186 | Every recipient of Adapted Material from You
187 | automatically receives an offer from the Licensor to
188 | exercise the Licensed Rights in the Adapted Material
189 | under the conditions of the Adapter's License You apply.
190 |
191 | c. No downstream restrictions. You may not offer or impose
192 | any additional or different terms or conditions on, or
193 | apply any Effective Technological Measures to, the
194 | Licensed Material if doing so restricts exercise of the
195 | Licensed Rights by any recipient of the Licensed
196 | Material.
197 |
198 | 6. No endorsement. Nothing in this Public License constitutes or
199 | may be construed as permission to assert or imply that You
200 | are, or that Your use of the Licensed Material is, connected
201 | with, or sponsored, endorsed, or granted official status by,
202 | the Licensor or others designated to receive attribution as
203 | provided in Section 3(a)(1)(A)(i).
204 |
205 | b. Other rights.
206 |
207 | 1. Moral rights, such as the right of integrity, are not
208 | licensed under this Public License, nor are publicity,
209 | privacy, and/or other similar personality rights; however, to
210 | the extent possible, the Licensor waives and/or agrees not to
211 | assert any such rights held by the Licensor to the limited
212 | extent necessary to allow You to exercise the Licensed
213 | Rights, but not otherwise.
214 |
215 | 2. Patent and trademark rights are not licensed under this
216 | Public License.
217 |
218 | 3. To the extent possible, the Licensor waives any right to
219 | collect royalties from You for the exercise of the Licensed
220 | Rights, whether directly or through a collecting society
221 | under any voluntary or waivable statutory or compulsory
222 | licensing scheme. In all other cases the Licensor expressly
223 | reserves any right to collect such royalties.
224 |
225 |
226 | Section 3 -- License Conditions.
227 |
228 | Your exercise of the Licensed Rights is expressly made subject to the
229 | following conditions.
230 |
231 | a. Attribution.
232 |
233 | 1. If You Share the Licensed Material (including in modified
234 | form), You must:
235 |
236 | a. retain the following if it is supplied by the Licensor
237 | with the Licensed Material:
238 |
239 | i. identification of the creator(s) of the Licensed
240 | Material and any others designated to receive
241 | attribution, in any reasonable manner requested by
242 | the Licensor (including by pseudonym if
243 | designated);
244 |
245 | ii. a copyright notice;
246 |
247 | iii. a notice that refers to this Public License;
248 |
249 | iv. a notice that refers to the disclaimer of
250 | warranties;
251 |
252 | v. a URI or hyperlink to the Licensed Material to the
253 | extent reasonably practicable;
254 |
255 | b. indicate if You modified the Licensed Material and
256 | retain an indication of any previous modifications; and
257 |
258 | c. indicate the Licensed Material is licensed under this
259 | Public License, and include the text of, or the URI or
260 | hyperlink to, this Public License.
261 |
262 | 2. You may satisfy the conditions in Section 3(a)(1) in any
263 | reasonable manner based on the medium, means, and context in
264 | which You Share the Licensed Material. For example, it may be
265 | reasonable to satisfy the conditions by providing a URI or
266 | hyperlink to a resource that includes the required
267 | information.
268 |
269 | 3. If requested by the Licensor, You must remove any of the
270 | information required by Section 3(a)(1)(A) to the extent
271 | reasonably practicable.
272 |
273 | b. ShareAlike.
274 |
275 | In addition to the conditions in Section 3(a), if You Share
276 | Adapted Material You produce, the following conditions also apply.
277 |
278 | 1. The Adapter's License You apply must be a Creative Commons
279 | license with the same License Elements, this version or
280 | later, or a BY-SA Compatible License.
281 |
282 | 2. You must include the text of, or the URI or hyperlink to, the
283 | Adapter's License You apply. You may satisfy this condition
284 | in any reasonable manner based on the medium, means, and
285 | context in which You Share Adapted Material.
286 |
287 | 3. You may not offer or impose any additional or different terms
288 | or conditions on, or apply any Effective Technological
289 | Measures to, Adapted Material that restrict exercise of the
290 | rights granted under the Adapter's License You apply.
291 |
292 |
293 | Section 4 -- Sui Generis Database Rights.
294 |
295 | Where the Licensed Rights include Sui Generis Database Rights that
296 | apply to Your use of the Licensed Material:
297 |
298 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right
299 | to extract, reuse, reproduce, and Share all or a substantial
300 | portion of the contents of the database;
301 |
302 | b. if You include all or a substantial portion of the database
303 | contents in a database in which You have Sui Generis Database
304 | Rights, then the database in which You have Sui Generis Database
305 | Rights (but not its individual contents) is Adapted Material,
306 |
307 | including for purposes of Section 3(b); and
308 | c. You must comply with the conditions in Section 3(a) if You Share
309 | all or a substantial portion of the contents of the database.
310 |
311 | For the avoidance of doubt, this Section 4 supplements and does not
312 | replace Your obligations under this Public License where the Licensed
313 | Rights include other Copyright and Similar Rights.
314 |
315 |
316 | Section 5 -- Disclaimer of Warranties and Limitation of Liability.
317 |
318 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
319 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
320 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
321 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
322 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
323 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
324 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
325 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
326 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
327 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
328 |
329 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
330 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
331 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
332 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
333 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
334 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
335 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
336 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
337 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
338 |
339 | c. The disclaimer of warranties and limitation of liability provided
340 | above shall be interpreted in a manner that, to the extent
341 | possible, most closely approximates an absolute disclaimer and
342 | waiver of all liability.
343 |
344 |
345 | Section 6 -- Term and Termination.
346 |
347 | a. This Public License applies for the term of the Copyright and
348 | Similar Rights licensed here. However, if You fail to comply with
349 | this Public License, then Your rights under this Public License
350 | terminate automatically.
351 |
352 | b. Where Your right to use the Licensed Material has terminated under
353 | Section 6(a), it reinstates:
354 |
355 | 1. automatically as of the date the violation is cured, provided
356 | it is cured within 30 days of Your discovery of the
357 | violation; or
358 |
359 | 2. upon express reinstatement by the Licensor.
360 |
361 | For the avoidance of doubt, this Section 6(b) does not affect any
362 | right the Licensor may have to seek remedies for Your violations
363 | of this Public License.
364 |
365 | c. For the avoidance of doubt, the Licensor may also offer the
366 | Licensed Material under separate terms or conditions or stop
367 | distributing the Licensed Material at any time; however, doing so
368 | will not terminate this Public License.
369 |
370 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
371 | License.
372 |
373 |
374 | Section 7 -- Other Terms and Conditions.
375 |
376 | a. The Licensor shall not be bound by any additional or different
377 | terms or conditions communicated by You unless expressly agreed.
378 |
379 | b. Any arrangements, understandings, or agreements regarding the
380 | Licensed Material not stated herein are separate from and
381 | independent of the terms and conditions of this Public License.
382 |
383 |
384 | Section 8 -- Interpretation.
385 |
386 | a. For the avoidance of doubt, this Public License does not, and
387 | shall not be interpreted to, reduce, limit, restrict, or impose
388 | conditions on any use of the Licensed Material that could lawfully
389 | be made without permission under this Public License.
390 |
391 | b. To the extent possible, if any provision of this Public License is
392 | deemed unenforceable, it shall be automatically reformed to the
393 | minimum extent necessary to make it enforceable. If the provision
394 | cannot be reformed, it shall be severed from this Public License
395 | without affecting the enforceability of the remaining terms and
396 | conditions.
397 |
398 | c. No term or condition of this Public License will be waived and no
399 | failure to comply consented to unless expressly agreed to by the
400 | Licensor.
401 |
402 | d. Nothing in this Public License constitutes or may be interpreted
403 | as a limitation upon, or waiver of, any privileges and immunities
404 | that apply to the Licensor or You, including from the legal
405 | processes of any jurisdiction or authority.
406 |
407 |
408 | =======================================================================
409 |
410 | Creative Commons is not a party to its public
411 | licenses. Notwithstanding, Creative Commons may elect to apply one of
412 | its public licenses to material it publishes and in those instances
413 | will be considered the “Licensor.” The text of the Creative Commons
414 | public licenses is dedicated to the public domain under the CC0 Public
415 | Domain Dedication. Except for the limited purpose of indicating that
416 | material is shared under a Creative Commons public license or as
417 | otherwise permitted by the Creative Commons policies published at
418 | creativecommons.org/policies, Creative Commons does not authorize the
419 | use of the trademark "Creative Commons" or any other trademark or logo
420 | of Creative Commons without its prior written consent including,
421 | without limitation, in connection with any unauthorized modifications
422 | to any of its public licenses or any other arrangements,
423 | understandings, or agreements concerning use of licensed material. For
424 | the avoidance of doubt, this paragraph does not form part of the
425 | public licenses.
426 |
427 | Creative Commons may be contacted at creativecommons.org.
428 |
--------------------------------------------------------------------------------