├── .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 |
60 | 61 | 62 | 72 | 73 | 76 | 77 | 78 | 85 | 86 |
87 | {{#if search_enabled}} 88 | 98 | {{/if}} 99 | 100 |
101 | {{{ content }}} 102 |
103 | 104 | 117 |
118 |
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 | --------------------------------------------------------------------------------